)]}'
{
  "commit": "9a2239b1174bdf0952a21ed328cd74240d2dd173",
  "tree": "04082ce82de232a065436ed588edc56eb47018a0",
  "parents": [
    "23a1b2a78705caa2ecaccf8422a1e22eaca59574"
  ],
  "author": {
    "name": "Peter Zijlstra",
    "email": "a.p.zijlstra@chello.nl",
    "time": "Wed Dec 06 20:36:13 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@woody.osdl.org",
    "time": "Thu Dec 07 08:39:32 2006 -0800"
  },
  "message": "[PATCH] lockdep: fix ide/proc interaction\n\n  rmmod/3080 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:\n   (proc_subdir_lock){--..}, at: [\u003cc04a33b0\u003e] remove_proc_entry+0x40/0x191\n\n  and this task is already holding:\n   (ide_lock){++..}, at: [\u003cc05651a2\u003e] ide_unregister_subdriver+0x39/0xc8\n  which would create a new lock dependency:\n   (ide_lock){++..} -\u003e (proc_subdir_lock){--..}\n\n  but this new dependency connects a hard-irq-safe lock:\n   (ide_lock){++..}\n  ... which became hard-irq-safe at:\n    [\u003cc043c458\u003e] lock_acquire+0x4b/0x6b\n    [\u003cc06129d7\u003e] _spin_lock_irqsave+0x22/0x32\n    [\u003cc0567870\u003e] ide_intr+0x17/0x1a9\n    [\u003cc044eb31\u003e] handle_IRQ_event+0x20/0x4d\n    [\u003cc044ebf2\u003e] __do_IRQ+0x94/0xef\n    [\u003cc0406771\u003e] do_IRQ+0x9e/0xbd\n\n  to a hard-irq-unsafe lock:\n   (proc_subdir_lock){--..}\n  ... which became hard-irq-unsafe at:\n  ...  [\u003cc043c458\u003e] lock_acquire+0x4b/0x6b\n    [\u003cc06126ab\u003e] _spin_lock+0x19/0x28\n    [\u003cc04a32f2\u003e] xlate_proc_name+0x1b/0x99\n    [\u003cc04a3547\u003e] proc_create+0x46/0xdf\n    [\u003cc04a3642\u003e] create_proc_entry+0x62/0xa5\n    [\u003cc07c1972\u003e] proc_misc_init+0x1c/0x1d2\n    [\u003cc07c1844\u003e] proc_root_init+0x4c/0xe9\n    [\u003cc07ad703\u003e] start_kernel+0x294/0x3b3\n\nMove ide_remove_proc_entries() out from under ide_lock; there is nothing\nthat indicates that this is needed.\n\nIn specific, the call to ide_add_proc_entries() is unprotected, and there\nis nothing else in the file using the respective -\u003eproc fields. Also the\nlock order around destroy_proc_ide_interface() suggests this.\n\nAlan sayeth:\n\n  proc_ide_write_settings walks the setting list under ide_setting_sem, read\n  ditto.  remove_proc_entry is doing proc side housekeeping.\n\n  Looks fine to me, although that old code is such a mess anything could be\n  going on.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Alan Cox \u003calan@lxorguk.ukuu.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "287a66201150a0bd32432817a4357705b767329c",
      "old_mode": 33188,
      "old_path": "drivers/ide/ide.c",
      "new_id": "16890769dca686dff62ec62bc0c2f741b7ef190c",
      "new_mode": 33188,
      "new_path": "drivers/ide/ide.c"
    }
  ]
}
