rndis_wlan: tighten check of rndis_query_oid return
authorTom Rix <trix@redhat.com>
Tue, 11 Aug 2020 14:02:19 +0000 (07:02 -0700)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 18 Aug 2020 12:52:45 +0000 (15:52 +0300)
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>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200811140219.8412-1-trix@redhat.com
drivers/net/wireless/rndis_wlan.c

index 8852a18..75b5d54 100644 (file)
@@ -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),