ibmvnic: Return from ibmvnic_resume if not in VNIC_OPEN state
authorJohn Allen <jallen@linux.vnet.ibm.com>
Mon, 19 Jun 2017 16:27:53 +0000 (11:27 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Jun 2017 19:17:01 +0000 (15:17 -0400)
If the ibmvnic driver is not in the VNIC_OPEN state, return from
ibmvnic_resume callback. If we are not in the VNIC_OPEN state, interrupts
may not be initialized and directly calling the interrupt handler will
cause a crash.

Signed-off-by: John Allen <jallen@linux.vnet.ibm.com>
Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ibm/ibmvnic.c

index 722daf55d75710c315c6361361d62a6268176b81..013509544632d93b8e7edc2dfaf11132fb5befa6 100644 (file)
@@ -3859,6 +3859,9 @@ static int ibmvnic_resume(struct device *dev)
        struct ibmvnic_adapter *adapter = netdev_priv(netdev);
        int i;
 
+       if (adapter->state != VNIC_OPEN)
+               return 0;
+
        /* kick the interrupt handlers just in case we lost an interrupt */
        for (i = 0; i < adapter->req_rx_queues; i++)
                ibmvnic_interrupt_rx(adapter->rx_scrq[i]->irq,