* [PATCH v2] usb: gadget: f_hid: fix device reference leak in hidg_alloc()
@ 2026-04-13 8:12 Guangshuo Li
2026-04-13 10:40 ` Greg Kroah-Hartman
0 siblings, 1 reply; 2+ messages in thread
From: Guangshuo Li @ 2026-04-13 8:12 UTC (permalink / raw)
To: Greg Kroah-Hartman, Marco Crivellari, Johan Hovold, Jiri Kosina,
William Wu, Yuhao Jiang, Ben Hoff, Terry Junge, Guangshuo Li,
Andrzej Pietrasiewicz, John Keeping, Lee Jones, linux-usb,
linux-kernel
Cc: stable
hidg_alloc() initializes hidg->dev with device_initialize() before
calling dev_set_name(). If dev_set_name() fails, the function currently
jumps to err_unlock and returns without calling put_device().
This leaves the device reference unbalanced and prevents hidg_release()
from being called. Calling put_device() here is also safe, since
hidg_release() only frees resources owned by hidg.
Route the dev_set_name() failure path through err_put_device so the
device reference is dropped properly.
Fixes: 89ff3dfac604 ("usb: gadget: f_hid: fix f_hidg lifetime vs cdev")
Cc: stable@vger.kernel.org
Reviewed-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
---
v2:
- correct Fixes tag to 89ff3dfac604
- add Reviewed-by from Johan Hovold
drivers/usb/gadget/function/f_hid.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c
index 3ddfd4f66f0b..2734ebd35bda 100644
--- a/drivers/usb/gadget/function/f_hid.c
+++ b/drivers/usb/gadget/function/f_hid.c
@@ -1610,7 +1610,7 @@ static struct usb_function *hidg_alloc(struct usb_function_instance *fi)
hidg->dev.devt = MKDEV(major, opts->minor);
ret = dev_set_name(&hidg->dev, "hidg%d", opts->minor);
if (ret)
- goto err_unlock;
+ goto err_put_device;
hidg->bInterfaceSubClass = opts->subclass;
hidg->bInterfaceProtocol = opts->protocol;
@@ -1647,7 +1647,6 @@ static struct usb_function *hidg_alloc(struct usb_function_instance *fi)
err_put_device:
put_device(&hidg->dev);
-err_unlock:
mutex_unlock(&opts->lock);
return ERR_PTR(ret);
}
--
2.43.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] usb: gadget: f_hid: fix device reference leak in hidg_alloc()
2026-04-13 8:12 [PATCH v2] usb: gadget: f_hid: fix device reference leak in hidg_alloc() Guangshuo Li
@ 2026-04-13 10:40 ` Greg Kroah-Hartman
0 siblings, 0 replies; 2+ messages in thread
From: Greg Kroah-Hartman @ 2026-04-13 10:40 UTC (permalink / raw)
To: Guangshuo Li
Cc: Marco Crivellari, Johan Hovold, Jiri Kosina, William Wu,
Yuhao Jiang, Ben Hoff, Terry Junge, Andrzej Pietrasiewicz,
John Keeping, Lee Jones, linux-usb, linux-kernel, stable
On Mon, Apr 13, 2026 at 04:12:37PM +0800, Guangshuo Li wrote:
> hidg_alloc() initializes hidg->dev with device_initialize() before
> calling dev_set_name(). If dev_set_name() fails, the function currently
> jumps to err_unlock and returns without calling put_device().
>
> This leaves the device reference unbalanced and prevents hidg_release()
> from being called. Calling put_device() here is also safe, since
> hidg_release() only frees resources owned by hidg.
>
> Route the dev_set_name() failure path through err_put_device so the
> device reference is dropped properly.
>
> Fixes: 89ff3dfac604 ("usb: gadget: f_hid: fix f_hidg lifetime vs cdev")
> Cc: stable@vger.kernel.org
> Reviewed-by: Johan Hovold <johan@kernel.org>
> Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
> ---
> v2:
> - correct Fixes tag to 89ff3dfac604
> - add Reviewed-by from Johan Hovold
As you are using a tool to find/fix these things, you HAVE to mention
that as per our documentation. Please go and read that and then
resubmit all of thes patches that need that attribution added.
thanks,
greg k-h
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-04-13 10:40 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-13 8:12 [PATCH v2] usb: gadget: f_hid: fix device reference leak in hidg_alloc() Guangshuo Li
2026-04-13 10:40 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox