From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 61F9333858B; Mon, 20 Apr 2026 16:11:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776701468; cv=none; b=Uq4BYlEqy4008XtlIY7VKC5Yn+sF/dfw05ZII9fdO2JDN4BXH4J/oYoHVs3xNNJuGZuGKVTbgU0DHzdUN/RMC08DG4on39NPfMFnB3U1WhuwxN38vByqiPuEt3SP2kVx3EPcPHnEnp1d5WcDRUVNeIyyXT35ft1KJTI85KqVZ/U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776701468; c=relaxed/simple; bh=B5KKIjrKmfkJq+cb41jSsBTQNVrJifHKOXiqaZu+uJ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BaioxJFqYpSdF3H5RGRuMjbaa0yYUmYps90UyafasPLYr3nu7X6KKvgYiVeLviLhFkXoKgdgpkaBvsjuZI401EKHxE6nCptl8dj4AWkGSyA313UIAOirll+y+cNh+185h7cMupYxLJK7yNrZurhTv6nq6UAJLYbTBoTswszeSpo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=jtwqQyq7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="jtwqQyq7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 92EFCC19425; Mon, 20 Apr 2026 16:11:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1776701467; bh=B5KKIjrKmfkJq+cb41jSsBTQNVrJifHKOXiqaZu+uJ0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jtwqQyq79brpaZCMDxIfp2hS56kIsVKRqRNh3PMTQv0lsaYWMVk+zm6xE33+g/CHq MiqPVfwcX/cd9S6Yb9yN0CU+KJHy3pPBWmvDnquyY6C7u7p3IgsZYakxXJPE7OZ89d Zm32pLGz+oudGlm7T39nFuQYuVsZW6VogDL2f4DY= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Sascha Hauer , Johan Hovold , Ping-Ke Shih Subject: [PATCH 6.12 118/162] wifi: rtw88: fix device leak on probe failure Date: Mon, 20 Apr 2026 17:42:30 +0200 Message-ID: <20260420153931.315878842@linuxfoundation.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260420153927.006696811@linuxfoundation.org> References: <20260420153927.006696811@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Johan Hovold commit bbb15e71156cd9f5e1869eee7207a06ea8e96c39 upstream. Driver core holds a reference to the USB interface and its parent USB device while the interface is bound to a driver and there is no need to take additional references unless the structures are needed after disconnect. This driver takes a reference to the USB device during probe but does not to release it on all probe errors (e.g. when descriptor parsing fails). Drop the redundant device reference to fix the leak, reduce cargo culting, make it easier to spot drivers where an extra reference is needed, and reduce the risk of further memory leaks. Fixes: a82dfd33d123 ("wifi: rtw88: Add common USB chip support") Reported-by: Greg Kroah-Hartman Link: https://lore.kernel.org/netdev/2026022319-turbofan-darkened-206d@gregkh/ Cc: stable@vger.kernel.org # 6.2 Cc: Sascha Hauer Signed-off-by: Johan Hovold Signed-off-by: Ping-Ke Shih Link: https://patch.msgid.link/20260306085144.12064-19-johan@kernel.org Signed-off-by: Greg Kroah-Hartman --- drivers/net/wireless/realtek/rtw88/usb.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) --- a/drivers/net/wireless/realtek/rtw88/usb.c +++ b/drivers/net/wireless/realtek/rtw88/usb.c @@ -953,7 +953,7 @@ static int rtw_usb_intf_init(struct rtw_ struct usb_interface *intf) { struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); - struct usb_device *udev = usb_get_dev(interface_to_usbdev(intf)); + struct usb_device *udev = interface_to_usbdev(intf); int ret; rtwusb->udev = udev; @@ -979,7 +979,6 @@ static void rtw_usb_intf_deinit(struct r { struct rtw_usb *rtwusb = rtw_get_usb_priv(rtwdev); - usb_put_dev(rtwusb->udev); kfree(rtwusb->usb_data); usb_set_intfdata(intf, NULL); }