Răsfoiți Sursa

myri10ge: ensure tx queues remain stopped

Ensure that our tx queues remain stopped when we stop them in
myri10ge_close().  Not doing so can potentially lead to traffic being
transmitted when the interface is removed, which can lead to NULL
pointer dereferences.

Signed-off-by: Jon Mason <mason@myri.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Jon Mason 14 ani în urmă
părinte
comite
3b20b2dc5f
1 a modificat fișierele cu 2 adăugiri și 1 ștergeri
  1. 2 1
      drivers/net/myri10ge/myri10ge.c

+ 2 - 1
drivers/net/myri10ge/myri10ge.c

@@ -1461,7 +1461,8 @@ myri10ge_tx_done(struct myri10ge_slice_state *ss, int mcp_index)
 
 	/* start the queue if we've stopped it */
 	if (netif_tx_queue_stopped(dev_queue) &&
-	    tx->req - tx->done < (tx->mask >> 1)) {
+	    tx->req - tx->done < (tx->mask >> 1) &&
+	    ss->mgp->running == MYRI10GE_ETH_RUNNING) {
 		tx->wake_queue++;
 		netif_tx_wake_queue(dev_queue);
 	}