mmc: core: fix debugfs path to read ext_csd
After reading ext_csd, the host is not claimed while doing unhalt if the card is in CQ mode. This may race with RPMB context which tries to halt and disable CQ in the card. This may unhalt the controller while RPMB is still going on, resulting in software request timeout for RPMB commands that are supposed to be sent in legacy mode with controller in halt state. Fix this by claiming the host till the unhalt is done in mmc_ext_csd_open() so as to prevent race with RPMB context. CRs-Fixed: 935719 Change-Id: I6d2738b21c3cd44c8fb6c99f63291059d5b18ee1 Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> [subhashj@codeaurora.org: fixed trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
This commit is contained in:
parent
31c01a3450
commit
035148f45e
1 changed files with 2 additions and 1 deletions
|
@ -461,7 +461,6 @@ static int mmc_ext_csd_open(struct inode *inode, struct file *filp)
|
|||
}
|
||||
|
||||
err = mmc_get_ext_csd(card, &ext_csd);
|
||||
mmc_put_card(card);
|
||||
if (err)
|
||||
goto out_free;
|
||||
|
||||
|
@ -478,6 +477,7 @@ static int mmc_ext_csd_open(struct inode *inode, struct file *filp)
|
|||
mmc_hostname(card->host), __func__);
|
||||
}
|
||||
|
||||
mmc_put_card(card);
|
||||
kfree(ext_csd);
|
||||
return 0;
|
||||
|
||||
|
@ -487,6 +487,7 @@ out_free:
|
|||
pr_err("%s: %s: cmdq unhalt failed\n",
|
||||
mmc_hostname(card->host), __func__);
|
||||
}
|
||||
mmc_put_card(card);
|
||||
out_free_halt:
|
||||
kfree(buf);
|
||||
return err;
|
||||
|
|
Loading…
Add table
Reference in a new issue