mmc: sdhci: Check that ops are defined
PATCH 1/1 mmc: sdhci: Check that ops are defined
The check is necessary to avoid NULL pointer dereference.
Signed-off-by Ramon Fried <[email protected]>
--- drivers/mmc/sdhci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/mmc/sdhci.c +2 -2
@@ -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 ) {
Signature · 1 line
2.17.0
PATCH 1/1 mmc: sdhci: Check that ops are defined
Quoted 22 lines · Ramon Fried
The check is necessary to avoid NULL pointer dereference.
Signed-off-by Ramon Fried <[email protected]>--- drivers/mmc/sdhci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)drivers/mmc/sdhci.c +1
-1@@ -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;
drivers/mmc/sdhci.c static int sdhci_set_clock(struct mmc *mmc, unsigned int clock) · line 353
Quoted 8 lines
drivers/mmc/sdhci.c +1
-1@@ -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 <[email protected]>
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
Quoted 4 lines · Ramon Fried
The check is necessary to avoid NULL pointer dereference.
Signed-off-by Ramon Fried <[email protected]>Reviewed-by Michal Simek <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: not available URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180515/0cdbcac8/attachment.sig>