From patchwork Sun Jan 10 09:06:44 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Slaby X-Patchwork-Id: 42569 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id D4888B7C1C for ; Sun, 10 Jan 2010 20:07:25 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752885Ab0AJJGy (ORCPT ); Sun, 10 Jan 2010 04:06:54 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752379Ab0AJJGx (ORCPT ); Sun, 10 Jan 2010 04:06:53 -0500 Received: from smtp.mujha-vel.cz ([81.30.225.246]:48298 "EHLO smtp.mujha-vel.cz" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752139Ab0AJJGt (ORCPT ); Sun, 10 Jan 2010 04:06:49 -0500 Received: from [217.66.174.142] (helo=localhost.localdomain) by smtp.mujha-vel.cz with esmtp (Exim 4.63) (envelope-from ) id 1NTtl2-00011G-0L; Sun, 10 Jan 2010 10:06:48 +0100 From: Jiri Slaby To: davem@davemloft.net Cc: linux-kernel@vger.kernel.org, jirislaby@gmail.com, Alexey Kuznetsov , "Pekka Savola (ipv6)" , James Morris , Hideaki YOSHIFUJI , Patrick McHardy , netdev@vger.kernel.org Subject: [PATCH 1/1] NET: ipv6, fix potential null dereference Date: Sun, 10 Jan 2010 10:06:44 +0100 Message-Id: <1263114404-9340-1-git-send-email-jslaby@suse.cz> X-Mailer: git-send-email 1.6.5.7 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Stanse found a potential null dereference in snmp6_unregister_dev. There is a check for idev being NULL, but it is dereferenced earlier. Move the dereference after the check. Signed-off-by: Jiri Slaby Cc: "David S. Miller" Cc: Alexey Kuznetsov Cc: "Pekka Savola (ipv6)" Cc: James Morris Cc: Hideaki YOSHIFUJI Cc: Patrick McHardy Cc: netdev@vger.kernel.org --- net/ipv6/proc.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/net/ipv6/proc.c b/net/ipv6/proc.c index c9605c3..53f4ef5 100644 --- a/net/ipv6/proc.c +++ b/net/ipv6/proc.c @@ -256,11 +256,12 @@ int snmp6_register_dev(struct inet6_dev *idev) int snmp6_unregister_dev(struct inet6_dev *idev) { - struct net *net = dev_net(idev->dev); - if (!net->mib.proc_net_devsnmp6) - return -ENOENT; + struct net *net; if (!idev || !idev->stats.proc_dir_entry) return -EINVAL; + net = dev_net(idev->dev); + if (!net->mib.proc_net_devsnmp6) + return -ENOENT; remove_proc_entry(idev->stats.proc_dir_entry->name, net->mib.proc_net_devsnmp6); idev->stats.proc_dir_entry = NULL;