From: sashiko-bot@kernel.org
To: ziniu.wang_1@oss.nxp.com
Cc: Frank.Li@kernel.org, imx@lists.linux.dev
Subject: Re: [PATCH v5 3/8] mmc: sdhci-esdhc-imx: fix esdhc_change_pinstate() to allow default state restore
Date: Tue, 07 Jul 2026 11:17:04 +0000 [thread overview]
Message-ID: <20260707111705.4FD8F1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260707110303.3779799-4-ziniu.wang_1@oss.nxp.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] Pre-existing NULL pointer dereference in `esdhc_change_pinstate()` due to insufficient pointer validation.
--
--- Patch [3]: [PATCH v5 3/8] mmc: sdhci-esdhc-imx: fix esdhc_change_pinstate() to allow default state restore ---
commit a74e8c023dfc4c92edd0793b792f39383f06ef13
Author: Luke Wang <ziniu.wang_1@nxp.com>
mmc: sdhci-esdhc-imx: fix esdhc_change_pinstate() to allow default state restore
This commit moves the IS_ERR checks for pins_100mhz and pins_200mhz into
their respective switch cases. This allows devices with a sleep pinctrl
state but without high-speed pin states to restore their default pin
configuration.
> diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> --- a/drivers/mmc/host/sdhci-esdhc-imx.c
> +++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> @@ -1326,19 +1326,21 @@ static int esdhc_change_pinstate(struct sdhci_host *host,
>
> dev_dbg(mmc_dev(host->mmc), "change pinctrl state for uhs %d\n", uhs);
>
> - if (IS_ERR(imx_data->pinctrl) ||
> - IS_ERR(imx_data->pins_100mhz) ||
> - IS_ERR(imx_data->pins_200mhz))
> + if (IS_ERR(imx_data->pinctrl))
> return -EINVAL;
>
> switch (uhs) {
> case MMC_TIMING_UHS_SDR50:
> case MMC_TIMING_UHS_DDR50:
> + if (IS_ERR(imx_data->pins_100mhz))
[Severity: High]
This is a pre-existing issue, but could this lead to a NULL pointer
dereference?
On non-USDHC platforms where the device tree incorrectly advertises UHS
capabilities, pins_100mhz might be uninitialized and left as NULL. Since
IS_ERR() evaluates to false for a NULL pointer, this check will pass,
allowing the NULL pointer to be assigned to pinctrl and later passed to
pinctrl_select_state(), which will panic in pinctrl_commit_state().
Would it be safer to use IS_ERR_OR_NULL() here instead?
> + return -EINVAL;
> pinctrl = imx_data->pins_100mhz;
> break;
> case MMC_TIMING_UHS_SDR104:
> case MMC_TIMING_MMC_HS200:
> case MMC_TIMING_MMC_HS400:
> + if (IS_ERR(imx_data->pins_200mhz))
[Severity: High]
This is also a pre-existing issue, but could the same NULL pointer
dereference happen here?
If pins_200mhz is NULL due to the same misconfigured device tree scenario
mentioned above, this check will also pass, resulting in a panic when NULL
is passed to pinctrl_select_state().
Should this check also be updated to IS_ERR_OR_NULL()?
> + return -EINVAL;
> pinctrl = imx_data->pins_200mhz;
> break;
> default:
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260707110303.3779799-1-ziniu.wang_1@oss.nxp.com?part=3
next prev parent reply other threads:[~2026-07-07 11:17 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-07 11:02 [PATCH v5 0/8] mmc: sdhci-esdhc-imx: fix SDIO suspend/resume issues ziniu.wang_1
2026-07-07 11:02 ` [PATCH v5 1/8] mmc: sdhci-esdhc-imx: remove unnecessary mmc_card_wake_sdio_irq check for tuning save/restore ziniu.wang_1
2026-07-07 11:02 ` [PATCH v5 2/8] mmc: sdhci-esdhc-imx: restore DLL override for DDR modes on resume ziniu.wang_1
2026-07-07 11:15 ` sashiko-bot
2026-07-07 11:02 ` [PATCH v5 3/8] mmc: sdhci-esdhc-imx: fix esdhc_change_pinstate() to allow default state restore ziniu.wang_1
2026-07-07 11:17 ` sashiko-bot [this message]
2026-07-07 19:02 ` Frank Li
2026-07-08 6:38 ` Luke Wang (OSS)
2026-07-07 11:02 ` [PATCH v5 4/8] mmc: sdhci-esdhc-imx: restore pinctrl before restoring ios timing on resume ziniu.wang_1
2026-07-07 11:16 ` sashiko-bot
2026-07-07 11:03 ` [PATCH v5 5/8] mmc: sdhci-esdhc-imx: disable irq during suspend to fix unhandled interrupt ziniu.wang_1
2026-07-07 11:03 ` [PATCH v5 6/8] mmc: sdhci-esdhc-imx: use pm_runtime_resume_and_get() in suspend ziniu.wang_1
2026-07-07 11:12 ` sashiko-bot
2026-07-07 11:03 ` [PATCH v5 7/8] mmc: sdhci-esdhc-imx: make non-fatal errors non-blocking " ziniu.wang_1
2026-07-07 11:14 ` sashiko-bot
2026-07-07 11:03 ` [PATCH v5 8/8] mmc: sdhci-esdhc-imx: fix resume error handling ziniu.wang_1
2026-07-07 11:16 ` sashiko-bot
2026-07-08 5:58 ` Luke Wang (OSS)
2026-07-10 13:19 ` [PATCH v5 0/8] mmc: sdhci-esdhc-imx: fix SDIO suspend/resume issues Ulf Hansson
2026-07-13 4:40 ` Luke Wang (OSS)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260707111705.4FD8F1F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=Frank.Li@kernel.org \
--cc=imx@lists.linux.dev \
--cc=sashiko-reviews@lists.linux.dev \
--cc=ziniu.wang_1@oss.nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.