Johannes Berg
d136f1bd36
genetlink: fix netns vs. netlink table locking
...
Since my commits introducing netns awareness into
genetlink we can get this problem:
BUG: scheduling while atomic: modprobe/1178/0x00000002
2 locks held by modprobe/1178:
#0 : (genl_mutex){+.+.+.}, at: [<ffffffff8135ee1a>] genl_register_mc_grou
#1 : (rcu_read_lock){.+.+..}, at: [<ffffffff8135eeb5>] genl_register_mc_g
Pid: 1178, comm: modprobe Not tainted 2.6.31-rc8-wl-34789-g95cb731-dirty #
Call Trace:
[<ffffffff8103e285>] __schedule_bug+0x85/0x90
[<ffffffff81403138>] schedule+0x108/0x588
[<ffffffff8135b131>] netlink_table_grab+0xa1/0xf0
[<ffffffff8135c3a7>] netlink_change_ngroups+0x47/0x100
[<ffffffff8135ef0f>] genl_register_mc_group+0x12f/0x290
because I overlooked that netlink_table_grab() will
schedule, thinking it was just the rwlock. However,
in the contention case, that isn't actually true.
Fix this by letting the code grab the netlink table
lock first and then the RCU for netns protection.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-09-14 17:02:50 -07:00
..
2009-06-19 16:46:03 -07:00
2009-09-04 02:16:14 -07:00
2009-08-07 10:39:56 -07:00
2009-06-20 10:17:02 -07:00
2009-08-05 22:20:14 -07:00
2009-07-25 20:16:01 +02:00
2009-06-17 18:02:10 -07:00
2009-06-17 19:41:52 +02:00
2009-06-05 10:36:24 -07:00
2009-07-26 19:25:47 -07:00
2009-08-03 14:16:01 +01:00
2009-08-25 16:07:58 +02:00
2009-08-24 14:56:30 +02:00
2009-08-24 14:56:30 +02:00
2009-08-24 14:56:30 +02:00
2009-08-24 14:56:30 +02:00
2009-06-22 12:55:50 -07:00
2009-06-18 08:46:47 +10:00
2009-06-15 11:18:26 +01:00
2009-06-30 18:56:00 -07:00
2009-09-09 11:19:00 -04:00
2009-08-20 18:20:25 -04:00
2009-09-01 01:13:22 -07:00
2009-06-11 03:30:20 -07:00
Merge branches 'acerhdf', 'acpi-pci-bind', 'bjorn-pci-root', 'bugzilla-12904', 'bugzilla-13121', 'bugzilla-13396', 'bugzilla-13533', 'bugzilla-13612', 'c3_lock', 'hid-cleanups', 'misc-2.6.31', 'pdc-leak-fix', 'pnpacpi', 'power_nocheck', 'thinkpad_acpi', 'video' and 'wmi' into release
2009-06-24 01:19:50 -04:00
2009-06-17 00:36:36 -04:00
2009-06-19 10:21:42 +10:00
2009-06-30 18:55:58 -07:00
2009-09-01 01:14:07 -07:00
2009-09-01 19:47:20 -04:00
2009-04-08 20:47:48 +02:00
2009-06-24 00:00:52 -04:00
2009-06-01 06:21:13 +00:00
2009-09-11 09:20:26 +02:00
2009-09-05 11:30:42 -07:00
2009-07-01 10:56:25 +02:00
2009-08-21 09:26:15 -07:00
2009-04-23 10:06:35 +01:00
2009-08-01 10:24:35 +02:00
2009-06-10 11:55:06 +02:00
2009-04-16 07:47:49 -07:00
2009-06-16 19:47:48 -07:00
2009-06-15 15:49:34 +02:00
2009-04-13 08:32:28 -07:00
2009-07-31 12:28:46 +02:00
2009-06-11 21:36:09 -04:00
2009-07-29 19:10:35 -07:00
2009-06-04 17:45:43 +01:00
2009-07-10 17:32:55 +02:00
2009-07-31 14:12:36 +02:00
2009-04-30 19:24:24 +02:00
2009-06-18 13:03:57 -07:00
2009-06-12 21:46:57 +09:30
2009-07-17 10:13:21 -07:00
2009-07-16 09:19:16 -07:00
2009-08-15 19:02:07 +02:00
2009-08-21 09:26:15 -07:00
2009-06-16 19:47:31 -07:00
2009-06-11 21:36:10 -04:00
2009-07-12 12:22:34 -07:00
2009-09-02 21:29:22 +10:00
2009-07-14 20:29:57 +08:00
2009-06-11 08:50:57 -07:00
2009-06-11 21:36:06 -04:00
2009-09-01 01:24:30 -07:00
2009-04-14 11:11:52 +02:00
2009-09-04 20:40:25 +01:00
2009-07-12 13:02:10 -07:00
2009-05-07 10:14:26 -05:00
2009-06-22 10:12:30 +01:00
2009-09-04 20:40:34 +01:00
2009-05-18 14:46:26 +01:00
2009-04-15 12:22:37 +02:00
2009-07-28 14:19:20 +09:00
2009-05-12 14:41:47 -07:00
2009-06-23 22:09:17 +01:00
2009-09-08 21:17:48 -04:00
2009-06-11 14:57:53 -04:00
2009-04-16 16:17:11 -07:00
2009-06-17 09:33:49 -07:00
2009-06-15 21:30:26 -07:00
2009-05-11 09:52:18 +02:00
2009-07-08 09:18:05 -07:00
2009-05-05 12:26:24 -07:00
2009-09-02 23:07:39 -07:00
2009-06-30 18:55:58 -07:00
2009-06-24 08:17:04 -04:00
2009-07-15 21:30:46 +02:00
2009-06-24 08:15:27 -04:00
2009-06-30 18:56:00 -07:00
2009-04-13 15:04:30 -07:00
2009-06-18 19:50:21 +08:00
2009-06-25 19:42:36 +02:00
2009-06-16 19:47:28 -07:00
2009-06-15 21:30:25 -07:00
2009-08-26 20:06:52 -07:00
2009-04-27 02:53:51 -07:00
2009-09-14 17:08:17 +02:00
2009-06-18 13:03:42 -07:00
2009-07-21 15:26:27 -04:00
2009-06-11 14:57:54 -04:00
2009-09-04 18:59:39 -04:00
2009-06-18 18:40:18 -04:00
2009-06-30 20:12:24 +02:00
2009-04-30 11:41:35 +02:00
2009-05-09 16:10:18 -07:00
2009-06-18 13:04:05 -07:00
2009-08-17 21:33:49 -07:00
2009-06-15 21:30:25 -07:00
2009-06-18 13:12:57 -07:00
2009-08-25 13:44:04 +01:00
2009-09-11 13:23:18 -07:00
2009-09-01 01:13:31 -07:00
2009-05-20 15:48:35 +02:00
2009-06-16 19:47:41 -07:00
2009-07-10 19:33:00 +02:00
2009-08-24 12:53:01 -07:00
2009-04-06 18:11:41 -07:00
2009-06-13 10:39:28 +01:00
2009-06-19 16:58:21 +02:00
2009-05-28 20:52:40 -04:00
2009-08-12 22:13:15 -07:00
2009-06-29 19:20:42 -07:00
2009-08-28 14:40:24 -04:00
2009-09-11 12:54:58 -07:00
2009-08-19 23:08:24 +04:00
2009-07-26 19:25:44 -07:00
2009-09-07 01:56:33 -07:00
2009-05-21 15:13:39 -07:00
2009-07-17 10:11:00 -07:00
2009-05-19 16:02:02 -07:00
2009-04-16 02:02:07 -07:00
2009-05-18 22:19:19 -07:00
2009-06-29 08:59:10 +10:00
2009-06-02 00:45:24 -07:00
2009-07-27 18:39:45 -07:00
2009-08-29 15:34:39 +02:00
2009-08-21 15:30:12 -07:00
2009-06-19 22:55:17 -07:00
2009-05-18 14:46:26 +01:00
2009-08-17 10:54:05 +02:00
2009-07-31 08:55:48 +02:00
2009-06-11 12:04:06 -07:00
2009-06-18 13:03:56 -07:00
2009-04-21 13:41:48 -07:00
2009-04-21 13:41:48 -07:00
2009-06-01 03:07:33 -07:00
2009-09-11 13:21:31 -07:00
2009-08-29 15:53:00 +02:00
2009-06-17 11:47:48 -04:00
2009-04-14 10:10:47 -04:00
2009-06-22 10:12:35 +01:00
2009-06-18 13:03:40 -07:00
2009-07-18 15:51:42 +02:00
2009-09-02 21:29:22 +10:00
2009-06-14 13:50:36 -07:00
2009-09-02 21:29:22 +10:00
2009-09-04 16:05:55 +01:00
2009-08-27 14:29:16 +01:00
2009-04-14 22:05:43 -04:00
2009-04-09 07:49:44 -07:00
2009-04-07 08:31:08 -07:00
2009-08-05 14:03:43 +03:00
2009-06-10 11:48:27 +03:00
2009-06-10 11:48:39 +03:00
2009-04-06 16:06:26 +01:00
2009-04-06 16:06:26 +01:00
2009-06-23 20:21:38 +01:00
2009-06-23 20:21:39 +01:00
2009-07-30 16:03:45 +09:30
2009-07-30 16:03:46 +09:30
2009-09-01 19:47:20 -04:00
2009-06-26 23:58:39 +02:00
2009-06-16 19:47:57 -07:00
2009-06-16 19:47:57 -07:00
2009-06-13 12:28:57 +02:00
2009-08-31 17:30:14 -10:00
2009-08-02 15:41:37 +02:00
2009-04-28 07:37:28 +02:00
2009-08-17 08:37:18 +10:00
2009-06-11 21:36:10 -04:00
2009-06-16 19:47:48 -07:00
2009-06-09 00:53:21 +04:00
2009-08-18 20:13:03 -07:00
2009-06-18 13:03:47 -07:00
2009-04-05 11:04:19 -07:00
2009-06-16 08:40:20 +02:00
2009-04-29 17:32:35 -07:00
2009-06-15 21:30:25 -07:00
2009-05-25 00:55:30 -07:00
2009-07-25 20:18:16 +02:00
2009-07-25 20:19:25 +02:00
2009-08-18 16:31:13 -07:00
2009-08-17 15:09:11 +10:00
2009-05-02 15:36:10 -07:00
2009-04-29 11:33:34 +02:00
2009-06-16 19:47:42 -07:00
2009-07-08 09:31:56 -07:00
2009-08-17 11:25:08 +02:00
2009-06-12 21:46:58 +09:30
2009-06-11 21:36:02 -04:00
2009-04-30 09:01:34 +02:00
2009-06-11 21:36:01 -04:00
2009-07-12 20:11:17 -07:00
2009-09-11 12:54:55 -07:00
2009-09-14 17:02:50 -07:00
2009-06-17 18:02:11 -07:00
2009-06-17 18:02:11 -07:00
2009-09-08 19:50:03 -04:00
2009-08-09 15:06:19 -04:00
2009-08-12 08:21:39 -07:00
2009-06-17 12:24:34 -07:00
2009-06-17 18:02:11 -07:00
2009-04-07 08:31:20 -07:00
2009-08-14 09:13:43 -04:00
2009-08-19 23:08:22 +04:00
2009-06-15 21:44:43 -07:00
2009-08-03 09:56:52 +02:00
2009-08-07 10:39:55 -07:00
2009-06-03 14:05:12 -04:00
2009-07-22 09:27:18 -07:00
2009-05-02 15:36:10 -07:00
2009-04-27 02:53:45 -07:00
2009-07-20 16:33:53 +02:00
2009-06-12 11:00:54 +03:00
2009-06-17 08:30:15 +03:00
2009-08-22 13:07:09 +02:00
2009-04-07 08:44:06 -07:00
2009-06-02 09:53:22 -07:00
Merge branches 'acerhdf', 'acpi-pci-bind', 'bjorn-pci-root', 'bugzilla-12904', 'bugzilla-13121', 'bugzilla-13396', 'bugzilla-13533', 'bugzilla-13612', 'c3_lock', 'hid-cleanups', 'misc-2.6.31', 'pdc-leak-fix', 'pnpacpi', 'power_nocheck', 'thinkpad_acpi', 'video' and 'wmi' into release
2009-06-24 01:19:50 -04:00
2009-09-14 10:37:28 -07:00
2009-06-22 21:38:22 -07:00
2009-06-16 14:29:30 -07:00
2009-06-29 12:14:51 -07:00
2009-09-14 08:01:28 -07:00
2009-06-11 17:04:18 +01:00
2009-09-11 13:24:03 -07:00
2009-07-13 08:01:47 +10:00
2009-09-11 12:55:10 -07:00
2009-05-26 21:16:25 -07:00
2009-05-11 14:13:10 +02:00
2009-04-24 08:54:21 +02:00
2009-06-15 21:30:24 -07:00
2009-06-12 21:32:31 +02:00
2009-06-05 14:37:41 +00:00
2009-06-16 19:47:48 -07:00
2009-06-24 16:58:48 -04:00
2009-06-18 13:04:04 -07:00
2009-07-29 19:10:36 -07:00
2009-06-11 21:36:01 -04:00
2009-06-18 13:03:51 -07:00
2009-06-11 21:36:12 -04:00
2009-07-12 12:22:34 -07:00
2009-06-16 19:47:30 -07:00
2009-06-11 08:51:08 -07:00
2009-04-14 18:41:15 +02:00
2009-08-26 09:45:41 +02:00
2009-08-23 10:32:40 +02:00
2009-08-23 19:13:02 -07:00
2009-06-24 08:17:06 -04:00
2009-06-24 08:17:06 -04:00
2009-06-11 21:35:58 -04:00
2009-06-18 13:03:46 -07:00
2009-05-17 11:45:45 -07:00
2009-06-18 13:03:48 -07:00
2009-09-01 12:48:21 -04:00
2009-09-04 19:42:22 -04:00
2009-06-23 12:50:05 -07:00
2009-05-09 10:49:41 -04:00
2009-04-17 20:37:21 -07:00
2009-09-09 03:42:23 -07:00
2009-07-31 12:28:45 +02:00
2009-09-11 13:23:18 -07:00
2009-06-03 09:14:45 -04:00
2009-04-19 10:47:45 -07:00
2009-09-10 10:11:24 +10:00
2009-06-18 13:03:57 -07:00
2009-06-22 11:32:25 -07:00
2009-04-08 14:33:38 -07:00
2009-06-22 11:32:24 -07:00
2009-05-08 23:22:26 +09:00
2009-06-11 08:50:58 -07:00
2009-05-09 16:10:18 -07:00
2009-05-03 17:57:17 +09:00
2009-09-08 11:08:46 -07:00
2009-04-13 15:04:29 -07:00
2009-04-30 19:24:24 +02:00
2009-07-24 15:05:31 -04:00
2009-06-13 08:58:43 +02:00
2009-06-15 15:50:49 +02:00
2009-06-12 18:53:33 +03:00
2009-04-21 19:40:00 -07:00
2009-07-08 14:25:14 +01:00
2009-06-16 19:47:48 -07:00
2009-04-28 01:53:11 -07:00
2009-04-27 02:45:02 -07:00
2009-06-09 05:25:30 -07:00
2009-08-31 18:08:51 +02:00
2009-06-10 11:48:14 +02:00
2009-08-31 18:08:51 +02:00
2009-05-12 11:11:48 +02:00
2009-06-12 23:04:12 +02:00
2009-04-05 10:30:21 -07:00
2009-04-10 15:48:52 +02:00
2009-06-12 21:32:33 +02:00
2009-06-23 12:50:05 -07:00
2009-07-28 14:19:20 +09:00
2009-08-31 10:58:08 +02:00
2009-07-06 13:57:03 -07:00
2009-09-02 01:03:43 -07:00
2009-04-06 11:14:03 +02:00
2009-06-13 12:00:26 +02:00
2009-05-02 11:45:15 +02:00
2009-06-24 11:15:09 +02:00
2009-06-16 19:47:27 -07:00
2009-07-05 19:16:11 -07:00
2009-09-07 22:00:17 +02:00
2009-06-15 11:37:09 -04:00
2009-06-18 13:03:49 -07:00
2009-08-26 08:29:02 +02:00
2009-06-11 08:50:59 -07:00
2009-08-04 13:46:30 -07:00
2009-09-10 15:32:40 +02:00
2009-06-19 08:08:50 +02:00
2009-08-21 00:53:12 -07:00
2009-07-29 19:10:39 -07:00
2009-06-12 18:01:45 +02:00
2009-07-12 15:16:39 -07:00
2009-06-16 19:47:47 -07:00
2009-07-24 14:03:30 -03:00
2009-07-30 16:03:46 +09:30
2009-07-30 16:03:46 +09:30
2009-07-30 16:03:46 +09:30
2009-06-12 22:16:37 +09:30
2009-07-30 16:03:46 +09:30
2009-06-12 22:16:36 +09:30
2009-06-16 19:47:52 -07:00
2009-06-16 19:47:46 -07:00
2009-06-18 13:03:58 -07:00
2009-08-10 14:43:09 +02:00
2009-05-28 18:02:32 -07:00
2009-07-15 08:53:39 -07:00
2009-09-05 11:30:42 -07:00
2009-09-14 17:08:17 +02:00
2009-09-10 10:11:22 +10:00