diff mbox series

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

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

Commit Message

Ramon Fried May 14, 2018, 12:02 p.m. UTC
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(-)

Comments

Michal Simek May 14, 2018, 1:28 p.m. UTC | #1
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
Tom Rini May 15, 2018, 12:28 p.m. UTC | #2
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 mbox series

Patch

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