Herbert Xu d23e43658a tun: Fix device unregister race
It is currently possible for an asynchronous device unregister
to cause the same tun device to be unregistered twice.  This
is because the unregister in tun_chr_close only checks whether
__tun_get(tfile) != NULL.  This however has nothing to do with
whether the device has already been unregistered.  All it tells
you is whether __tun_detach has been called.

This patch fixes this by using the most obvious thing to test
whether the device has been unregistered.

It also moves __tun_detach outside of rtnl_unlock since nothing
that it does requires that lock.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-07-05 18:03:18 -07:00
..
2009-06-11 17:23:24 -07:00
2009-06-13 23:29:04 -07:00
2009-04-13 15:16:33 -07:00
2009-06-11 02:47:13 -07:00
2009-04-28 02:05:21 -07:00
2009-06-08 00:21:48 -07:00
2009-07-03 19:10:51 -07:00
2009-06-30 19:46:48 -07:00
2009-05-26 20:35:02 -07:00
2009-05-26 20:35:02 -07:00
2009-05-26 20:35:02 -07:00
2009-05-26 20:35:03 -07:00
2009-04-24 04:45:33 -07:00
2009-05-17 11:59:51 -07:00
2009-05-29 01:46:27 -07:00
2009-04-11 02:53:46 -07:00
2009-01-07 18:10:24 -08:00
2009-04-16 02:20:06 -07:00
2009-04-04 16:51:14 -07:00
2009-03-02 22:32:48 -08:00
2009-02-15 23:32:01 -08:00
2009-02-15 23:32:01 -08:00
2009-02-15 23:32:01 -08:00
2009-03-02 22:32:43 -08:00
2009-04-27 03:27:43 -07:00
2009-06-21 11:00:33 -05:00
2009-05-29 01:46:27 -07:00
2009-01-07 17:30:09 -08:00
2009-01-21 14:33:50 -08:00
2009-04-16 02:34:48 -07:00
2009-06-18 00:46:13 -07:00
2009-02-04 16:43:44 -08:00
2009-02-26 21:02:19 -08:00
2009-04-16 02:20:08 -07:00
2009-05-17 15:19:36 -07:00
2009-01-06 10:47:44 -08:00
2009-06-11 17:23:24 -07:00
2009-05-29 01:46:27 -07:00
2009-05-29 01:51:22 -07:00
2009-06-08 00:20:20 -07:00
2009-03-27 00:46:48 -07:00
2009-04-16 02:20:15 -07:00
2009-04-16 02:20:16 -07:00
2009-04-13 15:16:26 -07:00
2009-06-25 20:06:34 -07:00
2009-04-16 02:20:18 -07:00
2009-04-16 02:20:21 -07:00
2009-04-16 02:20:22 -07:00
2009-03-27 00:46:53 -07:00
2009-03-28 23:37:27 -07:00
2009-06-18 00:29:08 -07:00
2009-06-22 11:32:24 -07:00
2009-06-22 11:32:24 -07:00
2009-06-03 02:51:04 -07:00
2009-05-27 15:46:53 -07:00
2009-06-19 01:12:52 -07:00
2009-04-16 02:20:24 -07:00
2009-04-29 17:32:34 -07:00
2009-01-07 17:56:54 -08:00
2009-04-16 02:20:25 -07:00
2009-05-25 22:49:56 -07:00
2009-05-29 01:46:27 -07:00
2009-06-26 09:28:42 -07:00
2009-06-17 18:46:54 -07:00
2009-01-07 18:09:36 -08:00
2009-04-16 02:20:25 -07:00
2009-03-27 00:46:48 -07:00
2009-03-20 00:51:22 -07:00
2009-06-08 00:21:48 -07:00
2009-07-05 18:03:18 -07:00
2009-01-11 00:06:36 -08:00
2009-04-13 15:16:21 -07:00
2009-05-29 01:46:27 -07:00
2009-01-21 14:02:31 -08:00