LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@tv-sign.ru> To: Stephen Hemminger <shemminger@linux-foundation.org> Cc: Andrew Morton <akpm@linux-foundation.org>, Jarek Poplawski <jarkao2@o2.pl>, "David S. Miller" <davem@davemloft.net>, David Howells <dhowells@redhat.com>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] net/bridge/br_if.c: fix possible use-after-free in port_carrier_check() Date: Wed, 21 Feb 2007 17:22:04 +0300 [thread overview] Message-ID: <20070221142204.GA134@tv-sign.ru> (raw) In-Reply-To: <20070220162434.72d3ad7b@freekitty> On 02/20, Stephen Hemminger wrote: > > On Wed, 21 Feb 2007 01:19:41 +0300 > Oleg Nesterov <oleg@tv-sign.ru> wrote: > > > static void release_nbp(struct kobject *kobj) > > { > > struct net_bridge_port *p > > = container_of(kobj, struct net_bridge_port, kobj); > > + > > + dev_put(p->dev); > > kfree(p); > > } > > > > @@ -127,12 +129,6 @@ static struct kobj_type brport_ktype = { > > > > static void destroy_nbp(struct net_bridge_port *p) > > { > > - struct net_device *dev = p->dev; > > - > > - p->br = NULL; > > - p->dev = NULL; > > - dev_put(dev); > > - > > kobject_put(&p->kobj); > > } > > Moving this around is problematic. > The ordering here was chosen to be RCU friendly so that > p->dev indicates the port is in process of being deleted but traffic > may still be using old reference, but new traffic should not use it. But it is still RCU friendly? destroy_nbp() is rcu-callback which calls release_nbp() if we have a last reference to ->kobj. This means that dev_put() may be done a bit later, but not earlier. And RCU can only garantee "not before", any rcu-callback could be delayed unpredictably. Stephen, I know nothing about net/, and > Probably the best thing to do is pull the whole delayed work queue > and auto port speed stuff. When STP is moved to user space then > it can do the ethtool op there. I can't understand any single word in the paragraph above :) But the bug (the stable tree has it too) is real. If this patch is really wrong, could you please take care of it? Oleg.
prev parent reply other threads:[~2007-02-21 14:22 UTC|newest] Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top 2007-02-20 22:19 [PATCH] net/bridge/br_if.c: fix possible use-after-free in port_carrier_check() Oleg Nesterov 2007-02-21 0:24 ` Stephen Hemminger 2007-02-21 8:23 ` Jarek Poplawski 2007-02-21 9:29 ` Jarek Poplawski 2007-02-21 14:23 ` Oleg Nesterov 2007-02-21 18:55 ` [RFT] bridge: eliminate port_check workqueue Stephen Hemminger 2007-02-21 20:09 ` Oleg Nesterov 2007-02-21 21:19 ` Stephen Hemminger 2007-02-21 21:58 ` Oleg Nesterov 2007-02-22 8:46 ` Jarek Poplawski 2007-02-21 14:22 ` Oleg Nesterov [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20070221142204.GA134@tv-sign.ru \ --to=oleg@tv-sign.ru \ --cc=akpm@linux-foundation.org \ --cc=davem@davemloft.net \ --cc=dhowells@redhat.com \ --cc=jarkao2@o2.pl \ --cc=linux-kernel@vger.kernel.org \ --cc=netdev@vger.kernel.org \ --cc=shemminger@linux-foundation.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).