[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20090806143959.GA29323@gondor.apana.org.au>
Date: Fri, 7 Aug 2009 00:39:59 +1000
From: Herbert Xu <herbert@...dor.apana.org.au>
To: "Eric W. Biederman" <ebiederm@...ssion.com>
Cc: Paul Moore <paul.moore@...com>, netdev@...r.kernel.org,
David Miller <davem@...emloft.net>
Subject: Re: [RFC PATCH v1] tun: Cleanup error handling in tun_set_iff()
On Thu, Aug 06, 2009 at 07:27:13AM -0700, Eric W. Biederman wrote:
>
> Summarizing:
>
> tun = __tun_get(tfile);
> if (!tun) { // No tun we are not attached.
> < -------------------- race opportunity
> rtnl_lock();
> tun_set_iff();
> rtnl_unlock();
> }
> ...
>
> We don't test if we are attached under the rtnl
> until we get to tun_attach();
>
> So two threads can both do:
>
> tun = __tun_get(tfile);
> if (!tun) {
> rtnl_lock();
> tun_set_iff();
> dev = __dev_get_by_name(net, "not_an_interface_name");
> if (!dev) {
> dev = alloc_netdev(....);
> ...;
> register_netdev(dev);
> ...;
> err = tun_attach(..);
> }
>
>
> Only one thread is in tun_set_iff() at a time, but the other thread
> could have attached the file to a device before the one in tun_attach().
Right, I see what you mean. However I don't think this is possible
because the ioctl runs under the big kernel lock.
Cheers,
--
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmV>HI~} <herbert@...dor.apana.org.au>
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 netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists