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:
Sahitya Tummala 2015-11-05 14:20:08 +05:30 committed by Subhash Jadavani
parent 31c01a3450
commit 035148f45e

View file

@ -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;