Context |
Check |
Description |
tedd_an/pre-ci_am |
success
|
Success
|
tedd_an/checkpatch |
success
|
Checkpatch PASS
|
tedd_an/gitlint |
success
|
Gitlint PASS
|
tedd_an/subjectprefix |
success
|
PASS
|
tedd_an/buildkernel |
success
|
Build Kernel PASS
|
tedd_an/buildkernel32 |
success
|
Build Kernel32 PASS
|
tedd_an/incremental_build |
success
|
Pass
|
tedd_an/testrunnersetup |
success
|
Test Runner Setup PASS
|
tedd_an/testrunnerl2cap-tester |
success
|
Total: 40, Passed: 40 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunneriso-tester |
success
|
Total: 55, Passed: 55 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunnerbnep-tester |
success
|
Total: 1, Passed: 1 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunnermgmt-tester |
success
|
Total: 494, Passed: 494 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunnerrfcomm-tester |
success
|
Total: 11, Passed: 11 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunnersco-tester |
success
|
Total: 12, Passed: 12 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunnerioctl-tester |
success
|
Total: 28, Passed: 28 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunnermesh-tester |
success
|
Total: 10, Passed: 10 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunnersmp-tester |
success
|
Total: 8, Passed: 8 (100.0%), Failed: 0, Not Run: 0
|
tedd_an/testrunneruserchan-tester |
success
|
Total: 4, Passed: 4 (100.0%), Failed: 0, Not Run: 0
|
@@ -2660,7 +2660,7 @@ int hci_register_dev(struct hci_dev *hdev)
error = hci_register_suspend_notifier(hdev);
if (error)
- goto err_wqueue;
+ goto err_hdev;
queue_work(hdev->req_workqueue, &hdev->power_on);
@@ -2669,6 +2669,14 @@ int hci_register_dev(struct hci_dev *hdev)
return id;
+err_hdev:
+ hci_dev_put(hdev);
+ if (hdev->rfkill) {
+ rfkill_unregister(hdev->rfkill);
+ rfkill_destroy(hdev->rfkill);
+ hdev->rfkill = NULL;
+ }
+ device_del(&hdev->dev);
err_wqueue:
debugfs_remove_recursive(hdev->debugfs);
destroy_workqueue(hdev->workqueue);
If hci_register_suspend_notifier() returns error, the hdev need to be put and deleted and rfkill need be unregistered and destroyed to avoid leaks. Fixes: 9952d90ea288 ("Bluetooth: Handle PM_SUSPEND_PREPARE and PM_POST_SUSPEND") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> --- v1 -> v2: Add rfkill_destroy(). --- net/bluetooth/hci_core.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)