Commit 1f45dc22 authored by Lijun Pan's avatar Lijun Pan Committed by Jakub Kicinski
Browse files

ibmvnic: continue fatal error reset after passive init



Commit f9c6cea0 ("ibmvnic: Skip fatal error reset after passive init")
says "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."

The original commit skips a specific reset condition, but that does
not fix the problem it claims to fix, and misses a reset condition.
The effective fix is commit 0e435bef ("ibmvnic: fix NULL pointer
dereference in ibmvic_reset_crq") and commit a0faaa27 ("ibmvnic:
fix NULL pointer dereference in reset_sub_crq_queues"). With above
two fixes, there are no more crashes seen as described even without
the original commit, so I would like to revert the original commit.

Fixes: f9c6cea0 ("ibmvnic: Skip fatal error reset after passive init")
Signed-off-by: default avatarLijun Pan <ljp@linux.ibm.com>
Link: https://lore.kernel.org/r/20201223204904.12677-1-ljp@linux.ibm.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 5d41f9b7
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -2342,8 +2342,7 @@ static void __ibmvnic_reset(struct work_struct *work)
				set_current_state(TASK_UNINTERRUPTIBLE);
				schedule_timeout(60 * HZ);
			}
		} else if (!(rwi->reset_reason == VNIC_RESET_FATAL &&
				adapter->from_passive_init)) {
		} else {
			rc = do_reset(adapter, rwi, reset_state);
		}
		kfree(rwi);