aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2007-12-16 17:04:02 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:58:19 -0500
commit1bf40954cf232a043a49623cf251f787c1871e64 (patch)
tree86b6a26e04f102091e6df0d59c6ad85cd5e5ff5e /net
parent2d4d29802ff76de5af6123ef26c24ab512181223 (diff)
[PACKET]: Fix /proc/net/packet crash due to bogus private pointer
The seq_open_net patch changed the meaning of seq->private. Unfortunately it missed two spots in AF_PACKET, which still used the old way of dereferencing seq->private, thus causing weird and wonderful crashes when reading /proc/net/packet. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r--net/packet/af_packet.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 485af5691d64..43e49f46ad43 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -1878,7 +1878,7 @@ static void *packet_seq_start(struct seq_file *seq, loff_t *pos)
1878 1878
1879static void *packet_seq_next(struct seq_file *seq, void *v, loff_t *pos) 1879static void *packet_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1880{ 1880{
1881 struct net *net = seq->private; 1881 struct net *net = seq_file_net(seq);
1882 ++*pos; 1882 ++*pos;
1883 return (v == SEQ_START_TOKEN) 1883 return (v == SEQ_START_TOKEN)
1884 ? sk_head(&net->packet.sklist) 1884 ? sk_head(&net->packet.sklist)
@@ -1887,7 +1887,7 @@ static void *packet_seq_next(struct seq_file *seq, void *v, loff_t *pos)
1887 1887
1888static void packet_seq_stop(struct seq_file *seq, void *v) 1888static void packet_seq_stop(struct seq_file *seq, void *v)
1889{ 1889{
1890 struct net *net = seq->private; 1890 struct net *net = seq_file_net(seq);
1891 read_unlock(&net->packet.sklist_lock); 1891 read_unlock(&net->packet.sklist_lock);
1892} 1892}
1893 1893