cxgb4: fix -ve error check on a signed iq
authorColin Ian King <colin.king@canonical.com>
Sun, 25 Sep 2016 21:14:45 +0000 (14:14 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 26 Sep 2016 03:39:46 +0000 (23:39 -0400)
iq is unsigned, so the error check for iq < 0 has no effect so errors
can slip past this check.  Fix this by making iq signed and also
get_filter_steerq return a signed int so a -ve error can be returned.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c

index 2a616171cb68d24aed5a2c2b081244fd3897b108..10736738ff3038339aaf80575b4d00b4f0f73dde 100644 (file)
@@ -117,11 +117,11 @@ static int validate_filter(struct net_device *dev,
        return 0;
 }
 
-static unsigned int get_filter_steerq(struct net_device *dev,
-                                     struct ch_filter_specification *fs)
+static int get_filter_steerq(struct net_device *dev,
+                            struct ch_filter_specification *fs)
 {
        struct adapter *adapter = netdev2adap(dev);
-       unsigned int iq;
+       int iq;
 
        /* If the user has requested steering matching Ingress Packets
         * to a specific Queue Set, we need to make sure it's in range
@@ -443,10 +443,10 @@ int __cxgb4_set_filter(struct net_device *dev, int filter_id,
                       struct filter_ctx *ctx)
 {
        struct adapter *adapter = netdev2adap(dev);
-       unsigned int max_fidx, fidx, iq;
+       unsigned int max_fidx, fidx;
        struct filter_entry *f;
        u32 iconf;
-       int ret;
+       int iq, ret;
 
        max_fidx = adapter->tids.nftids;
        if (filter_id != (max_fidx + adapter->tids.nsftids - 1) &&