Skip to content

Commit f9c6cea

Browse files
Juliet Kimdavem330
authored andcommitted
ibmvnic: Skip fatal error reset after passive init
During MTU change, the following events may happen. Client-driven CRQ initialization fails due to partner’s CRQ closed, causing client to enqueue a reset task for FATAL_ERROR. Then passive (server-driven) CRQ initialization succeeds, causing client to release CRQ and enqueue a reset task for failover. If the passive CRQ initialization occurs before the FATAL reset task is processed, the FATAL error reset task would try to access a CRQ message queue that was freed, causing an oops. The problem may be most likely to occur during DLPAR add vNIC with a non-default MTU, because the DLPAR process will automatically issue a change MTU request. Fix this by not processing fatal error reset if CRQ is passively initialized after client-driven CRQ initialization fails. Signed-off-by: Juliet Kim <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 81d6bc4 commit f9c6cea

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/net/ethernet/ibm/ibmvnic.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2189,7 +2189,8 @@ static void __ibmvnic_reset(struct work_struct *work)
21892189
rc = do_hard_reset(adapter, rwi, reset_state);
21902190
rtnl_unlock();
21912191
}
2192-
} else {
2192+
} else if (!(rwi->reset_reason == VNIC_RESET_FATAL &&
2193+
adapter->from_passive_init)) {
21932194
rc = do_reset(adapter, rwi, reset_state);
21942195
}
21952196
kfree(rwi);

0 commit comments

Comments
 (0)