From nobody Sun Feb 8 18:31:19 2026 Received: from cvsmtppost14.nm.naver.com (cvsmtppost14.nm.naver.com [114.111.35.106]) (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 1A2E127FD5A for ; Thu, 22 Jan 2026 04:25:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=114.111.35.106 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769055912; cv=none; b=Wmhe3Bw7C+WiRGKjddDDfjtDWTbf4A4+yB+ghwQru6tJgAPCbIvZq2xlAlsC5Wpf3ldTMwE5Rarqt6F+hNaZf3Yqpef7n2BRNd3+G/IkC+V0yw6+zx7q550WQxNKdMawurDs61/27HemJj2ROG0ZBNR2O6O+MINDSUVREoR7gTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769055912; c=relaxed/simple; bh=bRNsrv0xQH3OBNg+NeeilOHwmMfyNc0O7Gly4FJ/9AE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q4+xczYVBYWqUoKkwqS2rFvRMrgndfE2UQGZQNuEx4RGrnvaROvl2PH5TZSe0A40llA59MDoT8aOl3wYoYQe1DuvwTECicW+SRr6HzJ7oj8vuvhQJrgl3HrAxWJ06DE1T43EsUSJkpH3MBNveEXUAx4Gi0Sb8jaI4fFshtAYQBk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=naver.com; spf=pass smtp.mailfrom=naver.com; dkim=pass (2048-bit key) header.d=naver.com header.i=@naver.com header.b=r/Tcse6o; arc=none smtp.client-ip=114.111.35.106 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=naver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=naver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=naver.com header.i=@naver.com header.b="r/Tcse6o" Received: from cvsendbo036.nm ([10.112.24.44]) by cvsmtppost14.nm.naver.com with ESMTP id VL0YiJm7RdC0VWJUjmO7hw for ; Thu, 22 Jan 2026 04:15:01 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=naver.com; s=s20171208; t=1769055301; bh=bRNsrv0xQH3OBNg+NeeilOHwmMfyNc0O7Gly4FJ/9AE=; h=From:To:Subject:Date:Message-ID:From:Subject:Feedback-ID: X-Works-Security; b=r/Tcse6onKXsvV0Gte7oY+7wQNEOazg336IyLfHtsNOSX2YvXOTw1wrr/vBzClHSw 5nWdfyWkfpY0Z3fo5tTBepacSvxVV9+yahby76BieEj6M4P6PhpXNKop6ZaY9P1JNJ NWAYai0IilPVgXZWX6EhlSJ1IaTPdwSL86bD3AMPcdWAkHR4mwKbKMorfUEIygN6fV gY30YwZq+NO9qMT8jsVAZb808PXjc/JiRORwyvYdaB+KwoH2LXGJWjrVW16Sv/bGL9 6BuKH8+kTdmAofrMusabe23pEPMYUVQz6dOqiEy3IOg9563pyWwgGYM/296sGyMCQy 360BPO7I5o/zw== X-Session-ID: 8YxrCQB6QYu4N+rEKha2cA X-Works-Send-Opt: LdYwjAJYjHmZaAKqKBmmKxbwKqpYkEljxBmwjAg= X-Works-Smtp-Source: lwYZKAvrFqJZ+HmmKAvZ+6E= Received: from JMW-Ubuntu.. ([14.38.141.199]) by mvnsmtp02.nm.naver.com with ESMTP id 8YxrCQB6QYu4N+rEKha2cA for (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 22 Jan 2026 04:15:00 -0000 From: Minu Jin To: gregkh@linuxfoundation.org Cc: andriy.shevchenko@linux.intel.com, abrahamadekunle50@gmail.com, zxcv2569763104@gmail.com, milospuric856@gmail.com, karanja99erick@gmail.com, weibu@redadmin.org, dan.carpenter@linaro.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Minu Jin Subject: [PATCH v5 1/3] staging: rtl8723bs: change return type of _rtw_pktfile_read to int Date: Thu, 22 Jan 2026 13:14:48 +0900 Message-ID: <20260122041450.2325560-2-s9430939@naver.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260122041450.2325560-1-s9430939@naver.com> References: <20260122041450.2325560-1-s9430939@naver.com> 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" The current return type of _rtw_pktfile_read() is uint, which makes it impossible to propagate negative error codes from internal calls (skb_copy_bits()). In preparation for returning proper error codes (eg, skb_copy_bits return -EFAULT when error occurs) when data is insufficient or copying fails, change the function's return type to int. Additionally, update the type of the 'rlen' parameter, 'len' variable from 'uint' to 'unsigned int' to comply with the kernel coding style as suggested by Andy Shevchenko. Signed-off-by: Minu Jin --- drivers/staging/rtl8723bs/include/xmit_osdep.h | 2 +- drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/staging/rtl8723bs/include/xmit_osdep.h b/drivers/stagi= ng/rtl8723bs/include/xmit_osdep.h index 8704dced593a..880344bffe2f 100644 --- a/drivers/staging/rtl8723bs/include/xmit_osdep.h +++ b/drivers/staging/rtl8723bs/include/xmit_osdep.h @@ -35,7 +35,7 @@ void rtw_os_xmit_resource_free(struct adapter *padapter, = struct xmit_buf *pxmitb =20 extern uint rtw_remainder_len(struct pkt_file *pfile); extern void _rtw_open_pktfile(struct sk_buff *pkt, struct pkt_file *pfile); -extern uint _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, uint rlen); +int _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, unsigned int rlen); extern signed int rtw_endofpktfile(struct pkt_file *pfile); =20 extern void rtw_os_pkt_complete(struct adapter *padapter, struct sk_buff *= pkt); diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/stagin= g/rtl8723bs/os_dep/xmit_linux.c index 944b9c724b32..ea54a573e025 100644 --- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c +++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c @@ -21,15 +21,19 @@ void _rtw_open_pktfile(struct sk_buff *pktptr, struct p= kt_file *pfile) pfile->cur_buffer =3D pfile->buf_start; } =20 -uint _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, uint rlen) +int _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, unsigned int rlen) { - uint len =3D 0; + unsigned int len; + int ret; =20 len =3D rtw_remainder_len(pfile); - len =3D (rlen > len) ? len : rlen; + len =3D (rlen > len) ? len : rlen; =20 - if (rmem) - skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len, rmem, len); + if (rmem) { + ret =3D skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len, rmem,= len); + if (ret < 0) + return ret; + } =20 pfile->cur_addr +=3D len; pfile->pkt_len -=3D len; --=20 2.43.0 From nobody Sun Feb 8 18:31:19 2026 Received: from cvsmtppost20.nm.naver.com (cvsmtppost20.nm.naver.com [114.111.35.236]) (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 10E75423A94 for ; Thu, 22 Jan 2026 04:15:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=114.111.35.236 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769055318; cv=none; b=IPfqVPBedTAPYM8gJH8G3ftN6eclvrIoKTElm+G6nnwWHuhNHOvfbw0HbV+4ASq93b1UA+BBDAerhSfPmyjsVTg4+fWujvnJxUeYf/MgSwKEh8LT56fpr5lzT76LHdASab2BeRAtTF4nTCv7Q1lQa6expR9EpTscRg1V8YpkA/A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769055318; c=relaxed/simple; bh=kkI5UapEQb3QPANt6D1BU4YNEvmEAUysX82KHCmUzc0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EdCib5cRiiq50yI3Jzuz/nxMCuw+MskxUzSYxEYtxn6EXgcmia58ubGHoXQUSyyTUNwzdpnRY6F291v+RXOYAdFk2lnvCXpHLw0pmpWqM3MGEIq2T1M9M1jZfLoDfvBQ08Jqbmv8sxkh5YDaxatfBrHZrGKrlvxmrntEKRFA5Ho= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=naver.com; spf=pass smtp.mailfrom=naver.com; dkim=pass (2048-bit key) header.d=naver.com header.i=@naver.com header.b=MVf+FSWH; arc=none smtp.client-ip=114.111.35.236 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=naver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=naver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=naver.com header.i=@naver.com header.b="MVf+FSWH" Received: from cvsendbo002.nm ([10.112.20.42]) by cvsmtppost20.nm.naver.com with ESMTP id H1f29s4xQvuoohxtxECgVw for ; Thu, 22 Jan 2026 04:15:06 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=naver.com; s=s20171208; t=1769055306; bh=kkI5UapEQb3QPANt6D1BU4YNEvmEAUysX82KHCmUzc0=; h=From:To:Subject:Date:Message-ID:From:Subject:Feedback-ID: X-Works-Security; b=MVf+FSWH9/kXABlYopj4XpxK/e+5j8coTo2IeUumslAszxcoUp9LzwejzT1Dk+F8A SKdQ1S6ImFR8nUlowjouLhlc6vH5B9g9YjhcEdRSCnvrs3SXe0t0d71TPhVPI6yoTz 9JudXaSb5gEUD7DzTK39HN/DW3dyALWWHEYTfSXuzG06w/7Dw7jb+YzsDF0eMWFjDT N7m0zzjh3hxLZctt20wQYmIxkbLzLT58QtfsH1HWB2pLw/mbtU4OfNDqKlr7f4zV4E xzu+cNJGyK3/FAFxx46C2T03dUmXPYiYp2Vt1jVkstfIyjVHfmE3cAV+sNQRsD1IhE 7Kv+wIdbXsMpA== X-Session-ID: iCm-m4TbRtSL0qn0icotzA X-Works-Send-Opt: LdYwjAJYjHmZaAKqKBmmKxbwKqpYkEljxBmwjAg= X-Works-Smtp-Source: lqKZKAvrFqJZ+Hm9KAvZ+6E= Received: from JMW-Ubuntu.. ([14.38.141.199]) by mvnsmtp02.nm.naver.com with ESMTP id iCm-m4TbRtSL0qn0icotzA for (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 22 Jan 2026 04:15:05 -0000 From: Minu Jin To: gregkh@linuxfoundation.org Cc: andriy.shevchenko@linux.intel.com, abrahamadekunle50@gmail.com, zxcv2569763104@gmail.com, milospuric856@gmail.com, karanja99erick@gmail.com, weibu@redadmin.org, dan.carpenter@linaro.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Minu Jin Subject: [PATCH v5 2/3] staging: rtl8723bs: update callers to handle negative error codes Date: Thu, 22 Jan 2026 13:14:49 +0900 Message-ID: <20260122041450.2325560-3-s9430939@naver.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260122041450.2325560-1-s9430939@naver.com> References: <20260122041450.2325560-1-s9430939@naver.com> 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" Currently, several callers of _rtw_pktfile_read() ignore its return value. As _rtw_pktfile_read() is updated to return negative error codes on failure, these return values must be checked to prevent silent failures. To address this, this patch implements a proper error propagation mechanism: 1. Add missing error checks: Insert 'if (ret < 0)' checks immediately after _rtw_pktfile_read() calls in set_qos(), update_attrib(), and rtw_xmitframe_coalesce(). This ensures that any negative error code is caught and returned. 2. Enable error propagation: Update set_qos() return type from void to int to pass these error codes up the stack instead of swallowing them. 3. Update upper-layer handling: Modify callers like rtw_xmit() and xmit_xmitframes() to check for '!=3D _SUCCESS' instead of '=3D=3D _FAIL'. This allows them to catch both generic failures (0) and the newly propagated negative error codes from their respective callees (update_attrib and rtw_xmitframe_coalesce). Specific changes include: - set_qos(): Change return type to int and add check for negative returns. - update_attrib(), rtw_xmitframe_coalesce(): Add check for negative returns. - rtw_xmit(), xmit_xmitframes(): Update error check logic to '!=3D _SUCCESS'. Signed-off-by: Minu Jin --- drivers/staging/rtl8723bs/core/rtw_xmit.c | 44 ++++++++++++++----- .../staging/rtl8723bs/hal/rtl8723bs_xmit.c | 6 +-- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/drivers/staging/rtl8723bs/core/rtw_xmit.c b/drivers/staging/rt= l8723bs/core/rtw_xmit.c index 21690857fd62..13eb0e3eae62 100644 --- a/drivers/staging/rtl8723bs/core/rtw_xmit.c +++ b/drivers/staging/rtl8723bs/core/rtw_xmit.c @@ -596,23 +596,31 @@ u8 qos_acm(u8 acm_mask, u8 priority) return priority; } =20 -static void set_qos(struct pkt_file *ppktfile, struct pkt_attrib *pattrib) +static int set_qos(struct pkt_file *ppktfile, struct pkt_attrib *pattrib) { struct ethhdr etherhdr; struct iphdr ip_hdr; s32 UserPriority =3D 0; + int ret; =20 _rtw_open_pktfile(ppktfile->pkt, ppktfile); - _rtw_pktfile_read(ppktfile, (unsigned char *)ðerhdr, ETH_HLEN); + ret =3D _rtw_pktfile_read(ppktfile, (unsigned char *)ðerhdr, ETH_HLEN); + if (ret < 0) + return ret; =20 /* get UserPriority from IP hdr */ if (pattrib->ether_type =3D=3D 0x0800) { - _rtw_pktfile_read(ppktfile, (u8 *)&ip_hdr, sizeof(ip_hdr)); + ret =3D _rtw_pktfile_read(ppktfile, (u8 *)&ip_hdr, sizeof(ip_hdr)); + if (ret < 0) + return ret; + UserPriority =3D ip_hdr.tos >> 5; } pattrib->priority =3D UserPriority; pattrib->hdrlen =3D WLAN_HDR_A3_QOS_LEN; pattrib->subtype =3D WIFI_QOS_DATA_TYPE; + + return 0; } =20 static s32 update_attrib(struct adapter *padapter, struct sk_buff *pkt, st= ruct pkt_attrib *pattrib) @@ -626,9 +634,12 @@ static s32 update_attrib(struct adapter *padapter, str= uct sk_buff *pkt, struct p struct mlme_priv *pmlmepriv =3D &padapter->mlmepriv; struct qos_priv *pqospriv =3D &pmlmepriv->qospriv; signed int res =3D _SUCCESS; + int ret; =20 _rtw_open_pktfile(pkt, &pktfile); - _rtw_pktfile_read(&pktfile, (u8 *)ðerhdr, ETH_HLEN); + ret =3D _rtw_pktfile_read(&pktfile, (u8 *)ðerhdr, ETH_HLEN); + if (ret < 0) + return ret; =20 pattrib->ether_type =3D ntohs(etherhdr.h_proto); =20 @@ -655,7 +666,9 @@ static s32 update_attrib(struct adapter *padapter, stru= ct sk_buff *pkt, struct p =20 u8 tmp[24]; =20 - _rtw_pktfile_read(&pktfile, &tmp[0], 24); + ret =3D _rtw_pktfile_read(&pktfile, &tmp[0], 24); + if (ret < 0) + return ret; =20 pattrib->dhcp_pkt =3D 0; if (pktfile.pkt_len > 282) {/* MINIMUM_DHCP_PACKET_SIZE) { */ @@ -737,11 +750,16 @@ static s32 update_attrib(struct adapter *padapter, st= ruct sk_buff *pkt, struct p pattrib->priority =3D 0; =20 if (check_fwstate(pmlmepriv, WIFI_AP_STATE|WIFI_ADHOC_STATE|WIFI_ADHOC_MA= STER_STATE)) { - if (pattrib->qos_en) - set_qos(&pktfile, pattrib); + if (pattrib->qos_en) { + ret =3D set_qos(&pktfile, pattrib); + if (ret < 0) + return ret; + } } else { if (pqospriv->qos_option) { - set_qos(&pktfile, pattrib); + ret =3D set_qos(&pktfile, pattrib); + if (ret < 0) + return ret; =20 if (pmlmepriv->acm_mask !=3D 0) pattrib->priority =3D qos_acm(pmlmepriv->acm_mask, pattrib->priority); @@ -1039,6 +1057,7 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct =20 s32 bmcst =3D is_multicast_ether_addr(pattrib->ra); s32 res =3D _SUCCESS; + int ret; =20 if (!pxmitframe->buf_addr) return _FAIL; @@ -1054,7 +1073,9 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct } =20 _rtw_open_pktfile(pkt, &pktfile); - _rtw_pktfile_read(&pktfile, NULL, pattrib->pkt_hdrlen); + ret =3D _rtw_pktfile_read(&pktfile, NULL, pattrib->pkt_hdrlen); + if (ret < 0) + return ret; =20 frg_inx =3D 0; frg_len =3D pxmitpriv->frag_len - 4;/* 2346-4 =3D 2342 */ @@ -1096,6 +1117,9 @@ s32 rtw_xmitframe_coalesce(struct adapter *padapter, = struct sk_buff *pkt, struct mem_sz =3D _rtw_pktfile_read(&pktfile, pframe, mpdu_len); } =20 + if (mem_sz < 0) + return mem_sz; + pframe +=3D mem_sz; =20 if ((pattrib->icv_len > 0) && (pattrib->bswenc)) { @@ -1958,7 +1982,7 @@ s32 rtw_xmit(struct adapter *padapter, struct sk_buff= **ppkt) =20 res =3D update_attrib(padapter, *ppkt, &pxmitframe->attrib); =20 - if (res =3D=3D _FAIL) { + if (res !=3D _SUCCESS) { rtw_free_xmitframe(pxmitpriv, pxmitframe); return -1; } diff --git a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c b/drivers/stagi= ng/rtl8723bs/hal/rtl8723bs_xmit.c index abb6fdfe7e1f..55df66ec5f4c 100644 --- a/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c +++ b/drivers/staging/rtl8723bs/hal/rtl8723bs_xmit.c @@ -289,10 +289,10 @@ static s32 xmit_xmitframes(struct adapter *padapter, = struct xmit_priv *pxmitpriv pxmitframe->buf_addr =3D pxmitbuf->ptail; =20 ret =3D rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); - if (ret =3D=3D _FAIL) { + if (ret !=3D _SUCCESS) { netdev_err(padapter->pnetdev, - "%s: coalesce FAIL!", - __func__); + "%s: coalesce failed with error %d\n", + __func__, ret); /* Todo: error handler */ } else { k++; --=20 2.43.0 From nobody Sun Feb 8 18:31:19 2026 Received: from cvsmtppost04.nm.naver.com (cvsmtppost04.nm.naver.com [114.111.35.228]) (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 0882C3D5231 for ; Thu, 22 Jan 2026 04:15:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=114.111.35.228 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769055319; cv=none; b=AD+S0LrrkGHvXBHByxToBTxwtGOEmRQdLSx382QzDHDEOwJOxHHB3dqU7uJu4D+cEUI45Quf5AG7fvwpegqQTqCrC8EJ5AAsQUHWDu2f5IZH51DFi/D6V4wh9O6UczEwixWYqkK++h+GnVBHKwmLMyQ+1+3g1QvnhdEyX3L0D8M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769055319; c=relaxed/simple; bh=V2Diqzi2+EDgpT2KcklB0W83fHi5UkYHzlY2bCzM41Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Zjv3Dzv+5glb2m+fvcY+N5X+9utdNWXpCc3xo1q27mP5SqyGZlImtqvZbCc3QfT1wU9vbFXOoY548mnowMkuCtZr/qum4yf7qohQEWDyJPXvkHkIYWCPi9xBNAEfAK/PxSEMMQtG1t5ue3j/B6/IByFNDtuMeKRdt7BhqITzrF8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=naver.com; spf=pass smtp.mailfrom=naver.com; dkim=pass (2048-bit key) header.d=naver.com header.i=@naver.com header.b=MTKrNb6J; arc=none smtp.client-ip=114.111.35.228 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=naver.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=naver.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=naver.com header.i=@naver.com header.b="MTKrNb6J" Received: from cvsendbo023.nm ([10.112.22.35]) by cvsmtppost04.nm.naver.com with ESMTP id xlLN27tATT6oSKPYoHWsRA for ; Thu, 22 Jan 2026 04:15:09 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=naver.com; s=s20171208; t=1769055309; bh=V2Diqzi2+EDgpT2KcklB0W83fHi5UkYHzlY2bCzM41Q=; h=From:To:Subject:Date:Message-ID:From:Subject:Feedback-ID: X-Works-Security; b=MTKrNb6Ji8DRV4kakT/L3A7mroCjO1HQL3rRPcSdYfeVpsZEnwTarKC42SCpxtQ9G OllgpsDrtRgMMLKwn1h06ycjxO6//nCh0pWkdlrj5WedgwmQx5/a3ft6nX3aieFCON zNgc3cvVUJd+/pZTsHnZZVXKmXyPKcnmYU/RYTcAnavXPacaqCm9ZH5YyalM8E96ST ZMgZm+h15CTswwEk90DMzQYZdDj7VI+4VmynmJ6d8zSblqwgMjIJCnNDyO8E4cUoBb g0ePEz3iM+djVUTEsrHrl8aUAuD/+eUMqhgh7ziuMr2R/SKwEr1AzfvndPKRZ11f0n rwBlnX06wadHw== X-Session-ID: p3byboejQS+L0i3t5xQTJA X-Works-Send-Opt: LdYwjAJYjHmZaAKqKBmmKxbwKqpYkEljxBmwjAg= X-Works-Smtp-Source: lqYZKAvrFqJZ+Hm/KAvZ+6E= Received: from JMW-Ubuntu.. ([14.38.141.199]) by mvnsmtp02.nm.naver.com with ESMTP id p3byboejQS+L0i3t5xQTJA for (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Thu, 22 Jan 2026 04:15:08 -0000 From: Minu Jin To: gregkh@linuxfoundation.org Cc: andriy.shevchenko@linux.intel.com, abrahamadekunle50@gmail.com, zxcv2569763104@gmail.com, milospuric856@gmail.com, karanja99erick@gmail.com, weibu@redadmin.org, dan.carpenter@linaro.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Minu Jin Subject: [PATCH v5 3/3] staging: rtl8723bs: prevent partial reads in _rtw_pktfile_read Date: Thu, 22 Jan 2026 13:14:50 +0900 Message-ID: <20260122041450.2325560-4-s9430939@naver.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260122041450.2325560-1-s9430939@naver.com> References: <20260122041450.2325560-1-s9430939@naver.com> 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" The current implementation of _rtw_pktfile_read() allows reading less data than requested if there isn't enough data remaining. This is problematic because callers usually request a fixed size (like a header size) and expect that full amount. Reading only part of the data means the caller gets incomplete information, which can lead to errors in packet processing. To fix this, update the function to: 1. Return -EINVAL if the remaining data is smaller than the requested length. 2. Check the return value of skb_copy_bits() and propagate errors. 3. Only update the internal pointers (cur_addr, pkt_len) if the read is fully successful. Callers have already been updated in previous patches to handle these negative error codes. Signed-off-by: Minu Jin --- drivers/staging/rtl8723bs/os_dep/xmit_linux.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c b/drivers/stagin= g/rtl8723bs/os_dep/xmit_linux.c index ea54a573e025..72cf8cd5f7c6 100644 --- a/drivers/staging/rtl8723bs/os_dep/xmit_linux.c +++ b/drivers/staging/rtl8723bs/os_dep/xmit_linux.c @@ -23,21 +23,20 @@ void _rtw_open_pktfile(struct sk_buff *pktptr, struct p= kt_file *pfile) =20 int _rtw_pktfile_read(struct pkt_file *pfile, u8 *rmem, unsigned int rlen) { - unsigned int len; int ret; =20 - len =3D rtw_remainder_len(pfile); - len =3D (rlen > len) ? len : rlen; + if (rtw_remainder_len(pfile) < rlen) + return -EINVAL; =20 if (rmem) { - ret =3D skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len, rmem,= len); + ret =3D skb_copy_bits(pfile->pkt, pfile->buf_len - pfile->pkt_len, rmem,= rlen); if (ret < 0) return ret; } =20 - pfile->cur_addr +=3D len; - pfile->pkt_len -=3D len; - return len; + pfile->cur_addr +=3D rlen; + pfile->pkt_len -=3D rlen; + return rlen; } =20 signed int rtw_endofpktfile(struct pkt_file *pfile) --=20 2.43.0