Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c250bf69 authored by Sahitya Tummala's avatar Sahitya Tummala Committed by Subhash Jadavani
Browse files

mmc: core: Fix NULL pointer dereference issue with mmc_blk_reset()



If the mmc_hw_reset() fails, then host->card might be NULL in some
cases. Hence, check for reset errors and report it to the caller so
that the current request can be aborted and also check for host->card
before accessing it so as to prevent NULL pointer dereference issue.

Change-Id: Iba0f0be314474e607a40383bc0b28eef66a31d63
Signed-off-by: default avatarSahitya Tummala <stummala@codeaurora.org>
[subhashj@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: default avatarSubhash Jadavani <subhashj@codeaurora.org>
parent 3332d5a9
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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;