Re: [PATCH ] /drivers/ata ioremap returncode check

From: Brandon Philips
Date: Wed Aug 22 2007 - 14:11:46 EST


On 20:31 Mon 13 Aug 2007, Scott Thompson wrote:
> patchset against 2.6.23-rc3. corrects missing ioremap return checks.
>
> Warning -- cleanup handler here may miss additional required cleanup as has occurred on other
> portions of ioremap audit.
>
> This patch had been submitted previously but hushmail client caused wordwrap issues, resending
> with different mail client.
>
> Signed-off-by: Scott Thompson <postfail <at> hushmail.com>
> ----------------------------------------------------------
>
> diff --git a/drivers/ata/pata_ixp4xx_cf.c b/drivers/ata/pata_ixp4xx_cf.c
> index 4ca7fd6..eaebc4d 100644
> --- a/drivers/ata/pata_ixp4xx_cf.c
> +++ b/drivers/ata/pata_ixp4xx_cf.c
> @@ -189,6 +189,14 @@ static __devinit int ixp4xx_pata_probe(struct platform_device *pdev)
> data->cs0 = devm_ioremap(&pdev->dev, cs0->start, 0x1000);
> data->cs1 = devm_ioremap(&pdev->dev, cs1->start, 0x1000);
>
> + if (!data->cs0 || !data->cs1) {
> + if (data->cs0)
> + iounmap(data->cs0);
> + if (data->cs1)
> + iounmap(data->cs1);
> + return -ENOMEM;
> + }
> +
> irq = platform_get_irq(pdev, 0);
> if (irq)
> set_irq_type(irq, IRQT_RISING);

The iounmap calls are unnecessary since devm_ioremap will un-allocate
the space if you return an error from probe. See
Documentation/driver-model/devres.txt

But, something like this is needed.

+ if (!data->cs0 || !data->cs1)
+ return -ENOMEM;

Thanks,

Brandon
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/