OSDN Git Service

tun: Fix sk_sleep races when attaching/detaching
authorHerbert Xu <herbert@gondor.apana.org.au>
Sun, 19 Apr 2009 22:35:50 +0000 (22:35 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 20 Apr 2009 10:01:48 +0000 (03:01 -0700)
commitc40af84a6726f63e35740d26f841992e8f31f92c
treedbb8271908d537817915814735cfc2a86130e2f6
parent9c3fea6ab04a7bd9298e635bf29b4a5379f6c476
tun: Fix sk_sleep races when attaching/detaching

As the sk_sleep wait queue actually lives in tfile, which may be
detached from the tun device, bad things will happen when we use
sk_sleep after detaching.

Since the tun device is the persistent data structure here (when
requested by the user), it makes much more sense to have the wait
queue live there.  There is no reason to have it in tfile at all
since the only time we can wait is if we have a tun attached.
In fact we already have a wait queue in tun_struct, so we might
as well use it.

Reported-by: Eric W. Biederman <ebiederm@xmission.com>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tun.c