]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
usb: renesas_usbhs: Fix a resource leak in usbhs_pipe_malloc()
authorHaoxiang Li <haoxiang_li2024@163.com>
Thu, 4 Dec 2025 13:21:29 +0000 (21:21 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 Dec 2025 13:51:54 +0000 (14:51 +0100)
usbhsp_get_pipe() set pipe's flags to IS_USED. In error paths,
usbhsp_put_pipe() is required to clear pipe's flags to prevent
pipe exhaustion.

Fixes: f1407d5c6624 ("usb: renesas_usbhs: Add Renesas USBHS common code")
Cc: stable <stable@kernel.org>
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
Link: https://patch.msgid.link/20251204132129.109234-1-haoxiang_li2024@163.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/renesas_usbhs/pipe.c

index 75fff2e4cbc65ff64211e95e1990e99d23063d9e..56fc3ff5016fc75bce265cc1cd6610880cac4429 100644 (file)
@@ -713,11 +713,13 @@ struct usbhs_pipe *usbhs_pipe_malloc(struct usbhs_priv *priv,
        /* make sure pipe is not busy */
        ret = usbhsp_pipe_barrier(pipe);
        if (ret < 0) {
+               usbhsp_put_pipe(pipe);
                dev_err(dev, "pipe setup failed %d\n", usbhs_pipe_number(pipe));
                return NULL;
        }
 
        if (usbhsp_setup_pipecfg(pipe, is_host, dir_in, &pipecfg)) {
+               usbhsp_put_pipe(pipe);
                dev_err(dev, "can't setup pipe\n");
                return NULL;
        }