diff mbox series

ata: pata_pxa: Add missing check for devm_ioremap

Message ID 20230209092814.10847-1-jiasheng@iscas.ac.cn
State New
Headers show
Series ata: pata_pxa: Add missing check for devm_ioremap | expand

Commit Message

Jiasheng Jiang Feb. 9, 2023, 9:28 a.m. UTC
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 <jiasheng@iscas.ac.cn>
---
 drivers/ata/pata_pxa.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Sergey Shtylyov Feb. 9, 2023, 9:54 a.m. UTC | #1
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 <jiasheng@iscas.ac.cn>
> ---
>  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/20220612073222.18974-1-liqiong@nfschina.com/

MBR, Sergey
Sergey Shtylyov Feb. 9, 2023, 9:54 a.m. UTC | #2
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 <jiasheng@iscas.ac.cn>
> ---
>  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/20220612073222.18974-1-liqiong@nfschina.com/

MBR, Sergey
diff mbox series

Patch

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