mmc: dw_mmc: Only inject fault before done/error
authorVincent Whitchurch <vincent.whitchurch@axis.com>
Wed, 25 Aug 2021 11:42:13 +0000 (13:42 +0200)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 6 Sep 2021 16:02:16 +0000 (18:02 +0200)
commit26391e49d5b0f0c33eb4b28a312d2ecc094d7489
treee8b7c26859859fa0f116fb780bf499b0ac9486ac
parent27151f177827d478508e756c7657273261aaf8a9
mmc: dw_mmc: Only inject fault before done/error

The fault injection function can set EVENT_DATA_ERROR but skip the
setting of ->data_status to an error status if it hits just after a data
over interrupt.  This confuses the tasklet which can later end up
triggering the WARN_ON(host->cmd || ..) in dw_mci_request_end() since
dw_mci_data_complete() would return success.

Prevent the fault injection function from doing this since this is not a
real case, and ensure that the fault injection doesn't race with a real
error either.

Signed-off-by: Vincent Whitchurch <vincent.whitchurch@axis.com>
Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>
Fixes: 2b8ac062f337 ("mmc: dw_mmc: Add data CRC error injection")
Link: https://lore.kernel.org/r/20210825114213.7429-1-vincent.whitchurch@axis.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/dw_mmc.c