diff mbox

[1/1] mmc: wmt-sdmmc: Fix NULL pointer dereference

Message ID 1378974078-15416-1-git-send-email-sachin.kamat@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Sachin Kamat Sept. 12, 2013, 8:21 a.m. UTC
'of_id' is dereferenced before NULL pointer check. Move it to
after the check.

Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
---
Compile tested.
---
 drivers/mmc/host/wmt-sdmmc.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Tony Prisk Sept. 12, 2013, 6:43 p.m. UTC | #1
On 12/09/13 20:21, Sachin Kamat wrote:
> 'of_id' is dereferenced before NULL pointer check. Move it to
> after the check.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> ---
> Compile tested.
> ---
>   drivers/mmc/host/wmt-sdmmc.c |    4 +++-
>   1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/wmt-sdmmc.c b/drivers/mmc/host/wmt-sdmmc.c
> index 34231d5..3523a72 100644
> --- a/drivers/mmc/host/wmt-sdmmc.c
> +++ b/drivers/mmc/host/wmt-sdmmc.c
> @@ -771,7 +771,7 @@ static int wmt_mci_probe(struct platform_device *pdev)
>   	struct device_node *np = pdev->dev.of_node;
>   	const struct of_device_id *of_id =
>   		of_match_device(wmt_mci_dt_ids, &pdev->dev);
> -	const struct wmt_mci_caps *wmt_caps = of_id->data;
> +	const struct wmt_mci_caps *wmt_caps;
>   	int ret;
>   	int regular_irq, dma_irq;
>   
> @@ -780,6 +780,8 @@ static int wmt_mci_probe(struct platform_device *pdev)
>   		return -EFAULT;
>   	}
>   
> +	wmt_caps = of_id->data;
> +
>   	if (!np) {
>   		dev_err(&pdev->dev, "Missing SDMMC description in devicetree\n");
>   		return -EFAULT;

While I don't mind either way, this can never fail anyway. arch-vt8500 
is devicetree only, so the only way the driver will get probed is 
through a compatible-match, and .data must be (and is) specified.

I guess it's still good housekeeping to test it to protect future 
changes so:

Acked-by: Tony Prisk <linux@prisktech.co.nz>

Regards
Tony P
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sachin Kamat Sept. 27, 2013, 9:40 a.m. UTC | #2
On 13 September 2013 00:13, Tony Prisk <linux@prisktech.co.nz> wrote:
> On 12/09/13 20:21, Sachin Kamat wrote:
>>
>> 'of_id' is dereferenced before NULL pointer check. Move it to
>> after the check.
>>
>> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
>> ---
>> Compile tested.
>> ---
>>   drivers/mmc/host/wmt-sdmmc.c |    4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/mmc/host/wmt-sdmmc.c b/drivers/mmc/host/wmt-sdmmc.c
>> index 34231d5..3523a72 100644
>> --- a/drivers/mmc/host/wmt-sdmmc.c
>> +++ b/drivers/mmc/host/wmt-sdmmc.c
>> @@ -771,7 +771,7 @@ static int wmt_mci_probe(struct platform_device *pdev)
>>         struct device_node *np = pdev->dev.of_node;
>>         const struct of_device_id *of_id =
>>                 of_match_device(wmt_mci_dt_ids, &pdev->dev);
>> -       const struct wmt_mci_caps *wmt_caps = of_id->data;
>> +       const struct wmt_mci_caps *wmt_caps;
>>         int ret;
>>         int regular_irq, dma_irq;
>>   @@ -780,6 +780,8 @@ static int wmt_mci_probe(struct platform_device
>> *pdev)
>>                 return -EFAULT;
>>         }
>>   +     wmt_caps = of_id->data;
>> +
>>         if (!np) {
>>                 dev_err(&pdev->dev, "Missing SDMMC description in
>> devicetree\n");
>>                 return -EFAULT;
>
>
> While I don't mind either way, this can never fail anyway. arch-vt8500 is
> devicetree only, so the only way the driver will get probed is through a
> compatible-match, and .data must be (and is) specified.
>
> I guess it's still good housekeeping to test it to protect future changes
> so:
>
> Acked-by: Tony Prisk <linux@prisktech.co.nz>

Ping Chris.
Sachin Kamat Oct. 21, 2013, 3:09 a.m. UTC | #3
On 12 September 2013 13:51, Sachin Kamat <sachin.kamat@linaro.org> wrote:
> 'of_id' is dereferenced before NULL pointer check. Move it to
> after the check.
>
> Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org>
> ---
> Compile tested.
> ---
>  drivers/mmc/host/wmt-sdmmc.c |    4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/wmt-sdmmc.c b/drivers/mmc/host/wmt-sdmmc.c
> index 34231d5..3523a72 100644
> --- a/drivers/mmc/host/wmt-sdmmc.c
> +++ b/drivers/mmc/host/wmt-sdmmc.c
> @@ -771,7 +771,7 @@ static int wmt_mci_probe(struct platform_device *pdev)
>         struct device_node *np = pdev->dev.of_node;
>         const struct of_device_id *of_id =
>                 of_match_device(wmt_mci_dt_ids, &pdev->dev);
> -       const struct wmt_mci_caps *wmt_caps = of_id->data;
> +       const struct wmt_mci_caps *wmt_caps;
>         int ret;
>         int regular_irq, dma_irq;
>
> @@ -780,6 +780,8 @@ static int wmt_mci_probe(struct platform_device *pdev)
>                 return -EFAULT;
>         }
>
> +       wmt_caps = of_id->data;
> +
>         if (!np) {
>                 dev_err(&pdev->dev, "Missing SDMMC description in devicetree\n");
>                 return -EFAULT;
> --
> 1.7.9.5
>

Gentle ping...
diff mbox

Patch

diff --git a/drivers/mmc/host/wmt-sdmmc.c b/drivers/mmc/host/wmt-sdmmc.c
index 34231d5..3523a72 100644
--- a/drivers/mmc/host/wmt-sdmmc.c
+++ b/drivers/mmc/host/wmt-sdmmc.c
@@ -771,7 +771,7 @@  static int wmt_mci_probe(struct platform_device *pdev)
 	struct device_node *np = pdev->dev.of_node;
 	const struct of_device_id *of_id =
 		of_match_device(wmt_mci_dt_ids, &pdev->dev);
-	const struct wmt_mci_caps *wmt_caps = of_id->data;
+	const struct wmt_mci_caps *wmt_caps;
 	int ret;
 	int regular_irq, dma_irq;
 
@@ -780,6 +780,8 @@  static int wmt_mci_probe(struct platform_device *pdev)
 		return -EFAULT;
 	}
 
+	wmt_caps = of_id->data;
+
 	if (!np) {
 		dev_err(&pdev->dev, "Missing SDMMC description in devicetree\n");
 		return -EFAULT;