)]}'
{
  "commit": "de49df58366f88939009d5de06d71a68c701df08",
  "tree": "f1adf2f6f4a96c99b7106c3ca708b27c259117b4",
  "parents": [
    "8b9ade9f74f8a27991ba662cd7544daab6f81544"
  ],
  "author": {
    "name": "Viresh Kumar",
    "email": "viresh.kumar@linaro.org",
    "time": "Mon Aug 19 20:14:29 2013 +0530"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Tue Aug 27 16:17:35 2013 -0700"
  },
  "message": "tty: serial: vt8500: drop uart_port-\u003elock before calling tty_flip_buffer_push()\n\nThe current driver triggers a lockdep warning for if tty_flip_buffer_push() is\ncalled with uart_port-\u003elock locked. This never shows up on UP kernels and comes\nup only on SMP kernels.\n\nCrash looks like this (produced with samsung.c driver):\n\n-----\n[\u003cc0014d58\u003e] (unwind_backtrace+0x0/0xf8) from [\u003cc0011908\u003e] (show_stack+0x10/0x14)\n[\u003cc0011908\u003e] (show_stack+0x10/0x14) from [\u003cc035da34\u003e] (dump_stack+0x6c/0xac)\n[\u003cc035da34\u003e] (dump_stack+0x6c/0xac) from [\u003cc01b59ac\u003e] (do_raw_spin_unlock+0xc4/0xd8)\n[\u003cc01b59ac\u003e] (do_raw_spin_unlock+0xc4/0xd8) from [\u003cc03627e4\u003e] (_raw_spin_unlock_irqrestore+0xc/0)\n[\u003cc03627e4\u003e] (_raw_spin_unlock_irqrestore+0xc/0x38) from [\u003cc020a1a8\u003e] (s3c24xx_serial_rx_chars+0)\n[\u003cc020a1a8\u003e] (s3c24xx_serial_rx_chars+0x12c/0x260) from [\u003cc020aae8\u003e] (s3c64xx_serial_handle_irq+)\n[\u003cc020aae8\u003e] (s3c64xx_serial_handle_irq+0x48/0x60) from [\u003cc006aaa0\u003e] (handle_irq_event_percpu+0x)\n[\u003cc006aaa0\u003e] (handle_irq_event_percpu+0x50/0x194) from [\u003cc006ac20\u003e] (handle_irq_event+0x3c/0x5c)\n[\u003cc006ac20\u003e] (handle_irq_event+0x3c/0x5c) from [\u003cc006d864\u003e] (handle_fasteoi_irq+0x80/0x13c)\n[\u003cc006d864\u003e] (handle_fasteoi_irq+0x80/0x13c) from [\u003cc006a4a4\u003e] (generic_handle_irq+0x20/0x30)\n[\u003cc006a4a4\u003e] (generic_handle_irq+0x20/0x30) from [\u003cc000f454\u003e] (handle_IRQ+0x38/0x94)\n[\u003cc000f454\u003e] (handle_IRQ+0x38/0x94) from [\u003cc0008538\u003e] (gic_handle_irq+0x34/0x68)\n[\u003cc0008538\u003e] (gic_handle_irq+0x34/0x68) from [\u003cc00123c0\u003e] (__irq_svc+0x40/0x70)\nException stack(0xc04cdf70 to 0xc04cdfb8)\ndf60:                                     00000000 00000000 0000166e 00000000\ndf80: c04cc000 c050278f c050278f 00000001 c04d444c 410fc0f4 c03649b0 00000000\ndfa0: 00000001 c04cdfb8 c000f758 c000f75c 60070013 ffffffff\n[\u003cc00123c0\u003e] (__irq_svc+0x40/0x70) from [\u003cc000f75c\u003e] (arch_cpu_idle+0x28/0x30)\n[\u003cc000f75c\u003e] (arch_cpu_idle+0x28/0x30) from [\u003cc0054888\u003e] (cpu_startup_entry+0x5c/0x148)\n[\u003cc0054888\u003e] (cpu_startup_entry+0x5c/0x148) from [\u003cc0497aa4\u003e] (start_kernel+0x334/0x38c)\nBUG: spinlock lockup suspected on CPU#0, kworker/0:1/360\n lock: s3c24xx_serial_ports+0x1d8/0x370, .magic: dead4ead, .owner: \u003cnone\u003e/-1, .owner_cpu: -1\nCPU: 0 PID: 360 Comm: kworker/0:1 Not tainted 3.11.0-rc6-next-20130819-00003-g75485f1 #2\nWorkqueue: events flush_to_ldisc\n[\u003cc0014d58\u003e] (unwind_backtrace+0x0/0xf8) from [\u003cc0011908\u003e] (show_stack+0x10/0x14)\n[\u003cc0011908\u003e] (show_stack+0x10/0x14) from [\u003cc035da34\u003e] (dump_stack+0x6c/0xac)\n[\u003cc035da34\u003e] (dump_stack+0x6c/0xac) from [\u003cc01b581c\u003e] (do_raw_spin_lock+0x100/0x17c)\n[\u003cc01b581c\u003e] (do_raw_spin_lock+0x100/0x17c) from [\u003cc03628a0\u003e] (_raw_spin_lock_irqsave+0x20/0x28)\n[\u003cc03628a0\u003e] (_raw_spin_lock_irqsave+0x20/0x28) from [\u003cc0203224\u003e] (uart_start+0x18/0x34)\n[\u003cc0203224\u003e] (uart_start+0x18/0x34) from [\u003cc01ef890\u003e] (__receive_buf+0x4b4/0x738)\n[\u003cc01ef890\u003e] (__receive_buf+0x4b4/0x738) from [\u003cc01efb44\u003e] (n_tty_receive_buf2+0x30/0x98)\n[\u003cc01efb44\u003e] (n_tty_receive_buf2+0x30/0x98) from [\u003cc01f2ba8\u003e] (flush_to_ldisc+0xec/0x138)\n[\u003cc01f2ba8\u003e] (flush_to_ldisc+0xec/0x138) from [\u003cc0031af0\u003e] (process_one_work+0xfc/0x348)\n[\u003cc0031af0\u003e] (process_one_work+0xfc/0x348) from [\u003cc0032138\u003e] (worker_thread+0x138/0x37c)\n[\u003cc0032138\u003e] (worker_thread+0x138/0x37c) from [\u003cc0037a7c\u003e] (kthread+0xa4/0xb0)\n[\u003cc0037a7c\u003e] (kthread+0xa4/0xb0) from [\u003cc000e5f8\u003e] (ret_from_fork+0x14/0x3c)\n-----\n\nRelease the port lock before calling tty_flip_buffer_push() and reacquire it\nafter the call.\n\nSimilar stuff was already done for few other drivers in the past, like:\n\ncommit 2389b272168ceec056ca1d8a870a97fa9c26e11a\nAuthor: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nDate:   Tue May 29 21:53:50 2007 +0100\n\n    [ARM] 4417/1: Serial: Fix AMBA drivers locking\n\nCc: Tony Prisk \u003clinux@prisktech.co.nz\u003e\nSigned-off-by: Viresh Kumar \u003cviresh.kumar@linaro.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a90bf0440b4ff8c42a4e6c57cb609beba2562a8b",
      "old_mode": 33188,
      "old_path": "drivers/tty/serial/vt8500_serial.c",
      "new_id": "93b697a0de658ddc6769fedbe822b1151fef4bab",
      "new_mode": 33188,
      "new_path": "drivers/tty/serial/vt8500_serial.c"
    }
  ]
}
