)]}'
{
  "commit": "485f1eff73a7b932fd3abb0dfcf804e1a1f59025",
  "tree": "9219b988d9662957ba9382761cca6d08a3273abd",
  "parents": [
    "1038a00b458997661bcd0e780a24dc280a8841fc"
  ],
  "author": {
    "name": "Marcel Holtmann",
    "email": "marcel@holtmann.org",
    "time": "Wed Feb 03 15:52:18 2010 -0800"
  },
  "committer": {
    "name": "Marcel Holtmann",
    "email": "marcel@holtmann.org",
    "time": "Wed Feb 03 15:52:18 2010 -0800"
  },
  "message": "Bluetooth: Fix sleeping function in RFCOMM within invalid context\n\nWith the commit 9e726b17422bade75fba94e625cd35fd1353e682 the\nrfcomm_session_put() gets accidentially called from a timeout\ncallback and results in this:\n\nBUG: sleeping function called from invalid context at net/core/sock.c:1897\nin_atomic(): 1, irqs_disabled(): 0, pid: 0, name: swapper\nPid: 0, comm: swapper Tainted: P           2.6.32 #31\nCall Trace:\n \u003cIRQ\u003e  [\u003cffffffff81036455\u003e] __might_sleep+0xf8/0xfa\n [\u003cffffffff8138ef1d\u003e] lock_sock_nested+0x29/0xc4\n [\u003cffffffffa03921b3\u003e] lock_sock+0xb/0xd [l2cap]\n [\u003cffffffffa03948e6\u003e] l2cap_sock_shutdown+0x1c/0x76 [l2cap]\n [\u003cffffffff8106adea\u003e] ? clockevents_program_event+0x75/0x7e\n [\u003cffffffff8106bea2\u003e] ? tick_dev_program_event+0x37/0xa5\n [\u003cffffffffa0394967\u003e] l2cap_sock_release+0x27/0x67 [l2cap]\n [\u003cffffffff8138c971\u003e] sock_release+0x1a/0x67\n [\u003cffffffffa03d2492\u003e] rfcomm_session_del+0x34/0x53 [rfcomm]\n [\u003cffffffffa03d24c5\u003e] rfcomm_session_put+0x14/0x16 [rfcomm]\n [\u003cffffffffa03d28b4\u003e] rfcomm_session_timeout+0xe/0x1a [rfcomm]\n [\u003cffffffff810554a8\u003e] run_timer_softirq+0x1e2/0x29a\n [\u003cffffffffa03d28a6\u003e] ? rfcomm_session_timeout+0x0/0x1a [rfcomm]\n [\u003cffffffff8104e0f6\u003e] __do_softirq+0xfe/0x1c5\n [\u003cffffffff8100e8ce\u003e] ? timer_interrupt+0x1a/0x21\n [\u003cffffffff8100cc4c\u003e] call_softirq+0x1c/0x28\n [\u003cffffffff8100e05b\u003e] do_softirq+0x33/0x6b\n [\u003cffffffff8104daf6\u003e] irq_exit+0x36/0x85\n [\u003cffffffff8100d7a9\u003e] do_IRQ+0xa6/0xbd\n [\u003cffffffff8100c493\u003e] ret_from_intr+0x0/0xa\n \u003cEOI\u003e  [\u003cffffffff812585b3\u003e] ? acpi_idle_enter_bm+0x269/0x294\n [\u003cffffffff812585a9\u003e] ? acpi_idle_enter_bm+0x25f/0x294\n [\u003cffffffff81373ddc\u003e] ? cpuidle_idle_call+0x97/0x107\n [\u003cffffffff8100aca0\u003e] ? cpu_idle+0x53/0xaa\n [\u003cffffffff81429006\u003e] ? rest_init+0x7a/0x7c\n [\u003cffffffff8177bc8c\u003e] ? start_kernel+0x389/0x394\n [\u003cffffffff8177b29c\u003e] ? x86_64_start_reservations+0xac/0xb0\n [\u003cffffffff8177b384\u003e] ? x86_64_start_kernel+0xe4/0xeb\n\nTo fix this, the rfcomm_session_put() needs to be moved out of\nrfcomm_session_timeout() into rfcomm_process_sessions(). In that\ncontext it is perfectly fine to sleep and disconnect the socket.\n\nSigned-off-by: Marcel Holtmann \u003cmarcel@holtmann.org\u003e\nTested-by: David John \u003cdavidjon@xenontk.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fc5ee3296e224f4144a08ddc2ba0f01bb6b31895",
      "old_mode": 33188,
      "old_path": "net/bluetooth/rfcomm/core.c",
      "new_id": "2b506373957ab90ded8d435b6b7bb913b2b5a34e",
      "new_mode": 33188,
      "new_path": "net/bluetooth/rfcomm/core.c"
    }
  ]
}
