bnxt_en: Always set output parameters in bnxt_get_max_rings().
authorMichael Chan <michael.chan@broadcom.com>
Mon, 9 Jul 2018 06:24:49 +0000 (02:24 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 9 Jul 2018 23:27:14 +0000 (16:27 -0700)
The current code returns -ENOMEM and does not bother to set the output
parameters to 0 when no rings are available.  Some callers, such as
bnxt_get_channels() will display garbage ring numbers when that happens.
Fix it by always setting the output parameters.

Fixes: 6e6c5a57fbe1 ("bnxt_en: Modify bnxt_get_max_rings() to support shared or non shared rings.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.c

index 5d95d788737f9ff13835d0e5399b2d26d73f1a1a..5a47607aba53aee82b2d17d40b90fd85fcb6b07d 100644 (file)
@@ -8502,11 +8502,11 @@ int bnxt_get_max_rings(struct bnxt *bp, int *max_rx, int *max_tx, bool shared)
        int rx, tx, cp;
 
        _bnxt_get_max_rings(bp, &rx, &tx, &cp);
+       *max_rx = rx;
+       *max_tx = tx;
        if (!rx || !tx || !cp)
                return -ENOMEM;
 
-       *max_rx = rx;
-       *max_tx = tx;
        return bnxt_trim_rings(bp, max_rx, max_tx, cp, shared);
 }