Re: [OOPS] less /proc/net/igmp

From: YOSHIFUJI Hideaki / 吉藤英明
Date: Tue Aug 26 2003 - 11:56:02 EST


Hello.

In article <20030826.173226.114994096.yoshfuji@xxxxxxxxxxxxxx> (at Tue, 26 Aug 2003 17:32:26 +0900 (JST)), YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@xxxxxxxxxxxxxx> says:

> > I can confirm. I have it with 2.6.0-test4.
> >
> > Let me know what useful info I can provide. The oops is the same.
>
> Okay, everyone. I'll try to fix this.

Please try this patch.

Index: linux-2.6/net/ipv4/igmp.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv4/igmp.c,v
retrieving revision 1.33
diff -u -r1.33 igmp.c
--- linux-2.6/net/ipv4/igmp.c 21 Aug 2003 17:47:23 -0000 1.33
+++ linux-2.6/net/ipv4/igmp.c 26 Aug 2003 15:18:03 -0000
@@ -2122,6 +2122,7 @@
break;
}
read_unlock(&in_dev->lock);
+ in_dev_put(in_dev);
}
return im;
}
@@ -2181,7 +2182,9 @@
if (likely(state->in_dev != NULL)) {
read_unlock(&state->in_dev->lock);
in_dev_put(state->in_dev);
+ state->in_dev = NULL;
}
+ state->dev = NULL;
read_unlock(&dev_base_lock);
}

@@ -2284,6 +2287,7 @@
spin_unlock_bh(&im->lock);
}
read_unlock_bh(&idev->lock);
+ in_dev_put(idev);
}
return psf;
}
@@ -2350,12 +2354,16 @@
static void igmp_mcf_seq_stop(struct seq_file *seq, void *v)
{
struct igmp_mcf_iter_state *state = igmp_mcf_seq_private(seq);
- if (likely(state->im != NULL))
+ if (likely(state->im != NULL)) {
spin_unlock_bh(&state->im->lock);
+ state->im = NULL;
+ }
if (likely(state->idev != NULL)) {
read_unlock_bh(&state->idev->lock);
in_dev_put(state->idev);
+ state->idev = NULL;
}
+ state->dev = NULL;
read_unlock(&dev_base_lock);
}

Index: linux-2.6/net/ipv6/mcast.c
===================================================================
RCS file: /home/cvs/linux-2.5/net/ipv6/mcast.c,v
retrieving revision 1.30
diff -u -r1.30 mcast.c
--- linux-2.6/net/ipv6/mcast.c 21 Aug 2003 23:44:54 -0000 1.30
+++ linux-2.6/net/ipv6/mcast.c 26 Aug 2003 15:18:03 -0000
@@ -2078,6 +2078,7 @@
break;
}
read_unlock_bh(&idev->lock);
+ in6_dev_put(idev);
}
return im;
}
@@ -2135,7 +2136,9 @@
if (likely(state->idev != NULL)) {
read_unlock_bh(&state->idev->lock);
in6_dev_put(state->idev);
+ state->idev = NULL;
}
+ state->dev = NULL;
read_unlock(&dev_base_lock);
}

@@ -2225,6 +2228,7 @@
spin_unlock_bh(&im->mca_lock);
}
read_unlock_bh(&idev->lock);
+ in6_dev_put(idev);
}
return psf;
}
@@ -2291,12 +2295,16 @@
static void igmp6_mcf_seq_stop(struct seq_file *seq, void *v)
{
struct igmp6_mcf_iter_state *state = igmp6_mcf_seq_private(seq);
- if (likely(state->im != NULL))
+ if (likely(state->im != NULL)) {
spin_unlock_bh(&state->im->mca_lock);
+ state->im = NULL;
+ }
if (likely(state->idev != NULL)) {
read_unlock_bh(&state->idev->lock);
in6_dev_put(state->idev);
+ state->idev = NULL;
}
+ state->dev = NULL;
read_unlock(&dev_base_lock);
}



--
Hideaki YOSHIFUJI @ USAGI Project <yoshfuji@xxxxxxxxxxxxxx>
GPG FP: 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/