2023-02-09 09:35:21

by Jiasheng Jiang

[permalink] [raw]
Subject: [PATCH] ata: pata_pxa: Add missing check for devm_ioremap

Add the check for the return value of the devm_ioremap in order to avoid
NULL pointer dereference.

Fixes: 2dc6c6f15da9 ("[ARM] pata_pxa: DMA-capable PATA driver")
Signed-off-by: Jiasheng Jiang <[email protected]>
---
drivers/ata/pata_pxa.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/ata/pata_pxa.c b/drivers/ata/pata_pxa.c
index 985f42c4fd70..a20bb0824573 100644
--- a/drivers/ata/pata_pxa.c
+++ b/drivers/ata/pata_pxa.c
@@ -227,6 +227,8 @@ static int pxa_ata_probe(struct platform_device *pdev)
resource_size(ctl_res));
ap->ioaddr.bmdma_addr = devm_ioremap(&pdev->dev, dma_res->start,
resource_size(dma_res));
+ if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr || !ap->ioaddr.bmdma_addr)
+ return -ENOMEM;

/*
* Adjust register offsets
--
2.25.1



2023-02-09 09:54:54

by Sergey Shtylyov

[permalink] [raw]
Subject: Re: [PATCH] ata: pata_pxa: Add missing check for devm_ioremap

On 2/9/23 12:28 PM, Jiasheng Jiang wrote:

> Add the check for the return value of the devm_ioremap in order to avoid
> NULL pointer dereference.
>
> Fixes: 2dc6c6f15da9 ("[ARM] pata_pxa: DMA-capable PATA driver")
> Signed-off-by: Jiasheng Jiang <[email protected]>
> ---
> drivers/ata/pata_pxa.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/ata/pata_pxa.c b/drivers/ata/pata_pxa.c
> index 985f42c4fd70..a20bb0824573 100644
> --- a/drivers/ata/pata_pxa.c
> +++ b/drivers/ata/pata_pxa.c
> @@ -227,6 +227,8 @@ static int pxa_ata_probe(struct platform_device *pdev)
> resource_size(ctl_res));
> ap->ioaddr.bmdma_addr = devm_ioremap(&pdev->dev, dma_res->start,
> resource_size(dma_res));
> + if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr || !ap->ioaddr.bmdma_addr)
> + return -ENOMEM;

Such patch has been postyed already but the driver is more broken than just
ths check missing, see:

https://lore.kernel.org/all/[email protected]/

MBR, Sergey

2023-02-09 09:54:59

by Sergey Shtylyov

[permalink] [raw]
Subject: Re: [PATCH] ata: pata_pxa: Add missing check for devm_ioremap

On 2/9/23 12:28 PM, Jiasheng Jiang wrote:

> Add the check for the return value of the devm_ioremap in order to avoid
> NULL pointer dereference.
>
> Fixes: 2dc6c6f15da9 ("[ARM] pata_pxa: DMA-capable PATA driver")
> Signed-off-by: Jiasheng Jiang <[email protected]>
> ---
> drivers/ata/pata_pxa.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/ata/pata_pxa.c b/drivers/ata/pata_pxa.c
> index 985f42c4fd70..a20bb0824573 100644
> --- a/drivers/ata/pata_pxa.c
> +++ b/drivers/ata/pata_pxa.c
> @@ -227,6 +227,8 @@ static int pxa_ata_probe(struct platform_device *pdev)
> resource_size(ctl_res));
> ap->ioaddr.bmdma_addr = devm_ioremap(&pdev->dev, dma_res->start,
> resource_size(dma_res));
> + if (!ap->ioaddr.cmd_addr || !ap->ioaddr.ctl_addr || !ap->ioaddr.bmdma_addr)
> + return -ENOMEM;

Such patch has been posted already but the driver is more broken than just
this check missing, see:

https://lore.kernel.org/all/[email protected]/

MBR, Sergey