Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933603AbbGGSei (ORCPT ); Tue, 7 Jul 2015 14:34:38 -0400 Received: from mail-pd0-f173.google.com ([209.85.192.173]:34718 "EHLO mail-pd0-f173.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932955AbbGGSe0 (ORCPT ); Tue, 7 Jul 2015 14:34:26 -0400 Date: Tue, 7 Jul 2015 11:34:34 -0700 From: Stephen Hemminger To: Julien Grall Cc: , , , , , , , , , , Bernhard Thaler , , , , Bob Liu Subject: Re: [PATCH v2] net/bridge: Use __in6_dev_get rather than in6_dev_get in br_validate_ipv6 Message-ID: <20150707113434.25f77b1e@urahara> In-Reply-To: <1436280921-2795-1-git-send-email-julien.grall@citrix.com> References: <1436280921-2795-1-git-send-email-julien.grall@citrix.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1754 Lines: 49 On Tue, 7 Jul 2015 15:55:21 +0100 Julien Grall wrote: > The commit efb6de9b4ba0092b2c55f6a52d16294a8a698edd "netfilter: bridge: > forward IPv6 fragmented packets" introduced a new function > br_validate_ipv6 which take a reference on the inet6 device. Although, > the reference is not released at the end. > > This will result to the impossibility to destroy any netdevice using > ipv6 and bridge. > > It's possible to directly retrieve the inet6 device without taking a > reference as all netfilter hooks are protected by rcu_read_lock via > nf_hook_slow. > > Spotted while trying to destroy a Xen guest on the upstream Linux: > "unregister_netdevice: waiting for vif1.0 to become free. Usage count = 1" > > Signed-off-by: Julien Grall > Cc: Bernhard Thaler > Cc: Pablo Neira Ayuso > Cc: fw@strlen.de > Cc: ian.campbell@citrix.com > Cc: wei.liu2@citrix.com > Cc: Bob Liu > > --- > Note that it's impossible to create new guest after this message. > I'm not sure if it's normal. > > Changes in v2: > - Don't take a reference to inet6. > - This was "net/bridge: Add missing in6_dev_put in > br_validate_ipv6" [0] > > [0] https://lkml.org/lkml/2015/7/3/443 > --- > net/bridge/br_netfilter_ipv6.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) I like this simple solution Acked-by: Stephen Hemminger -- 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/