amd-xgbe: Fix maximum GPIO value check
authorLendacky, Thomas <Thomas.Lendacky@amd.com>
Tue, 15 Nov 2016 22:11:15 +0000 (16:11 -0600)
committerDavid S. Miller <davem@davemloft.net>
Wed, 16 Nov 2016 18:57:44 +0000 (13:57 -0500)
The GPIO support in the hardware allows for up to 16 GPIO pins, enumerated
from 0 to 15.  The driver uses the wrong value (16) to validate the GPIO
pin range in the routines to set and clear the GPIO output pins.  Update
the code to use the correct value (15).

Reported-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/amd/xgbe/xgbe-dev.c

index 30056e24e1fc9895c25cff8bc5008b5b44966550..aaf0350076a90a1dcd91502b9ce8e4a81cff7174 100644 (file)
@@ -1099,7 +1099,7 @@ static int xgbe_clr_gpio(struct xgbe_prv_data *pdata, unsigned int gpio)
 {
        unsigned int reg;
 
-       if (gpio > 16)
+       if (gpio > 15)
                return -EINVAL;
 
        reg = XGMAC_IOREAD(pdata, MAC_GPIOSR);
@@ -1114,7 +1114,7 @@ static int xgbe_set_gpio(struct xgbe_prv_data *pdata, unsigned int gpio)
 {
        unsigned int reg;
 
-       if (gpio > 16)
+       if (gpio > 15)
                return -EINVAL;
 
        reg = XGMAC_IOREAD(pdata, MAC_GPIOSR);