Forwarded: Re: [syzbot] [net?] [usb?] memory leak in rtl8150_set_multicast

syzbot posted 1 patch 1 day, 14 hours ago
drivers/net/usb/rtl8150.c | 2 ++
1 file changed, 2 insertions(+)
Forwarded: Re: [syzbot] [net?] [usb?] memory leak in rtl8150_set_multicast
Posted by syzbot 1 day, 14 hours ago
For archival purposes, forwarding an incoming command email to
linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com.

***

Subject: Re: [syzbot] [net?] [usb?] memory leak in rtl8150_set_multicast
Author: rakagunarto@gmail.com

#syz test

async_set_registers() does not free the urb and req on the
usb_submit_urb() call fail path. Fix by freeing both objects.

Reported-by: syzbot+8dd915c7cb0490fc8c52@syzkaller.appspotmail.com
Signed-off-by: Raka Gunarto <rakagunarto@gmail.com>
---
 drivers/net/usb/rtl8150.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
index 278e6cb6f4..0f6c700a85 100644
--- a/drivers/net/usb/rtl8150.c
+++ b/drivers/net/usb/rtl8150.c
@@ -211,6 +211,8 @@ static int async_set_registers(rtl8150_t *dev, u16
indx, u16 size, u16 reg)
                if (res == -ENODEV)
                        netif_device_detach(dev->netdev);
                dev_err(&dev->udev->dev, "%s failed with %d\n", __func__, res);
+               usb_free_urb(async_urb);
+               kfree(req);
        }
        return res;
 }
--
2.25.1

On Tue, Dec 16, 2025 at 11:23 PM Raka Gunarto <rakagunarto@gmail.com> wrote:
>
> async_set_registers() does not free the urb and req on the
> usb_submit_urb() call fail path. Fix by freeing both objects.
>
> Reported-by: syzbot+8dd915c7cb0490fc8c52@syzkaller.appspotmail.com
> Signed-off-by: Raka Gunarto <rakagunarto@gmail.com>
> ---
>  drivers/net/usb/rtl8150.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/usb/rtl8150.c b/drivers/net/usb/rtl8150.c
> index 278e6cb6f4..0f6c700a85 100644
> --- a/drivers/net/usb/rtl8150.c
> +++ b/drivers/net/usb/rtl8150.c
> @@ -211,6 +211,8 @@ static int async_set_registers(rtl8150_t *dev, u16
> indx, u16 size, u16 reg)
>                 if (res == -ENODEV)
>                         netif_device_detach(dev->netdev);
>                 dev_err(&dev->udev->dev, "%s failed with %d\n", __func__, res);
> +               usb_free_urb(async_urb);
> +               kfree(req);
>         }
>         return res;
>  }
> --
> 2.25.1