Skip to content

Commit

Permalink
Bluetooth: hci_nokia: prevent crash on module removal
Browse files Browse the repository at this point in the history
Only cancel any ongoing work after making sure, that no new work
can be scheduled. This fixes a race condition in the remove handler.

Signed-off-by: Ian Molton <ian@mnementh.co.uk>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
  • Loading branch information
Ian Molton authored and Marcel Holtmann committed Jul 20, 2017
1 parent 2193a98 commit ca2eae7
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/bluetooth/hci_nokia.c
Original file line number Diff line number Diff line change
Expand Up @@ -770,10 +770,12 @@ static void nokia_bluetooth_serdev_remove(struct serdev_device *serdev)
struct hci_uart *hu = &btdev->hu;
struct hci_dev *hdev = hu->hdev;

cancel_work_sync(&hu->write_work);

hci_unregister_dev(hdev);
hci_free_dev(hdev);

cancel_work_sync(&hu->write_work);

hu->proto->close(hu);

pm_runtime_disable(&btdev->serdev->dev);
Expand Down

0 comments on commit ca2eae7

Please sign in to comment.