Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1764355AbXLPDls (ORCPT ); Sat, 15 Dec 2007 22:41:48 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1757167AbXLPDlh (ORCPT ); Sat, 15 Dec 2007 22:41:37 -0500 Received: from rhun.apana.org.au ([64.62.148.172]:2607 "EHLO arnor.apana.org.au" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756002AbXLPDlg (ORCPT ); Sat, 15 Dec 2007 22:41:36 -0500 Date: Sun, 16 Dec 2007 11:41:20 +0800 From: Herbert Xu To: Mariusz Kozlowski Cc: akpm@linux-foundation.org, jgarzik@pobox.com, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, davem@davemloft.net, den@openvz.org, xemul@openvz.org Subject: [PACKET]: Fix /proc/net/packet crash due to bogus private pointer Message-ID: <20071216034119.GA1491@gondor.apana.org.au> References: <200712160118.58611.m.kozlowski@tuxland.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.9i Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1841 Lines: 53 On Sun, Dec 16, 2007 at 11:07:07AM +0800, Herbert Xu wrote: > > I suspect namespace borkage. But just because you pin-pointed > my patch I'll try to track it down :) Surprise surprise. The namespace seq patch missed two spots in AF_PACKET. [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. This patch fixes them. Signed-off-by: Herbert Xu diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 485af56..43e49f4 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) static void *packet_seq_next(struct seq_file *seq, void *v, loff_t *pos) { - struct net *net = seq->private; + struct net *net = seq_file_net(seq); ++*pos; return (v == SEQ_START_TOKEN) ? sk_head(&net->packet.sklist) @@ -1887,7 +1887,7 @@ static void *packet_seq_next(struct seq_file *seq, void *v, loff_t *pos) static void packet_seq_stop(struct seq_file *seq, void *v) { - struct net *net = seq->private; + struct net *net = seq_file_net(seq); read_unlock(&net->packet.sklist_lock); } Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/