2022-04-06 14:35:09

by Hangyu Hua

[permalink] [raw]
Subject: [PATCH] char: xillybus: fix a refcount leak in cleanup_dev()

usb_get_dev is called in xillyusb_probe. So it is better to call
usb_put_dev before xdev is released.

Signed-off-by: Hangyu Hua <[email protected]>
---
drivers/char/xillybus/xillyusb.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/char/xillybus/xillyusb.c b/drivers/char/xillybus/xillyusb.c
index dc3551796e5e..39bcbfd908b4 100644
--- a/drivers/char/xillybus/xillyusb.c
+++ b/drivers/char/xillybus/xillyusb.c
@@ -549,6 +549,7 @@ static void cleanup_dev(struct kref *kref)
if (xdev->workq)
destroy_workqueue(xdev->workq);

+ usb_put_dev(xdev->udev);
kfree(xdev->channels); /* Argument may be NULL, and that's fine */
kfree(xdev);
}
--
2.25.1


2022-04-06 17:18:47

by Eli Billauer

[permalink] [raw]
Subject: Re: [PATCH] char: xillybus: fix a refcount leak in cleanup_dev()

I stand corrected. Thanks a lot.

Eli

Acked-by: Eli Billauer <[email protected]>

On 06/04/22 10:57, Hangyu Hua wrote:
> usb_get_dev is called in xillyusb_probe. So it is better to call
> usb_put_dev before xdev is released.
>
> Signed-off-by: Hangyu Hua<[email protected]>
> ---
> drivers/char/xillybus/xillyusb.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/char/xillybus/xillyusb.c b/drivers/char/xillybus/xillyusb.c
> index dc3551796e5e..39bcbfd908b4 100644
> --- a/drivers/char/xillybus/xillyusb.c
> +++ b/drivers/char/xillybus/xillyusb.c
> @@ -549,6 +549,7 @@ static void cleanup_dev(struct kref *kref)
> if (xdev->workq)
> destroy_workqueue(xdev->workq);
>
> + usb_put_dev(xdev->udev);
> kfree(xdev->channels); /* Argument may be NULL, and that's fine */
> kfree(xdev);
> }
>