)]}'
{
  "commit": "001428e4871d6c62f5e16c62df681624d8b480c1",
  "tree": "32d38bcc5664d82ef668eabafe097efb2fbbac17",
  "parents": [
    "74203de067ae5c71526168b597088022836e31d3"
  ],
  "author": {
    "name": "Marc Kleine-Budde",
    "email": "mkl@pengutronix.de",
    "time": "Mon Oct 10 18:38:05 2011 +0200"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@suse.de",
    "time": "Mon Nov 14 11:51:26 2011 -0800"
  },
  "message": "USB: gadgetfs: gadgetfs_disconnect: fix inconsistent lock state\n\nUnder certain circumstances lockdep finds an inconsistent lock state in\ngadgetfs. The problem can be reproduced with a hardware using the\nci13xxx_udc driver and the gadgetfs test program (needs a patch to support\nthe ci13xxx_udc, though):\n\thttp://www.linux-usb.org/gadget/usb.c\nStart the test program, wait to initialize, then press Ctrl+c.\n\nThis patch fixes the following problem by using spin_lock_irqsave()\ninstead of spin_lock().\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\n[ INFO: inconsistent lock state ]\n3.1.0-rc6+ #158\n---------------------------------\ninconsistent {IN-HARDIRQ-W} -\u003e {HARDIRQ-ON-W} usage.\nusb/113 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (\u0026(\u0026dev-\u003elock)-\u003erlock){?.....}, at: [\u003cbf000340\u003e] gadgetfs_disconnect+0x14/0x80 [gadgetfs]\n{IN-HARDIRQ-W} state was registered at:\n  [\u003cc00596b8\u003e] mark_irqflags+0x14c/0x1ac\n  [\u003cc0059bf8\u003e] __lock_acquire+0x4e0/0x8f0\n  [\u003cc005a698\u003e] lock_acquire+0x98/0x1a8\n  [\u003cc02f10e0\u003e] _raw_spin_lock+0x54/0x8c\n  [\u003cbf000340\u003e] gadgetfs_disconnect+0x14/0x80 [gadgetfs]\n  [\u003cc0229104\u003e] _gadget_stop_activity+0xd4/0x154\n  [\u003cc022b130\u003e] isr_reset_handler+0x34/0x1c0\n  [\u003cc022c320\u003e] udc_irq+0x204/0x228\n  [\u003cc0069018\u003e] handle_irq_event_percpu+0x64/0x3a0\n  [\u003cc0069390\u003e] handle_irq_event+0x3c/0x5c\n  [\u003cc006ae5c\u003e] handle_level_irq+0x8c/0x10c\n  [\u003cc0068a34\u003e] generic_handle_irq+0x30/0x44\n  [\u003cc0009b2c\u003e] handle_IRQ+0x30/0x84\n  [\u003cc0008ef8\u003e] __irq_svc+0x38/0x60\n  [\u003cc0009c58\u003e] default_idle+0x30/0x34\n  [\u003cc0009e30\u003e] cpu_idle+0x9c/0xd8\n  [\u003cc04056f4\u003e] start_kernel+0x278/0x2bc\nirq event stamp: 6412\nhardirqs last  enabled at (6412): [\u003cc02f1cd0\u003e] _raw_spin_unlock_irqrestore+0x30/0x5c\nhardirqs last disabled at (6411): [\u003cc02f1278\u003e] _raw_spin_lock_irqsave+0x20/0xa0\nsoftirqs last  enabled at (6381): [\u003cc002833c\u003e] irq_exit+0xa0/0xa8\nsoftirqs last disabled at (6372): [\u003cc002833c\u003e] irq_exit+0xa0/0xa8\n\nother info that might help us debug this:\n Possible unsafe locking scenario:\n\n       CPU0\n       ----\n  lock(\u0026(\u0026dev-\u003elock)-\u003erlock);\n  \u003cInterrupt\u003e\n    lock(\u0026(\u0026dev-\u003elock)-\u003erlock);\n\n *** DEADLOCK ***\n\n1 lock held by usb/113:\n #0:  (udc_lock#2){+.+.+.}, at: [\u003cc02286c0\u003e] usb_gadget_unregister_driver+0x34/0x88\n\nstack backtrace:\n[\u003cc000d41c\u003e] (unwind_backtrace+0x0/0xf0) from [\u003cc0058e98\u003e] (print_usage_bug+0x144/0x1c4)\n[\u003cc0058e98\u003e] (print_usage_bug+0x144/0x1c4) from [\u003cc0059144\u003e] (mark_lock_irq+0x22c/0x274)\n[\u003cc0059144\u003e] (mark_lock_irq+0x22c/0x274) from [\u003cc00592d4\u003e] (mark_lock+0x148/0x3e0)\n[\u003cc00592d4\u003e] (mark_lock+0x148/0x3e0) from [\u003cc0059668\u003e] (mark_irqflags+0xfc/0x1ac)\n[\u003cc0059668\u003e] (mark_irqflags+0xfc/0x1ac) from [\u003cc0059bf8\u003e] (__lock_acquire+0x4e0/0x8f0)\n[\u003cc0059bf8\u003e] (__lock_acquire+0x4e0/0x8f0) from [\u003cc005a698\u003e] (lock_acquire+0x98/0x1a8)\n[\u003cc005a698\u003e] (lock_acquire+0x98/0x1a8) from [\u003cc02f10e0\u003e] (_raw_spin_lock+0x54/0x8c)\n[\u003cc02f10e0\u003e] (_raw_spin_lock+0x54/0x8c) from [\u003cbf000340\u003e] (gadgetfs_disconnect+0x14/0x80 [gadgetfs])\n[\u003cbf000340\u003e] (gadgetfs_disconnect+0x14/0x80 [gadgetfs]) from [\u003cc0229104\u003e] (_gadget_stop_activity+0xd4/0x154)\n[\u003cc0229104\u003e] (_gadget_stop_activity+0xd4/0x154) from [\u003cc0229240\u003e] (ci13xxx_stop+0xbc/0x17c)\n[\u003cc0229240\u003e] (ci13xxx_stop+0xbc/0x17c) from [\u003cc022867c\u003e] (usb_gadget_remove_driver+0x88/0x98)\n[\u003cc022867c\u003e] (usb_gadget_remove_driver+0x88/0x98) from [\u003cc02286f4\u003e] (usb_gadget_unregister_driver+0x68/0x88)\n[\u003cc02286f4\u003e] (usb_gadget_unregister_driver+0x68/0x88) from [\u003cbf0003e8\u003e] (dev_release+0x14/0x48 [gadgetfs])\n[\u003cbf0003e8\u003e] (dev_release+0x14/0x48 [gadgetfs]) from [\u003cc00cc158\u003e] (__fput+0xa4/0x1f0)\n[\u003cc00cc158\u003e] (__fput+0xa4/0x1f0) from [\u003cc00c7f28\u003e] (filp_close+0x5c/0x74)\n[\u003cc00c7f28\u003e] (filp_close+0x5c/0x74) from [\u003cc00c7fe8\u003e] (sys_close+0xa8/0x150)\n[\u003cc00c7fe8\u003e] (sys_close+0xa8/0x150) from [\u003cc00092a0\u003e] (ret_fast_syscall+0x0/0x38)\n\nTested-by: Pavankumar Kondeti \u003cpkondeti@codeaurora.org\u003e\nSigned-off-by: Marc Kleine-Budde \u003cmkl@pengutronix.de\u003e\nSigned-off-by: Felipe Balbi \u003cbalbi@ti.com\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a392ec0d2d5179beebf3923dc6b275001b4961c5",
      "old_mode": 33188,
      "old_path": "drivers/usb/gadget/inode.c",
      "new_id": "6ccae2707e596c3f24d5705495264f0dcfa4f31b",
      "new_mode": 33188,
      "new_path": "drivers/usb/gadget/inode.c"
    }
  ]
}
