Message ID | 20180514120230.3020-1-ramon.fried@gmail.com |
---|---|
State | Accepted |
Commit | b70fe965bb4c780f27efcc7aac0fd845c1825305 |
Delegated to: | Tom Rini |
Headers | show |
Series | [U-Boot] mmc: sdhci: Check that ops are defined | expand |
On 14.5.2018 14:02, Ramon Fried wrote: > The check is necessary to avoid NULL pointer dereference. > > Signed-off-by: Ramon Fried <ramon.fried@gmail.com> > --- > drivers/mmc/sdhci.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c > index 8971a1122c..400f87e134 100644 > --- a/drivers/mmc/sdhci.c > +++ b/drivers/mmc/sdhci.c > @@ -314,7 +314,7 @@ static int sdhci_execute_tuning(struct udevice *dev, uint opcode) > > debug("%s\n", __func__); > > - if (host->ops->platform_execute_tuning) { > + if (host->ops && host->ops->platform_execute_tuning) { > err = host->ops->platform_execute_tuning(mmc, opcode); > if (err) > return err; > @@ -347,7 +347,7 @@ static int sdhci_set_clock(struct mmc *mmc, unsigned int clock) > if (clock == 0) > return 0; > > - if (host->ops->set_delay) > + if (host->ops && host->ops->set_delay) > host->ops->set_delay(host); > > if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) { > Reviewed-by: Michal Simek <michal.simek@xilinx.com> Fixes: ca992e82e4e3 ("mmc: sdhci: Invoke platform specific tuning and delay routines") Tom: Can you please pick this directly? Some drivers are not filling host->ops that's why access cause a hang. Also it is kind of interesting that travis didn't show any issue. Thanks, Michal
On Mon, May 14, 2018 at 03:02:30PM +0300, Ramon Fried wrote: > The check is necessary to avoid NULL pointer dereference. > > Signed-off-by: Ramon Fried <ramon.fried@gmail.com> > Reviewed-by: Michal Simek <michal.simek@xilinx.com> Applied to u-boot/master, thanks!
diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c index 8971a1122c..400f87e134 100644 --- a/drivers/mmc/sdhci.c +++ b/drivers/mmc/sdhci.c @@ -314,7 +314,7 @@ static int sdhci_execute_tuning(struct udevice *dev, uint opcode) debug("%s\n", __func__); - if (host->ops->platform_execute_tuning) { + if (host->ops && host->ops->platform_execute_tuning) { err = host->ops->platform_execute_tuning(mmc, opcode); if (err) return err; @@ -347,7 +347,7 @@ static int sdhci_set_clock(struct mmc *mmc, unsigned int clock) if (clock == 0) return 0; - if (host->ops->set_delay) + if (host->ops && host->ops->set_delay) host->ops->set_delay(host); if (SDHCI_GET_VERSION(host) >= SDHCI_SPEC_300) {
The check is necessary to avoid NULL pointer dereference. Signed-off-by: Ramon Fried <ramon.fried@gmail.com> --- drivers/mmc/sdhci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)