)]}'
{
  "commit": "7d47618a2ade0cb6d8a0b2597029c383c1662fa0",
  "tree": "6d1faddd085fc0ab444affaed93c92bde1ff0ff8",
  "parents": [
    "9edc71b746efeaadc40e668964b76cda81fef386"
  ],
  "author": {
    "name": "Emmanuel Grumbach",
    "email": "emmanuel.grumbach@intel.com",
    "time": "Sun May 23 00:14:08 2010 -0700"
  },
  "committer": {
    "name": "Reinette Chatre",
    "email": "reinette.chatre@intel.com",
    "time": "Sat Jun 05 23:02:39 2010 -0700"
  },
  "message": "iwlwifi: move sysfs_create_group to post request firmware\n\nMove the sysfs_create_group to iwl_ucode_callback after we\nhave safely got the firmware.\n\nThe motivation to do this comes from a warning from lockdep which detected\nthat we request priv-\u003emutex while holding s_active during a sysfs request\n(show_statistics in the example copy pasted). The reverse order exists upon\nrequest_firmware: request_firmware which is a sysfs operation\nthat requires s_active is run under priv-\u003emutex.\n\nThis ensures that we don\u0027t get sysfs request before we finish to request\nthe firmware, avoiding this deadlock.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n[ INFO: possible circular locking dependency detected ]\n-------------------------------------------------------\ncat/2595 is trying to acquire lock:\n (\u0026priv-\u003emutex){+.+.+.}, at: [\u003cfacfa598\u003e] show_statistics+0x48/0x100 [iwlagn]\n\nbut task is already holding lock:\n (s_active){++++.+}, at: [\u003cc0580ebd\u003e] sysfs_get_active_two+0x1d/0x50\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 (s_active){++++.+}:\n       [\u003cc0489b74\u003e] __lock_acquire+0xc44/0x1230\n       [\u003cc048a1ed\u003e] lock_acquire+0x8d/0x110\n       [\u003cc0581499\u003e] sysfs_addrm_finish+0xe9/0x180\n       [\u003cc057f64a\u003e] sysfs_hash_and_remove+0x4a/0x80\n       [\u003cc05829d4\u003e] sysfs_remove_group+0x44/0xd0\n       [\u003cc0714b75\u003e] dpm_sysfs_remove+0x15/0x20\n       [\u003cc070dac8\u003e] device_del+0x38/0x170\n       [\u003cc070dc1e\u003e] device_unregister+0x1e/0x60\n       [\u003cc071838d\u003e] _request_firmware+0x29d/0x550\n       [\u003cc07186c7\u003e] request_firmware+0x17/0x20\n       [\u003cfad01bf1\u003e] iwl_mac_start+0xb1/0x1230 [iwlagn]\n       [\u003cfa46ba06\u003e] ieee80211_open+0x436/0x6f0 [mac80211]\n       [\u003cc0808cd2\u003e] dev_open+0x92/0xf0\n       [\u003cc0808b2b\u003e] dev_change_flags+0x7b/0x190\n       [\u003cc08148e8\u003e] do_setlink+0x178/0x3b0\n       [\u003cc0815169\u003e] rtnl_setlink+0xf9/0x130\n       [\u003cc081453b\u003e] rtnetlink_rcv_msg+0x1bb/0x1f0\n       [\u003cc0827ce6\u003e] netlink_rcv_skb+0x86/0xa0\n       [\u003cc081436c\u003e] rtnetlink_rcv+0x1c/0x30\n       [\u003cc08279c3\u003e] netlink_unicast+0x263/0x290\n       [\u003cc0828768\u003e] netlink_sendmsg+0x1c8/0x2a0\n       [\u003cc07f85fd\u003e] sock_sendmsg+0xcd/0x100\n       [\u003cc07f964d\u003e] sys_sendmsg+0x15d/0x290\n       [\u003cc07f9e6b\u003e] sys_socketcall+0xeb/0x2a0\n       [\u003cc040ad9f\u003e] sysenter_do_call+0x12/0x38\n\n-\u003e #0 (\u0026priv-\u003emutex){+.+.+.}:\n       [\u003cc0489f84\u003e] __lock_acquire+0x1054/0x1230\n       [\u003cc048a1ed\u003e] lock_acquire+0x8d/0x110\n       [\u003cc08bb358\u003e] __mutex_lock_common+0x58/0x470\n       [\u003cc08bb84a\u003e] mutex_lock_nested+0x3a/0x50\n       [\u003cfacfa598\u003e] show_statistics+0x48/0x100 [iwlagn]\n       [\u003cc070d219\u003e] dev_attr_show+0x29/0x50\n       [\u003cc057fecd\u003e] sysfs_read_file+0xdd/0x190\n       [\u003cc052880f\u003e] vfs_read+0x9f/0x190\n       [\u003cc0528d22\u003e] sys_read+0x42/0x70\n       [\u003cc040ad9f\u003e] sysenter_do_call+0x12/0x38\n\nother info that might help us debug this:\n\n3 locks held by cat/2595:\n #0:  (\u0026buffer-\u003emutex){+.+.+.}, at: [\u003cc057fe25\u003e] sysfs_read_file+0x35/0x190\n #1:  (s_active){++++.+}, at: [\u003cc0580ecd\u003e] sysfs_get_active_two+0x2d/0x50\n #2:  (s_active){++++.+}, at: [\u003cc0580ebd\u003e] sysfs_get_active_two+0x1d/0x50\n\nstack backtrace:\nPid: 2595, comm: cat Not tainted 2.6.33-tp-rc4 #2\nCall Trace:\n [\u003cc08b99ab\u003e] ? printk+0x1d/0x22\n [\u003cc0487752\u003e] print_circular_bug+0xc2/0xd0\n [\u003cc0489f84\u003e] __lock_acquire+0x1054/0x1230\n [\u003cc0478d81\u003e] ? sched_clock_cpu+0x121/0x180\n [\u003cc048a1ed\u003e] lock_acquire+0x8d/0x110\n [\u003cfacfa598\u003e] ? show_statistics+0x48/0x100 [iwlagn]\n [\u003cc08bb358\u003e] __mutex_lock_common+0x58/0x470\n [\u003cfacfa598\u003e] ? show_statistics+0x48/0x100 [iwlagn]\n [\u003cc08bb84a\u003e] mutex_lock_nested+0x3a/0x50\n [\u003cfacfa598\u003e] ? show_statistics+0x48/0x100 [iwlagn]\n [\u003cfacfa598\u003e] show_statistics+0x48/0x100 [iwlagn]\n [\u003cc0580cf9\u003e] ? sysfs_get_active+0x69/0xb0\n [\u003cfacfa550\u003e] ? show_statistics+0x0/0x100 [iwlagn]\n [\u003cc070d219\u003e] dev_attr_show+0x29/0x50\n [\u003cc057fecd\u003e] sysfs_read_file+0xdd/0x190\n [\u003cc05ff314\u003e] ? security_file_permission+0x14/0x20\n [\u003cc0528242\u003e] ? rw_verify_area+0x62/0xd0\n [\u003cc052880f\u003e] vfs_read+0x9f/0x190\n [\u003cc047745b\u003e] ? up_read+0x1b/0x30\n [\u003cc057fdf0\u003e] ? sysfs_read_file+0x0/0x190\n [\u003cc04af3b4\u003e] ? audit_syscall_entry+0x1f4/0x220\n [\u003cc0528d22\u003e] sys_read+0x42/0x70\n [\u003cc040ad9f\u003e] sysenter_do_call+0x12/0x38\n\nSigned-off-by: Emmanuel Grumbach \u003cemmanuel.grumbach@intel.com\u003e\nSigned-off-by: Reinette Chatre \u003creinette.chatre@intel.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "aef4f71f1981c3e31461932228bbdb9f3aedf15b",
      "old_mode": 33188,
      "old_path": "drivers/net/wireless/iwlwifi/iwl-agn.c",
      "new_id": "7726e67044c08b91a36d41759b2dfd22c19ae263",
      "new_mode": 33188,
      "new_path": "drivers/net/wireless/iwlwifi/iwl-agn.c"
    }
  ]
}
