From: Julia Lawall <julia@xxxxxxx> The assignments of res to the results of the two calls to platform_get_resource make it impossible to use res in the error handling code in the arguments to release_mem_region. At the same time, code of the form res->end - res->start + 1 is converted to use resource_size. The semantic match that finds the former problem is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r exists@ expression E, E1; identifier f; statement S1,S3; iterator iter; @@ if ((E == NULL && ...) || ...) { ... when != false ((E == NULL && ...) || ...) when != true ((E != NULL && ...) || ...) when != iter(E,...) S1 when != E = E1 ( sizeof(E->f) | * E->f ) ... when any return ...; } else S3 // </smpl> Signed-off-by: Julia Lawall <julia@xxxxxxx> --- arch/arm/mach-pxa/ssp.c | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/arm/mach-pxa/ssp.c b/arch/arm/mach-pxa/ssp.c index a81d6db..9fdbd38 100644 --- a/arch/arm/mach-pxa/ssp.c +++ b/arch/arm/mach-pxa/ssp.c @@ -349,6 +349,7 @@ static int __devinit ssp_probe(struct platform_device *pdev) { const struct platform_device_id *id = platform_get_device_id(pdev); struct resource *res; + struct resource *pres; struct ssp_device *ssp; int ret = 0; @@ -372,8 +373,7 @@ static int __devinit ssp_probe(struct platform_device *pdev) goto err_free_clk; } - res = request_mem_region(res->start, res->end - res->start + 1, - pdev->name); + res = request_mem_region(res->start, resource_size(res), pdev->name); if (res == NULL) { dev_err(&pdev->dev, "failed to request memory resource\n"); ret = -EBUSY; @@ -382,7 +382,7 @@ static int __devinit ssp_probe(struct platform_device *pdev) ssp->phys_base = res->start; - ssp->mmio_base = ioremap(res->start, res->end - res->start + 1); + ssp->mmio_base = ioremap(res->start, resource_size(res)); if (ssp->mmio_base == NULL) { dev_err(&pdev->dev, "failed to ioremap() registers\n"); ret = -ENODEV; @@ -396,21 +396,21 @@ static int __devinit ssp_probe(struct platform_device *pdev) goto err_free_io; } - res = platform_get_resource(pdev, IORESOURCE_DMA, 0); - if (res == NULL) { + pres = platform_get_resource(pdev, IORESOURCE_DMA, 0); + if (pres == NULL) { dev_err(&pdev->dev, "no SSP RX DRCMR defined\n"); ret = -ENODEV; goto err_free_io; } - ssp->drcmr_rx = res->start; + ssp->drcmr_rx = pres->start; - res = platform_get_resource(pdev, IORESOURCE_DMA, 1); - if (res == NULL) { + pres = platform_get_resource(pdev, IORESOURCE_DMA, 1); + if (pres == NULL) { dev_err(&pdev->dev, "no SSP TX DRCMR defined\n"); ret = -ENODEV; goto err_free_io; } - ssp->drcmr_tx = res->start; + ssp->drcmr_tx = pres->start; /* PXA2xx/3xx SSP ports starts from 1 and the internal pdev->id * starts from 0, do a translation here @@ -429,7 +429,7 @@ static int __devinit ssp_probe(struct platform_device *pdev) err_free_io: iounmap(ssp->mmio_base); err_free_mem: - release_mem_region(res->start, res->end - res->start + 1); + release_mem_region(res->start, resource_size(res)); err_free_clk: clk_put(ssp->clk); err_free: -- To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html