Johannes Berg
b8273570f8
genetlink: fix netns vs. netlink table locking (2)
...
Similar to commit d136f1bd36 ,
there's a bug when unregistering a generic netlink family,
which is caught by the might_sleep() added in that commit:
BUG: sleeping function called from invalid context at net/netlink/af_netlink.c:183
in_atomic(): 1, irqs_disabled(): 0, pid: 1510, name: rmmod
2 locks held by rmmod/1510:
#0 : (genl_mutex){+.+.+.}, at: [<ffffffff8138283b>] genl_unregister_family+0x2b/0x130
#1 : (rcu_read_lock){.+.+..}, at: [<ffffffff8138270c>] __genl_unregister_mc_group+0x1c/0x120
Pid: 1510, comm: rmmod Not tainted 2.6.31-wl #444
Call Trace:
[<ffffffff81044ff9>] __might_sleep+0x119/0x150
[<ffffffff81380501>] netlink_table_grab+0x21/0x100
[<ffffffff813813a3>] netlink_clear_multicast_users+0x23/0x60
[<ffffffff81382761>] __genl_unregister_mc_group+0x71/0x120
[<ffffffff81382866>] genl_unregister_family+0x56/0x130
[<ffffffffa0007d85>] nl80211_exit+0x15/0x20 [cfg80211]
[<ffffffffa000005a>] cfg80211_exit+0x1a/0x40 [cfg80211]
Fix in the same way by grabbing the netlink table lock
before doing rcu_read_lock().
Signed-off-by: Johannes Berg <johannes@sipsolutions.net >
Signed-off-by: David S. Miller <davem@davemloft.net >
2009-09-24 15:44:05 -07:00
..
2009-09-12 11:51:14 +01:00
2009-09-19 00:51:34 -03:00
2009-09-23 15:39:36 -07:00
2009-09-22 07:54:33 -07:00
2009-09-23 10:11:08 -07:00
2009-09-23 07:39:38 -07:00
2009-09-20 05:55:36 -07:00
2009-09-23 07:39:29 -07:00
2009-09-22 13:32:45 +01:00
2009-09-23 07:39:46 -07:00
2009-09-09 11:19:00 -04:00
2009-09-23 14:36:38 -04:00
2009-09-24 07:21:05 -07:00
2009-09-24 15:13:11 -07:00
2009-09-19 02:14:45 -04:00
2009-09-20 16:09:20 +05:30
2009-09-23 07:39:29 -07:00
2009-09-08 17:42:50 -07:00
2009-09-15 09:50:47 -07:00
2009-09-16 15:18:52 +02:00
2009-09-24 07:21:01 -07:00
2009-09-11 14:33:31 +02:00
2009-09-11 14:33:32 +02:00
2009-09-14 08:24:53 +02:00
2009-09-22 07:17:38 -07:00
2009-09-21 15:14:51 +02:00
2009-09-24 07:20:58 -07:00
2009-09-23 07:39:29 -07:00
2009-09-24 07:20:57 -07:00
2009-09-24 09:34:53 +09:30
2009-09-23 11:01:25 -07:00
2009-09-19 13:13:31 -07:00
2009-09-10 10:00:05 -07:00
2009-09-24 07:20:57 -07:00
2009-09-18 09:48:52 -07:00
2009-09-04 20:40:25 +01:00
2009-09-19 12:50:38 -07:00
2009-09-04 20:40:34 +01:00
2009-09-08 17:55:21 -07:00
2009-09-08 21:17:48 -04:00
2009-09-14 17:41:42 -07:00
2009-09-23 07:39:29 -07:00
2009-09-12 14:48:40 +02:00
2009-09-22 07:17:47 -07:00
2009-09-24 08:32:11 -07:00
2009-09-18 07:25:44 +02:00
2009-09-24 07:21:04 -07:00
2009-09-24 07:21:04 -07:00
2009-09-22 07:17:25 -07:00
2009-09-23 07:39:29 -07:00
2009-09-23 07:39:46 -07:00
2009-09-11 13:23:18 -07:00
2009-09-19 13:13:31 -07:00
2009-09-17 15:15:11 +02:00
2009-09-24 07:21:04 -07:00
2009-09-19 00:16:14 -03:00
2009-09-18 22:45:43 +02:00
2009-09-17 23:23:45 -07:00
2009-09-11 12:54:58 -07:00
2009-09-07 01:56:33 -07:00
2009-09-15 02:37:40 -07:00
2009-09-21 14:28:04 +02:00
2009-09-17 23:23:58 -07:00
2009-09-11 16:40:10 +01:00
2009-09-24 09:34:38 +09:30
2009-09-23 07:39:41 -07:00
2009-09-11 13:21:31 -07:00
2009-09-23 07:39:58 -07:00
2009-09-10 10:46:47 +03:00
2009-09-23 07:39:30 -07:00
2009-09-19 13:13:17 -07:00
2009-09-23 07:39:29 -07:00
2009-09-15 23:51:31 -04:00
2009-09-22 07:17:33 -07:00
2009-09-18 21:22:08 +02:00
2009-09-10 08:33:20 +03:00
2009-09-10 08:33:16 +03:00
2009-09-17 23:23:45 -07:00
2009-09-21 06:27:08 +02:00
2009-09-22 07:17:48 -07:00
2009-09-23 07:39:42 -07:00
2009-09-24 07:20:59 -07:00
2009-09-23 07:39:41 -07:00
2009-09-22 07:17:35 -07:00
2009-09-19 12:50:38 -07:00
2009-09-21 15:14:56 +02:00
2009-09-22 07:17:37 -07:00
2009-09-24 07:21:05 -07:00
2009-09-24 08:32:11 -07:00
2009-09-22 07:17:42 -07:00
2009-09-22 07:17:31 -07:00
2009-09-24 07:21:04 -07:00
2009-09-23 07:39:43 -07:00
2009-09-25 00:32:58 +09:30
2009-09-21 15:14:51 +02:00
2009-09-15 02:39:20 -07:00
2009-09-17 20:53:52 -07:00
2009-09-24 15:44:05 -07:00
2009-09-22 07:54:33 -07:00
2009-09-15 02:37:40 -07:00
2009-09-22 07:17:38 -07:00
2009-09-24 07:20:58 -07:00
2009-09-24 07:53:22 -07:00
2009-09-14 17:39:12 -07:00
2009-09-24 07:55:29 -07:00
2009-09-15 09:50:48 -07:00
2009-09-09 14:19:11 -07:00
2009-09-15 09:39:44 -07:00
2009-09-21 14:34:11 +02:00
2009-09-21 14:34:11 +02:00
2009-09-24 15:38:57 -07:00
2009-09-14 20:27:00 +02:00
2009-09-22 07:17:49 -07:00
2009-09-22 07:17:47 -07:00
2009-09-24 07:53:22 -07:00
2009-09-23 07:39:41 -07:00
2009-09-22 07:17:24 -07:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-09-19 08:53:22 +02:00
2009-09-24 07:20:57 -07:00
2009-09-24 07:20:59 -07:00
2009-09-04 19:42:22 -04:00
2009-09-24 07:53:22 -07:00
2009-09-09 03:42:23 -07:00
2009-09-15 02:44:17 -07:00
2009-09-24 07:53:22 -07:00
2009-09-24 07:21:04 -07:00
2009-09-15 11:37:33 +10:00
2009-09-24 07:47:35 -04:00
2009-09-19 13:13:19 -07:00
2009-09-23 11:24:57 -07:00
2009-09-19 13:13:30 -07:00
2009-09-15 09:50:49 -07:00
2009-09-24 07:21:01 -07:00
2009-09-14 20:19:06 +03:00
2009-09-24 09:34:40 +09:30
2009-09-24 07:53:22 -07:00
2009-09-16 11:50:05 +02:00
2009-09-23 09:21:05 -07:00
2009-09-24 07:21:04 -07:00
2009-09-18 09:48:52 -07:00
2009-09-24 07:20:56 -07:00
2009-09-24 09:34:41 +09:30
2009-09-24 07:21:00 -07:00
2009-09-24 07:20:57 -07:00
2009-09-15 09:50:47 -07:00
2009-09-19 13:13:35 -07:00
2009-09-23 07:39:48 -07:00
2009-09-23 06:46:23 -07:00
2009-09-23 06:46:39 -07:00
2009-09-23 18:13:10 -07:00
2009-09-24 09:57:08 -07:00
2009-09-19 00:18:36 -03:00
2009-09-23 22:26:32 +09:30
2009-09-23 22:26:32 +09:30
2009-09-23 22:26:36 +09:30
2009-09-23 07:39:29 -07:00
2009-09-23 22:26:32 +09:30
2009-09-23 22:26:32 +09:30
2009-09-23 22:26:32 +09:30
2009-09-23 22:26:32 +09:30
2009-09-23 22:26:31 +09:30
2009-09-22 07:17:30 -07:00
2009-09-19 13:13:25 -07:00
2009-09-19 13:13:26 -07:00
2009-09-15 16:51:30 +02:00
2009-09-23 03:49:27 +04:00
2009-09-21 15:14:53 +02:00
2009-09-24 07:21:04 -07:00
2009-09-10 10:11:22 +10:00