summaryrefslogtreecommitdiff
path: root/drivers/mailbox/sprd-mailbox.c
diff options
context:
space:
mode:
authorBrian King <brking@linux.vnet.ibm.com>2021-04-12 18:10:09 -0600
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2021-05-14 09:50:27 +0200
commitb42ec774db50430cf0c97d675f42067595a25408 (patch)
tree4bea3febf722205a0a7e593709494943ab3d0d4f /drivers/mailbox/sprd-mailbox.c
parent5129ec347a89075f16fa5896143ca4b5cbdbc47c (diff)
downloadlinux-rt-b42ec774db50430cf0c97d675f42067595a25408.tar.gz
scsi: ibmvfc: Fix invalid state machine BUG_ON()
[ Upstream commit 15cfef8623a449d40d16541687afd58e78033be3 ] This fixes an issue hitting the BUG_ON() in ibmvfc_do_work(). When going through a host action of IBMVFC_HOST_ACTION_RESET, we change the action to IBMVFC_HOST_ACTION_TGT_DEL, then drop the host lock, and reset the CRQ, which changes the host state to IBMVFC_NO_CRQ. If, prior to setting the host state to IBMVFC_NO_CRQ, ibmvfc_init_host() is called, it can then end up changing the host action to IBMVFC_HOST_ACTION_INIT. If we then change the host state to IBMVFC_NO_CRQ, we will then hit the BUG_ON(). Make a couple of changes to avoid this. Leave the host action to be IBMVFC_HOST_ACTION_RESET or IBMVFC_HOST_ACTION_REENABLE until after we drop the host lock and reset or reenable the CRQ. Also harden the host state machine to ensure we cannot leave the reset / reenable state until we've finished processing the reset or reenable. Link: https://lore.kernel.org/r/20210413001009.902400-1-tyreld@linux.ibm.com Fixes: 73ee5d867287 ("[SCSI] ibmvfc: Fix soft lockup on resume") Signed-off-by: Brian King <brking@linux.vnet.ibm.com> [tyreld: added fixes tag] Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com> [mkp: fix comment checkpatch warnings] Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers/mailbox/sprd-mailbox.c')
0 files changed, 0 insertions, 0 deletions