2019-11-14 15:02:58

by Oliver Neukum

[permalink] [raw]
Subject: [PATCH] btusb: fix PM leak in error case of setup

If setup() fails a reference for runtime PM has already
been taken. Proper use of the error handling in btusb_open()is needed.
You cannot just return.

Fixes: ace31982585a3 ("Bluetooth: btusb: Add setup callback for chip
init on USB")
Signed-off-by: Oliver Neukum <[email protected]>
---
drivers/bluetooth/btusb.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c
index a9c35ebb30f8..0b5e4c135f78 100644
--- a/drivers/bluetooth/btusb.c
+++ b/drivers/bluetooth/btusb.c
@@ -1200,7 +1200,7 @@ static int btusb_open(struct hci_dev *hdev)
if (data->setup_on_usb) {
err = data->setup_on_usb(hdev);
if (err < 0)
- return err;
+ goto setup_fail;
}

data->intf->needs_remote_wakeup = 1;
@@ -1239,6 +1239,7 @@ static int btusb_open(struct hci_dev *hdev)

failed:
clear_bit(BTUSB_INTR_RUNNING, &data->flags);
+setup_fail:
usb_autopm_put_interface(data->intf);
return err;
}
--
2.16.4


2019-11-15 08:08:04

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH] btusb: fix PM leak in error case of setup

Hi Oliver,

> If setup() fails a reference for runtime PM has already
> been taken. Proper use of the error handling in btusb_open()is needed.
> You cannot just return.
>
> Fixes: ace31982585a3 ("Bluetooth: btusb: Add setup callback for chip
> init on USB")
> Signed-off-by: Oliver Neukum <[email protected]>
> ---
> drivers/bluetooth/btusb.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)

patch has been applied to bluetooth-next tree.

Regards

Marcel