Stephen Boyd
9acd56d3f2
rt2x00: Fix lockdep warning in rt2x00lib_probe_dev()
...
The rt2x00dev->intf_work workqueue is never initialized when a driver is
probed for a non-existent device (in this case rt2500usb). On such a
path we call rt2x00lib_remove_dev() to free any resources initialized
during the probe before we use INIT_WORK to initialize the workqueue.
This causes lockdep to get confused since the lock used in the workqueue
hasn't been initialized yet but is now being acquired during
cancel_work_sync() called by rt2x00lib_remove_dev().
Fix this by initializing the workqueue first before we attempt to probe
the device. This should make lockdep happy and avoid breaking any
assumptions about how the library cleans up after a probe fails.
phy0 -> rt2x00lib_probe_dev: Error - Failed to allocate device.
INFO: trying to register non-static key.
the code is fine but needs lockdep annotation.
turning off the locking correctness validator.
Pid: 2027, comm: modprobe Not tainted 2.6.35-rc5+ #60
Call Trace:
[<ffffffff8105fe59>] register_lock_class+0x152/0x31f
[<ffffffff81344a00>] ? usb_control_msg+0xd5/0x111
[<ffffffff81061bde>] __lock_acquire+0xce/0xcf4
[<ffffffff8105f6fd>] ? trace_hardirqs_off+0xd/0xf
[<ffffffff81492aef>] ? _raw_spin_unlock_irqrestore+0x33/0x41
[<ffffffff810628d5>] lock_acquire+0xd1/0xf7
[<ffffffff8104f037>] ? __cancel_work_timer+0x99/0x17e
[<ffffffff8104f06e>] __cancel_work_timer+0xd0/0x17e
[<ffffffff8104f037>] ? __cancel_work_timer+0x99/0x17e
[<ffffffff8104f136>] cancel_work_sync+0xb/0xd
[<ffffffffa0096675>] rt2x00lib_remove_dev+0x25/0xb0 [rt2x00lib]
[<ffffffffa0096bf7>] rt2x00lib_probe_dev+0x380/0x3ed [rt2x00lib]
[<ffffffff811d78a7>] ? __raw_spin_lock_init+0x31/0x52
[<ffffffffa00bbd2c>] ? T.676+0xe/0x10 [rt2x00usb]
[<ffffffffa00bbe4f>] rt2x00usb_probe+0x121/0x15e [rt2x00usb]
[<ffffffff813468bd>] usb_probe_interface+0x151/0x19e
[<ffffffff812ea08e>] driver_probe_device+0xa7/0x136
[<ffffffff812ea167>] __driver_attach+0x4a/0x66
[<ffffffff812ea11d>] ? __driver_attach+0x0/0x66
[<ffffffff812e96ca>] bus_for_each_dev+0x54/0x89
[<ffffffff812e9efd>] driver_attach+0x19/0x1b
[<ffffffff812e9b64>] bus_add_driver+0xb4/0x204
[<ffffffff812ea41b>] driver_register+0x98/0x109
[<ffffffff813465dd>] usb_register_driver+0xb2/0x173
[<ffffffffa00ca000>] ? rt2500usb_init+0x0/0x20 [rt2500usb]
[<ffffffffa00ca01e>] rt2500usb_init+0x1e/0x20 [rt2500usb]
[<ffffffff81000203>] do_one_initcall+0x6d/0x17a
[<ffffffff8106cae8>] sys_init_module+0x9c/0x1e0
[<ffffffff8100296b>] system_call_fastpath+0x16/0x1b
Signed-off-by: Stephen Boyd <bebarino@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-07-16 13:57:59 -04:00
..
2010-05-14 00:19:28 -07:00
2010-05-17 23:23:15 -07:00
2010-05-12 00:05:35 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-06 00:48:51 -07:00
2010-04-28 12:55:10 -07:00
2010-05-20 23:21:45 -07:00
2010-04-14 16:11:33 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-18 15:16:46 -07:00
2010-05-14 03:06:19 -07:00
2010-05-20 21:04:44 -07:00
2010-05-17 22:47:34 -07:00
2010-05-17 22:50:19 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-04-11 14:53:53 -07:00
2010-05-14 00:19:28 -07:00
2010-05-20 21:04:44 -07:00
2010-05-17 22:47:34 -07:00
2010-05-14 03:06:19 -07:00
2010-05-20 23:07:06 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-17 22:47:34 -07:00
2010-04-14 16:11:33 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-20 21:04:44 -07:00
2010-05-14 00:19:28 -07:00
2010-05-17 17:30:56 -07:00
2010-05-14 00:19:28 -07:00
2010-05-02 22:02:06 -07:00
2010-05-17 22:47:34 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-20 21:26:12 -07:00
2010-05-17 22:55:10 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-20 21:26:12 -07:00
2010-07-16 13:57:59 -04:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2009-09-01 01:13:50 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-04-03 14:22:15 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2009-09-01 01:14:07 -07:00
2009-09-01 01:14:07 -07:00
2009-09-01 01:14:07 -07:00
2010-05-10 05:01:31 -07:00
2010-05-18 23:01:55 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-04-01 18:38:33 -07:00
2010-05-10 05:01:31 -07:00
2010-02-22 15:45:51 -08:00
2010-05-14 00:19:28 -07:00
2010-05-18 23:01:55 -07:00
2009-12-04 15:39:55 +01:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-04-07 02:07:49 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2009-06-15 03:02:23 -07:00
2010-05-10 05:01:31 -07:00
2009-09-17 20:07:53 +02:00
2010-05-17 17:21:01 -07:00
2010-05-17 17:20:59 -07:00
2010-05-14 00:19:28 -07:00
2009-04-04 16:51:14 -07:00
2010-05-17 17:34:43 -07:00
2010-05-17 17:32:56 -07:00
2009-08-12 23:03:00 -07:00
2010-02-17 13:35:44 -08:00
2009-04-27 03:27:43 -07:00
2010-03-29 15:41:47 +02:00
2010-02-17 13:35:44 -08:00
2009-08-12 23:02:59 -07:00
2010-03-24 14:10:38 -07:00
2009-11-05 20:00:29 -08:00
2010-05-17 17:35:38 -07:00
2010-04-19 13:17:05 -07:00
2010-04-23 00:10:52 -07:00
2010-05-17 22:47:34 -07:00
2010-02-26 02:10:14 -08:00
2010-02-26 02:10:14 -08:00
2010-05-18 15:16:44 -07:00
2010-05-18 15:16:44 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-04-03 14:22:15 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-01-07 23:54:26 -08:00
2010-05-17 17:45:48 -07:00
2009-11-11 19:22:21 -08:00
2010-05-10 05:01:31 -07:00
2009-03-11 23:26:02 -07:00
2009-09-01 01:13:40 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2008-12-29 18:42:33 -08:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-17 22:47:34 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-03-30 22:02:32 +09:00
2010-05-10 05:01:31 -07:00
2010-05-12 00:05:35 -07:00
2009-07-06 18:56:11 -07:00
2010-05-10 05:01:31 -07:00
2010-05-17 17:44:46 -07:00
2009-11-02 23:40:57 -08:00
2010-03-30 22:02:32 +09:00
2010-03-30 22:02:32 +09:00
2010-05-17 17:44:35 -07:00
2010-04-13 01:41:31 -07:00
2010-04-11 14:53:53 -07:00
2010-02-17 15:59:40 -08:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-03-30 22:02:32 +09:00
2010-05-17 21:37:41 +02:00
2010-04-11 14:53:53 -07:00
2010-05-17 22:55:10 -07:00
2009-01-06 10:47:44 -08:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-04-11 14:53:53 -07:00
2010-03-30 23:42:26 -07:00
2010-04-11 14:53:53 -07:00
2010-03-30 22:02:32 +09:00
2010-05-17 22:47:34 -07:00
2010-03-18 21:14:00 -07:00
2010-05-17 17:19:40 -07:00
2010-04-03 14:22:15 -07:00
2010-04-21 16:33:29 -07:00
2010-04-11 14:53:53 -07:00
2010-05-05 21:27:45 -07:00
2010-05-05 21:27:44 -07:00
2010-05-17 22:55:10 -07:00
2010-05-10 05:01:31 -07:00
2010-03-30 22:02:32 +09:00
2010-05-14 00:19:28 -07:00
2010-05-17 22:47:34 -07:00
2010-05-10 05:01:31 -07:00
2010-03-30 22:02:32 +09:00
2010-04-13 01:33:44 -07:00
2010-05-14 00:19:28 -07:00
2010-02-16 23:05:38 -08:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-04-11 14:53:53 -07:00
2010-05-10 05:01:31 -07:00
2010-03-30 22:02:32 +09:00
2010-05-16 00:42:15 -07:00
2010-05-04 01:35:47 +03:00
2010-04-27 12:49:13 -07:00
2009-10-12 23:59:08 -07:00
2010-05-14 00:19:28 -07:00
2009-09-03 20:02:11 -07:00
2009-11-18 23:29:17 -08:00
2010-05-17 22:55:08 -07:00
2010-03-30 22:02:32 +09:00
2010-05-17 22:47:34 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-06 00:47:21 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-04-22 15:48:17 -07:00
2010-04-22 15:48:17 -07:00
2010-03-30 22:02:32 +09:00
2009-10-12 13:26:39 -07:00
2010-05-14 00:19:28 -07:00
2009-04-27 02:53:49 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-03-30 22:02:32 +09:00
2009-12-03 13:18:01 -08:00
2010-05-03 15:45:52 -07:00
2009-12-03 13:18:01 -08:00
2010-03-30 22:02:32 +09:00
2010-05-17 23:23:10 -07:00
2010-03-30 22:02:32 +09:00
2010-05-10 05:01:31 -07:00
2009-12-02 00:52:31 -08:00
2010-05-20 21:04:44 -07:00
2009-11-09 09:40:57 +01:00
2010-05-14 00:19:28 -07:00
2010-04-13 02:54:17 -07:00
2010-05-17 17:44:36 -07:00
2010-04-30 16:20:39 -07:00
2010-03-30 22:02:32 +09:00
2010-05-10 05:01:31 -07:00
2009-09-01 01:14:07 -07:00
2009-04-29 17:32:34 -07:00
2010-05-14 00:19:28 -07:00
2009-08-30 22:35:11 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-20 23:13:45 -07:00
2009-10-13 03:44:05 -07:00
2010-04-11 14:53:53 -07:00
2010-05-14 00:19:28 -07:00
2010-05-15 23:29:31 -07:00
2010-05-15 23:29:31 -07:00
2010-05-14 03:06:22 -07:00
2010-04-28 10:07:44 -07:00
2010-05-14 00:19:28 -07:00
2010-05-17 22:47:34 -07:00
2009-01-06 11:28:06 +01:00
2010-05-10 05:01:31 -07:00
2010-03-10 07:37:06 -08:00
2010-05-10 05:01:31 -07:00
2010-02-15 09:27:02 -08:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-20 21:04:44 -07:00
2009-12-04 15:39:55 +01:00
2010-05-10 05:01:31 -07:00
2009-02-20 00:38:51 -08:00
2010-03-30 22:02:32 +09:00
2010-05-10 05:01:31 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-17 22:47:34 -07:00
2010-05-14 00:19:28 -07:00
2009-02-02 23:19:50 -08:00
2010-05-14 00:19:28 -07:00
2009-12-03 13:18:01 -08:00
2010-05-17 22:47:34 -07:00
2010-05-17 22:47:34 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-05-06 22:10:40 -07:00
2010-03-30 22:02:32 +09:00
2010-04-27 12:49:13 -07:00
2010-04-13 02:54:16 -07:00
2010-05-10 05:01:31 -07:00
2010-01-13 20:37:01 -08:00
2010-04-14 16:11:33 -07:00
2010-05-17 22:47:34 -07:00
2010-05-10 05:01:31 -07:00
2009-01-21 14:34:08 -08:00
2010-03-30 22:02:32 +09:00
2010-05-10 05:01:31 -07:00
2010-01-06 20:32:38 -08:00
2010-05-06 00:53:53 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-04-06 14:24:53 -07:00
2010-04-14 06:45:44 -07:00
2010-05-14 00:19:28 -07:00
2010-03-30 22:02:32 +09:00
2010-05-10 05:01:31 -07:00
2010-03-30 22:02:32 +09:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-18 23:01:55 -07:00