Hi, On 01/13/2017 11:51 AM, Masahiro Yamada wrote: > Until recently, sdhci_ops was used only for overriding IO accessors. > (so, host->ops was not set by any drivers except bcm2835_sdhci.c) > > Now, we have more optional callbacks, get_cd, set_control_reg, and > set_clock. However, the code > > if (host->ops->get_cd) > host->ops->get_cd(host); > > ... expects host->ops is set for all drivers. > > Commit 5e96217f0434 ("mmc: pic32_sdhci: move the code to > pic32_sdhci.c") and commit 62226b68631b ("mmc: sdhci: move the > callback function into sdhci_ops") added sdhci_ops for pic32_sdhci.c > and s5p_sdhci.c, but the other drivers still do not (need not) set > host->ops because all callbacks in sdhci_ops are optional. > > host->ops must be checked to avoid the system crash caused by NULL > pointer access. > > Signed-off-by: Masahiro Yamada <yamada.masah...@socionext.com>
Thanks a lot! Applied on u-boot-mmc. Best Regards, Jaehoon Chung > --- > > drivers/mmc/sdhci.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c > index 3a1f4f7..5b404ff 100644 > --- a/drivers/mmc/sdhci.c > +++ b/drivers/mmc/sdhci.c > @@ -359,7 +359,7 @@ static int sdhci_set_clock(struct mmc *mmc, unsigned int > clock) > div >>= 1; > } > > - if (host->ops->set_clock) > + if (host->ops && host->ops->set_clock) > host->ops->set_clock(host, div); > > clk |= (div & SDHCI_DIV_MASK) << SDHCI_DIVIDER_SHIFT; > @@ -427,7 +427,7 @@ static int sdhci_set_ios(struct mmc *mmc) > u32 ctrl; > struct sdhci_host *host = mmc->priv; > > - if (host->ops->set_control_reg) > + if (host->ops && host->ops->set_control_reg) > host->ops->set_control_reg(host); > > if (mmc->clock != host->clock) > @@ -480,7 +480,7 @@ static int sdhci_init(struct mmc *mmc) > > sdhci_set_power(host, fls(mmc->cfg->voltages) - 1); > > - if (host->ops->get_cd) > + if (host->ops && host->ops->get_cd) > host->ops->get_cd(host); > > /* Enable only interrupts served by the SD controller */ > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot