diff mbox series

rndis_wlan: tighten check of rndis_query_oid return

Message ID 20200811140219.8412-1-trix@redhat.com
State Awaiting Upstream
Delegated to: David Miller
Headers show
Series rndis_wlan: tighten check of rndis_query_oid return | expand

Commit Message

Tom Rix Aug. 11, 2020, 2:02 p.m. UTC
From: Tom Rix <trix@redhat.com>

clang static analysis reports this problem

rndis_wlan.c:3147:25: warning: Assigned value is garbage or undefined
                wiphy->max_num_pmkids = le32_to_cpu(caps.num_pmkids);
                                      ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The setting of caps happens here, with a call to rndis_query_oid()

	retval = rndis_query_oid(usbdev,
	if (retval >= 0) {

Reviewing rndis_query_oid() shows that on success 0 is returned,
failure is otherwise.  So the retval check is not tight enough.
So tighten the retval check.  Similar problem in
rndis_wlan_get_caps().

Signed-off-by: Tom Rix <trix@redhat.com>
---
 drivers/net/wireless/rndis_wlan.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Kalle Valo Aug. 18, 2020, 12:53 p.m. UTC | #1
trix@redhat.com wrote:

> From: Tom Rix <trix@redhat.com>
> 
> clang static analysis reports this problem
> 
> rndis_wlan.c:3147:25: warning: Assigned value is garbage or undefined
>                 wiphy->max_num_pmkids = le32_to_cpu(caps.num_pmkids);
>                                       ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> The setting of caps happens here, with a call to rndis_query_oid()
> 
> 	retval = rndis_query_oid(usbdev,
> 	if (retval >= 0) {
> 
> Reviewing rndis_query_oid() shows that on success 0 is returned,
> failure is otherwise.  So the retval check is not tight enough.
> So tighten the retval check.  Similar problem in
> rndis_wlan_get_caps().
> 
> Signed-off-by: Tom Rix <trix@redhat.com>

Patch applied to wireless-drivers-next.git, thanks.

094dd0d73062 rndis_wlan: tighten check of rndis_query_oid return
diff mbox series

Patch

diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c
index 8852a1832951..75b5d545b49e 100644
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
@@ -3112,7 +3112,7 @@  static int rndis_wlan_get_caps(struct usbnet *usbdev, struct wiphy *wiphy)
 	retval = rndis_query_oid(usbdev,
 				 RNDIS_OID_802_11_NETWORK_TYPES_SUPPORTED,
 				 &networks_supported, &len);
-	if (retval >= 0) {
+	if (!retval) {
 		n = le32_to_cpu(networks_supported.num_items);
 		if (n > 8)
 			n = 8;
@@ -3137,7 +3137,7 @@  static int rndis_wlan_get_caps(struct usbnet *usbdev, struct wiphy *wiphy)
 	retval = rndis_query_oid(usbdev,
 				 RNDIS_OID_802_11_CAPABILITY,
 				 &caps, &len);
-	if (retval >= 0) {
+	if (!retval) {
 		netdev_dbg(usbdev->net, "RNDIS_OID_802_11_CAPABILITY -> len %d, "
 				"ver %d, pmkids %d, auth-encr-pairs %d\n",
 				le32_to_cpu(caps.length),