From nobody Tue Feb 10 03:37:20 2026 Received: from mail.ispras.ru (mail.ispras.ru [83.149.199.84]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B520127A924; Thu, 2 Oct 2025 20:09:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=83.149.199.84 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759435768; cv=none; b=L9bq5D0FSLulOzJ5rZ0wilrxno4zqdn0Pp+zSIqYQpplEEXzAOlQjqclzB/iUJuNY1rtl/aTZaaFeFyDD+IFUbTreD5DvAdPgi6owGDqCAJBm/zCv7Ov/KKZx4JA1LWqiFfXJkSm7o/uOhWAfEh0b8I3uBL0hH+sBbb9zeghc08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759435768; c=relaxed/simple; bh=Owah0fPebyWeGQ4yZJKcvA6j1KbcQatL+4/cPM8Fnfk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S7vrenB2KA+GMIPS9K7Oi2OuiGWSvbRV1fPB+cn84/bEs7UzoVx53BvYdtrR5D5lJYmj1CTjmiOK2mymwy11f5UusmLKBmLgpzVNK/J5/aF9pBFyOFnGeyDoRvJiYeG8UguLHCWMcbel8Q2BInPbdnGSX9CxHCemYADmX3ZVyiE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ispras.ru; spf=pass smtp.mailfrom=ispras.ru; dkim=pass (1024-bit key) header.d=ispras.ru header.i=@ispras.ru header.b=oIVJHRB1; arc=none smtp.client-ip=83.149.199.84 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ispras.ru Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ispras.ru Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ispras.ru header.i=@ispras.ru header.b="oIVJHRB1" Received: from debian.intra.ispras.ru (unknown [10.10.165.9]) by mail.ispras.ru (Postfix) with ESMTPSA id 7E29E40762EB; Thu, 2 Oct 2025 20:09:17 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.ispras.ru 7E29E40762EB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ispras.ru; s=default; t=1759435757; bh=N8X6qtokggsPGsPa7HhA4JylXkwRkP73j8K7V8mb340=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oIVJHRB1oSMxLpnEvmaecijPC73QT3HqU8b09n/YKtIfXoi3f6+80kKXv8tudoJwz KRsvqtfYu0ULbL36s8Dn6wDVzfhoZ/0myYQo/KcmbjnCyDZPrVgkfDGVrqEloDpyry c10K1F2UmOXNoR7GbzHswtG+Fl0UJjc4HgdILs2Y= From: Fedor Pchelkin To: Ping-Ke Shih , Bitterblue Smith Cc: Fedor Pchelkin , Zong-Zhe Yang , Po-Hao Huang , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org, lvc-project@linuxtesting.org Subject: [PATCH rtw-next v2 2/7] wifi: rtw89: usb: fix leak in rtw89_usb_write_port() Date: Thu, 2 Oct 2025 23:08:47 +0300 Message-ID: <20251002200857.657747-3-pchelkin@ispras.ru> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251002200857.657747-1-pchelkin@ispras.ru> References: <20251002200857.657747-1-pchelkin@ispras.ru> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When there is an attempt to write data and RTW89_FLAG_UNPLUGGED is set, this means device is disconnected and no urb is submitted. Return appropriate error code to the caller to properly free the allocated resources. Found by Linux Verification Center (linuxtesting.org). Fixes: 2135c28be6a8 ("wifi: rtw89: Add usb.{c,h}") Signed-off-by: Fedor Pchelkin Acked-by: Ping-Ke Shih --- drivers/net/wireless/realtek/rtw89/usb.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/usb.c b/drivers/net/wireles= s/realtek/rtw89/usb.c index e8e064cf7e0a..512a46dd9d06 100644 --- a/drivers/net/wireless/realtek/rtw89/usb.c +++ b/drivers/net/wireless/realtek/rtw89/usb.c @@ -256,7 +256,7 @@ static int rtw89_usb_write_port(struct rtw89_dev *rtwde= v, u8 ch_dma, int ret; =20 if (test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) - return 0; + return -ENODEV; =20 urb =3D usb_alloc_urb(0, GFP_ATOMIC); if (!urb) @@ -305,8 +305,9 @@ static void rtw89_usb_ops_tx_kick_off(struct rtw89_dev = *rtwdev, u8 txch) ret =3D rtw89_usb_write_port(rtwdev, txch, skb->data, skb->len, txcb); if (ret) { - rtw89_err(rtwdev, "write port txch %d failed: %d\n", - txch, ret); + if (ret !=3D -ENODEV) + rtw89_err(rtwdev, "write port txch %d failed: %d\n", + txch, ret); =20 skb_dequeue(&txcb->tx_ack_queue); kfree(txcb); --=20 2.51.0