From nobody Mon Feb 9 23:00:04 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 5D19B30C62A; Fri, 17 Oct 2025 10:07:13 +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=1760695635; cv=none; b=OoOCYUHBuiN/2LconKEWaloqydmjiLm8PzWQr5NnE4GxQ0RVa7PCRpEawWHYD8edHlqEmsK7DPWWaB7EI5BHEP+lZ4ftNGGXqa9C9h+mbgiWUrctAZR8qOXw1gKf4XficsxMPMxqhyaJ0qix3kY8/ticrKrgbFxDQx30OsUSGGk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760695635; c=relaxed/simple; bh=Owah0fPebyWeGQ4yZJKcvA6j1KbcQatL+4/cPM8Fnfk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MqQeJ5jIKnuevevfJJ9f7o9JuabkrhjkT1IaADbZOaVnTueEHa2Bwbo7f0YOkXs3XgcHywJ9s0mpY0g4EeRL2KxKemkd6EHb3Kb8O/m9oRCPwBOSwiwylZ0WDPkPeln4O737N0CMZZ+mw0P/WBWVEe93toKL5Ja2UyV7MTrVSZg= 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=gsYhMryw; 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="gsYhMryw" Received: from debian (unknown [5.228.116.177]) by mail.ispras.ru (Postfix) with ESMTPSA id 308B94076733; Fri, 17 Oct 2025 10:07:11 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.ispras.ru 308B94076733 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ispras.ru; s=default; t=1760695631; bh=N8X6qtokggsPGsPa7HhA4JylXkwRkP73j8K7V8mb340=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=gsYhMrywrEyP6jpcIsZIny85t4h/++JwMkTdm66IGYtGLIS6gQcdbF2vXQk9RSzLH uY7UkWxosEUuhzphCbysdZwgH+xzCCWHHepP8RufIzmlnohgIv38xK74C1Z8pQ8oWi QBij2WjPyhLBEl1voyq/Cv5AYlL9EmTeGQw1wuVU= 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 v3 2/9] wifi: rtw89: usb: fix leak in rtw89_usb_write_port() Date: Fri, 17 Oct 2025 13:03:04 +0300 Message-ID: <20251017100658.66581-3-pchelkin@ispras.ru> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20251017100658.66581-1-pchelkin@ispras.ru> References: <20251017100658.66581-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