diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index 27c3cb27d395..32b413b61cda 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -1403,8 +1403,15 @@ static int mmc_blk_reset(struct mmc_blk_data *md, struct mmc_host *host, md->reset_done |= type; err = mmc_hw_reset(host); + if (err && err != -EOPNOTSUPP) { + /* We failed to reset so we need to abort the request */ + pr_err("%s: %s: failed to reset %d\n", mmc_hostname(host), + __func__, err); + return -ENODEV; + } + /* Ensure we switch back to the correct partition */ - if (err != -EOPNOTSUPP) { + if (host->card) { struct mmc_blk_data *main_md = dev_get_drvdata(&host->card->dev); int part_err;