[U-Boot] [PATCH] mmc: sdhci: Check that ops are defined

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) {

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!
participants (3)
-
Michal Simek
-
Ramon Fried
-
Tom Rini