Message ID | 20200109131953.157154-1-colin.king@canonical.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | [next,V2] dmaengine: ti: omap-dma: don't allow a null od->plat pointer to be dereferenced | expand |
Colin, On 09/01/2020 15.19, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Currently when the call to dev_get_platdata returns null the driver issues > a warning and then later dereferences the null pointer. Avoid this issue > by returning -ENODEV errror rather when the platform data is null and > change the warning to an appropriate error message. Thank you for the update! Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> > Addresses-Coverity: ("Dereference after null check") > Fixes: 211010aeb097 ("dmaengine: ti: omap-dma: Pass sdma auxdata to driver and use it") > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > > V2: return -ENODEV and change warning to an error message as suggested by > Peter Ujfalusi. > --- > drivers/dma/ti/omap-dma.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/dma/ti/omap-dma.c b/drivers/dma/ti/omap-dma.c > index fc8f7b2fc7b3..a93515015dce 100644 > --- a/drivers/dma/ti/omap-dma.c > +++ b/drivers/dma/ti/omap-dma.c > @@ -1658,8 +1658,10 @@ static int omap_dma_probe(struct platform_device *pdev) > if (conf) { > od->cfg = conf; > od->plat = dev_get_platdata(&pdev->dev); > - if (!od->plat) > - dev_warn(&pdev->dev, "no sdma auxdata needed?\n"); > + if (!od->plat) { > + dev_err(&pdev->dev, "omap_system_dma_plat_info is missing"); > + return -ENODEV; > + } > } else { > od->cfg = &default_cfg; > > - Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
On 09-01-20, 13:19, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Currently when the call to dev_get_platdata returns null the driver issues > a warning and then later dereferences the null pointer. Avoid this issue > by returning -ENODEV errror rather when the platform data is null and s/errror/error :) never thought would correct Colin on spelling :) With the typo fixes: Acked-by: Vinod Koul <vkoul@kernel.org>
On 10/01/2020 07:46, Vinod Koul wrote: > On 09-01-20, 13:19, Colin King wrote: >> From: Colin Ian King <colin.king@canonical.com> >> >> Currently when the call to dev_get_platdata returns null the driver issues >> a warning and then later dereferences the null pointer. Avoid this issue >> by returning -ENODEV errror rather when the platform data is null and > > s/errror/error :) never thought would correct Colin on spelling :) Doh, I need to add that to the checkpatch dictionary ;-) If this can be fixed up before it's applied then this would be appreciated rather than me sending a V3. > > With the typo fixes: > > Acked-by: Vinod Koul <vkoul@kernel.org> >
* Colin Ian King <colin.king@canonical.com> [200110 09:22]: > On 10/01/2020 07:46, Vinod Koul wrote: > > On 09-01-20, 13:19, Colin King wrote: > >> From: Colin Ian King <colin.king@canonical.com> > >> > >> Currently when the call to dev_get_platdata returns null the driver issues > >> a warning and then later dereferences the null pointer. Avoid this issue > >> by returning -ENODEV errror rather when the platform data is null and > > > > s/errror/error :) never thought would correct Colin on spelling :) > > Doh, I need to add that to the checkpatch dictionary ;-) > > If this can be fixed up before it's applied then this would be > appreciated rather than me sending a V3. I've fixed i up and pushed out into omap-for-v5.6/sdma. Thanks, Tony
diff --git a/drivers/dma/ti/omap-dma.c b/drivers/dma/ti/omap-dma.c index fc8f7b2fc7b3..a93515015dce 100644 --- a/drivers/dma/ti/omap-dma.c +++ b/drivers/dma/ti/omap-dma.c @@ -1658,8 +1658,10 @@ static int omap_dma_probe(struct platform_device *pdev) if (conf) { od->cfg = conf; od->plat = dev_get_platdata(&pdev->dev); - if (!od->plat) - dev_warn(&pdev->dev, "no sdma auxdata needed?\n"); + if (!od->plat) { + dev_err(&pdev->dev, "omap_system_dma_plat_info is missing"); + return -ENODEV; + } } else { od->cfg = &default_cfg;