mwifiex: fix comparison expression
authorAndrzej Hajda <a.hajda@samsung.com>
Mon, 21 Sep 2015 13:33:53 +0000 (15:33 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Sep 2015 23:14:32 +0000 (16:14 -0700)
To avoid underflows signed variables should be used in expression.

The problem has been detected using proposed semantic patch
scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci [1].

[1]: http://permalink.gmane.org/gmane.linux.kernel/2038576

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Acked-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/wireless/mwifiex/11n_rxreorder.c

index 2906cd5..b3970a8 100644 (file)
@@ -615,10 +615,10 @@ int mwifiex_11n_rx_reorder_pkt(struct mwifiex_private *priv,
            ((end_win > start_win) && ((seq_num > end_win) ||
                                       (seq_num < start_win)))) {
                end_win = seq_num;
-               if (((seq_num - win_size) + 1) >= 0)
+               if (((end_win - win_size) + 1) >= 0)
                        start_win = (end_win - win_size) + 1;
                else
-                       start_win = (MAX_TID_VALUE - (win_size - seq_num)) + 1;
+                       start_win = (MAX_TID_VALUE - (win_size - end_win)) + 1;
                mwifiex_11n_dispatch_pkt_until_start_win(priv, tbl, start_win);
        }