qlge: fix a timeout loop in ql_change_rx_buffers()
authorDan Carpenter <dan.carpenter@oracle.com>
Tue, 15 Dec 2015 10:52:36 +0000 (13:52 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 15 Dec 2015 17:46:03 +0000 (12:46 -0500)
The problem here is that after the loop we test for "if (!i) " but
because "i--" is a post-op we exit with i set to -1.  I have fixed this
by changing it to a pre-op instead.  I had to change the starting value
from 3 to 4 so that we still iterate 3 times.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qlge/qlge_main.c

index 02b7115b6aaa64add8632094f6f0dfe354a89b7d..997976426799d90a328cef4ff958b92ce3ba491c 100644 (file)
@@ -4211,8 +4211,9 @@ static int ql_change_rx_buffers(struct ql_adapter *qdev)
 
        /* Wait for an outstanding reset to complete. */
        if (!test_bit(QL_ADAPTER_UP, &qdev->flags)) {
-               int i = 3;
-               while (i-- && !test_bit(QL_ADAPTER_UP, &qdev->flags)) {
+               int i = 4;
+
+               while (--i && !test_bit(QL_ADAPTER_UP, &qdev->flags)) {
                        netif_err(qdev, ifup, qdev->ndev,
                                  "Waiting for adapter UP...\n");
                        ssleep(1);