b43: use temporary rate_index for error checking
authorJohannes Berg <johannes.berg@intel.com>
Fri, 13 Jul 2012 08:57:36 +0000 (10:57 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 17 Jul 2012 19:11:31 +0000 (15:11 -0400)
The mac80211 rate_index changed to be a u8, so
can't hold the negative error value properly.
Use a temporary variable for error checking.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/b43/xmit.c

index b31ccc02fa21c406bb7179f30faced26d2e7aadc..136510edf3cf819285d8f72f5cb3afff0ee3683e 100644 (file)
@@ -663,7 +663,7 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
        u32 uninitialized_var(macstat);
        u16 chanid;
        u16 phytype;
-       int padding;
+       int padding, rate_idx;
 
        memset(&status, 0, sizeof(status));
 
@@ -766,16 +766,17 @@ void b43_rx(struct b43_wldev *dev, struct sk_buff *skb, const void *_rxhdr)
        }
 
        if (phystat0 & B43_RX_PHYST0_OFDM)
-               status.rate_idx = b43_plcp_get_bitrate_idx_ofdm(plcp,
+               rate_idx = b43_plcp_get_bitrate_idx_ofdm(plcp,
                                                phytype == B43_PHYTYPE_A);
        else
-               status.rate_idx = b43_plcp_get_bitrate_idx_cck(plcp);
-       if (unlikely(status.rate_idx == -1)) {
+               rate_idx = b43_plcp_get_bitrate_idx_cck(plcp);
+       if (unlikely(rate_idx == -1)) {
                /* PLCP seems to be corrupted.
                 * Drop the frame, if we are not interested in corrupted frames. */
                if (!(dev->wl->filter_flags & FIF_PLCPFAIL))
                        goto drop;
        }
+       status.rate_idx = rate_idx;
        status.antenna = !!(phystat0 & B43_RX_PHYST0_ANT);
 
        /*