summaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth/btusb.c
diff options
context:
space:
mode:
authorJiri Slaby2016-05-13 10:38:49 +0200
committerMarcel Holtmann2016-05-13 16:50:23 +0200
commitbf389cabb3b8079c23f9762e62b05f291e2d5e99 (patch)
treecdabbad6ea9f84aa6549672934f1fcf5eed3fbcc /drivers/bluetooth/btusb.c
parentudp: Resolve NULL pointer dereference over flow-based vxlan device (diff)
downloadkernel-qcow2-linux-bf389cabb3b8079c23f9762e62b05f291e2d5e99.tar.gz
kernel-qcow2-linux-bf389cabb3b8079c23f9762e62b05f291e2d5e99.tar.xz
kernel-qcow2-linux-bf389cabb3b8079c23f9762e62b05f291e2d5e99.zip
Bluetooth: fix power_on vs close race
With all the latest fixes applied, I am still able to reproduce this (and other) warning(s): WARNING: CPU: 1 PID: 19684 at ../kernel/workqueue.c:4092 destroy_workqueue+0x70a/0x770() ... Call Trace: [<ffffffff819fee81>] ? dump_stack+0xb3/0x112 [<ffffffff8117377e>] ? warn_slowpath_common+0xde/0x140 [<ffffffff811ce68a>] ? destroy_workqueue+0x70a/0x770 [<ffffffff811739ae>] ? warn_slowpath_null+0x2e/0x40 [<ffffffff811ce68a>] ? destroy_workqueue+0x70a/0x770 [<ffffffffa0c944c9>] ? hci_unregister_dev+0x2a9/0x720 [bluetooth] [<ffffffffa0b301db>] ? vhci_release+0x7b/0xf0 [hci_vhci] [<ffffffffa0b30160>] ? vhci_flush+0x50/0x50 [hci_vhci] [<ffffffff8117cd73>] ? do_exit+0x863/0x2b90 This is due to race present in the hci_unregister_dev path. hdev->power_on work races with hci_dev_do_close. One tries to open, the other tries to close, leading to warning like the above. (Another example is a warning in kobject_get or kobject_put depending on who wins the race.) Fix this by switching those two racers to ensure hdev->power_on never triggers while hci_dev_do_close is in progress. Signed-off-by: Jiri Slaby <jslaby@suse.cz> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/bluetooth/btusb.c')
0 files changed, 0 insertions, 0 deletions