lkml.org 
[lkml]   [2021]   [Nov]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 145/323] mmc: sdhci-omap: Fix NULL pointer exception if regulator is not configured
    Date
    From: Tony Lindgren <tony@atomide.com>

    [ Upstream commit 8e0e7bd38b1ec7f9e5d18725ad41828be4e09859 ]

    If sdhci-omap is configured for an unused device instance and the device
    is not set as disabled, we can get a NULL pointer dereference:

    Unable to handle kernel NULL pointer dereference at virtual address
    00000045
    ...
    (regulator_set_voltage) from [<c07d7008>] (mmc_regulator_set_ocr+0x44/0xd0)
    (mmc_regulator_set_ocr) from [<c07e2d80>] (sdhci_set_ios+0xa4/0x490)
    (sdhci_set_ios) from [<c07ea690>] (sdhci_omap_set_ios+0x124/0x160)
    (sdhci_omap_set_ios) from [<c07c8e94>] (mmc_power_up.part.0+0x3c/0x154)
    (mmc_power_up.part.0) from [<c07c9d20>] (mmc_start_host+0x88/0x9c)
    (mmc_start_host) from [<c07cad34>] (mmc_add_host+0x58/0x7c)
    (mmc_add_host) from [<c07e2574>] (__sdhci_add_host+0xf0/0x22c)
    (__sdhci_add_host) from [<c07eaf68>] (sdhci_omap_probe+0x318/0x72c)
    (sdhci_omap_probe) from [<c06a39d8>] (platform_probe+0x58/0xb8)

    AFAIK we are not seeing this with the devices configured in the mainline
    kernel but this can cause issues for folks bringing up their boards.

    Fixes: 7d326930d352 ("mmc: sdhci-omap: Add OMAP SDHCI driver")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Link: https://lore.kernel.org/r/20210921110029.21944-2-tony@atomide.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/mmc/host/sdhci-omap.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    diff --git a/drivers/mmc/host/sdhci-omap.c b/drivers/mmc/host/sdhci-omap.c
    index 05ade7a2dd243..f5bff9e710fb2 100644
    --- a/drivers/mmc/host/sdhci-omap.c
    +++ b/drivers/mmc/host/sdhci-omap.c
    @@ -690,7 +690,8 @@ static void sdhci_omap_set_power(struct sdhci_host *host, unsigned char mode,
    {
    struct mmc_host *mmc = host->mmc;

    - mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd);
    + if (!IS_ERR(mmc->supply.vmmc))
    + mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, vdd);
    }

    static int sdhci_omap_enable_dma(struct sdhci_host *host)
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-11-24 14:02    [W:4.023 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site