Emmanuel Grumbach
7d47618a2a
iwlwifi: move sysfs_create_group to post request firmware
Move the sysfs_create_group to iwl_ucode_callback after we
have safely got the firmware.
The motivation to do this comes from a warning from lockdep which detected
that we request priv->mutex while holding s_active during a sysfs request
(show_statistics in the example copy pasted). The reverse order exists upon
request_firmware: request_firmware which is a sysfs operation
that requires s_active is run under priv->mutex.
This ensures that we don't get sysfs request before we finish to request
the firmware, avoiding this deadlock.
=======================================================
[ INFO: possible circular locking dependency detected ]
-------------------------------------------------------
cat/2595 is trying to acquire lock:
(&priv->mutex){+.+.+.}, at: [<facfa598>] show_statistics+0x48/0x100 [iwlagn]
but task is already holding lock:
(s_active){++++.+}, at: [<c0580ebd>] sysfs_get_active_two+0x1d/0x50
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (s_active){++++.+}:
[<c0489b74>] __lock_acquire+0xc44/0x1230
[<c048a1ed>] lock_acquire+0x8d/0x110
[<c0581499>] sysfs_addrm_finish+0xe9/0x180
[<c057f64a>] sysfs_hash_and_remove+0x4a/0x80
[<c05829d4>] sysfs_remove_group+0x44/0xd0
[<c0714b75>] dpm_sysfs_remove+0x15/0x20
[<c070dac8>] device_del+0x38/0x170
[<c070dc1e>] device_unregister+0x1e/0x60
[<c071838d>] _request_firmware+0x29d/0x550
[<c07186c7>] request_firmware+0x17/0x20
[<fad01bf1>] iwl_mac_start+0xb1/0x1230 [iwlagn]
[<fa46ba06>] ieee80211_open+0x436/0x6f0 [mac80211]
[<c0808cd2>] dev_open+0x92/0xf0
[<c0808b2b>] dev_change_flags+0x7b/0x190
[<c08148e8>] do_setlink+0x178/0x3b0
[<c0815169>] rtnl_setlink+0xf9/0x130
[<c081453b>] rtnetlink_rcv_msg+0x1bb/0x1f0
[<c0827ce6>] netlink_rcv_skb+0x86/0xa0
[<c081436c>] rtnetlink_rcv+0x1c/0x30
[<c08279c3>] netlink_unicast+0x263/0x290
[<c0828768>] netlink_sendmsg+0x1c8/0x2a0
[<c07f85fd>] sock_sendmsg+0xcd/0x100
[<c07f964d>] sys_sendmsg+0x15d/0x290
[<c07f9e6b>] sys_socketcall+0xeb/0x2a0
[<c040ad9f>] sysenter_do_call+0x12/0x38
-> #0 (&priv->mutex){+.+.+.}:
[<c0489f84>] __lock_acquire+0x1054/0x1230
[<c048a1ed>] lock_acquire+0x8d/0x110
[<c08bb358>] __mutex_lock_common+0x58/0x470
[<c08bb84a>] mutex_lock_nested+0x3a/0x50
[<facfa598>] show_statistics+0x48/0x100 [iwlagn]
[<c070d219>] dev_attr_show+0x29/0x50
[<c057fecd>] sysfs_read_file+0xdd/0x190
[<c052880f>] vfs_read+0x9f/0x190
[<c0528d22>] sys_read+0x42/0x70
[<c040ad9f>] sysenter_do_call+0x12/0x38
other info that might help us debug this:
3 locks held by cat/2595:
#0: (&buffer->mutex){+.+.+.}, at: [<c057fe25>] sysfs_read_file+0x35/0x190
#1: (s_active){++++.+}, at: [<c0580ecd>] sysfs_get_active_two+0x2d/0x50
#2: (s_active){++++.+}, at: [<c0580ebd>] sysfs_get_active_two+0x1d/0x50
stack backtrace:
Pid: 2595, comm: cat Not tainted 2.6.33-tp-rc4 #2
Call Trace:
[<c08b99ab>] ? printk+0x1d/0x22
[<c0487752>] print_circular_bug+0xc2/0xd0
[<c0489f84>] __lock_acquire+0x1054/0x1230
[<c0478d81>] ? sched_clock_cpu+0x121/0x180
[<c048a1ed>] lock_acquire+0x8d/0x110
[<facfa598>] ? show_statistics+0x48/0x100 [iwlagn]
[<c08bb358>] __mutex_lock_common+0x58/0x470
[<facfa598>] ? show_statistics+0x48/0x100 [iwlagn]
[<c08bb84a>] mutex_lock_nested+0x3a/0x50
[<facfa598>] ? show_statistics+0x48/0x100 [iwlagn]
[<facfa598>] show_statistics+0x48/0x100 [iwlagn]
[<c0580cf9>] ? sysfs_get_active+0x69/0xb0
[<facfa550>] ? show_statistics+0x0/0x100 [iwlagn]
[<c070d219>] dev_attr_show+0x29/0x50
[<c057fecd>] sysfs_read_file+0xdd/0x190
[<c05ff314>] ? security_file_permission+0x14/0x20
[<c0528242>] ? rw_verify_area+0x62/0xd0
[<c052880f>] vfs_read+0x9f/0x190
[<c047745b>] ? up_read+0x1b/0x30
[<c057fdf0>] ? sysfs_read_file+0x0/0x190
[<c04af3b4>] ? audit_syscall_entry+0x1f4/0x220
[<c0528d22>] sys_read+0x42/0x70
[<c040ad9f>] sysenter_do_call+0x12/0x38
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
2010-06-05 23:02:39 -07: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-06-05 23:02:39 -07: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
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
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
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
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
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
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