If an error happens in the usb probe path, in rtw_usb_intf_init(), the usb interface reference needs to be properly dropped, otherwise is is incorrectly increased when returning to the USB core. Cc: Ping-Ke Shih Cc: stable Assisted-by: gkh_clanker_2000 Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/realtek/rtw88/usb.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw88/usb.c b/drivers/net/wireless/realtek/rtw88/usb.c index 433b06c8d8a6..36ac20039ce2 100644 --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c @@ -1046,13 +1046,17 @@ static int rtw_usb_intf_init(struct rtw_dev *rtwdev, rtwusb->udev = udev; ret = rtw_usb_parse(rtwdev, intf); - if (ret) + if (ret) { + usb_put_dev(udev); return ret; + } rtwusb->usb_data = kcalloc(RTW_USB_MAX_RXTX_COUNT, sizeof(u32), GFP_KERNEL); - if (!rtwusb->usb_data) + if (!rtwusb->usb_data) { + usb_put_dev(udev); return -ENOMEM; + } usb_set_intfdata(intf, rtwdev->hw); -- 2.53.0