ieee802154/mrf24j40: make sure we do not override return values
authorStefan Schmidt <stefan@osg.samsung.com>
Tue, 9 Jun 2015 08:52:26 +0000 (10:52 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 9 Jun 2015 08:55:36 +0000 (10:55 +0200)
If we run into an error during rx we set the the error code in ret, but override
it afterwards. Using a different variable for the extra case avoids this
situation.

CID: 12269821226983
Signed-off-by: Stefan Schmidt <stefan@osg.samsung.com>
Cc: Alan Ott <alan@signal11.us>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/net/ieee802154/mrf24j40.c

index 99c7676..2549760 100644 (file)
@@ -533,6 +533,7 @@ static int mrf24j40_handle_rx(struct mrf24j40 *devrec)
        u8 lqi = 0;
        u8 val;
        int ret = 0;
+       int ret2;
        struct sk_buff *skb;
 
        /* Turn off reception of packets off the air. This prevents the
@@ -569,9 +570,9 @@ static int mrf24j40_handle_rx(struct mrf24j40 *devrec)
 
 out:
        /* Turn back on reception of packets off the air. */
-       ret = read_short_reg(devrec, REG_BBREG1, &val);
-       if (ret)
-               return ret;
+       ret2 = read_short_reg(devrec, REG_BBREG1, &val);
+       if (ret2)
+               return ret2;
        val &= ~0x4; /* Clear RXDECINV */
        write_short_reg(devrec, REG_BBREG1, val);