mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
drivers/video/carminefb.c: improve error handling
This code had an error handling goto to the wrong place, a misplaced release_mem_region, and a duplicated release_mem_region. The semantic match that finds the double release_mem_region is as follows: (http://coccinelle.lip6.fr/) // <smpl> @r@ expression e1,e2,e3; position p1,p2,p3; @@ release_mem_region@p1(e1, e2)@p3; ... when != request_mem_region(e1,e2,e3) release_mem_region(e1, e2)@p2; @@ expression e <= r.e1,e3; expression r.e1,e2; position r.p1,r.p2,r.p3,p!=r.p1; @@ *release_mem_region(e1, e2)@p3; ... when != e = e3 *release_mem_region@p(e1, e2)@p2;// </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
7ee04fd5d5
commit
e045da7d83
@ -654,7 +654,7 @@ static int __devinit carminefb_probe(struct pci_dev *dev,
|
||||
printk(KERN_ERR "carminefb: Memory bar is only %d bytes, %d "
|
||||
"are required.", carminefb_fix.smem_len,
|
||||
CARMINE_TOTAL_DIPLAY_MEM);
|
||||
goto err_free_reg_mmio;
|
||||
goto err_unmap_vregs;
|
||||
}
|
||||
|
||||
if (!request_mem_region(carminefb_fix.smem_start,
|
||||
@ -667,8 +667,6 @@ static int __devinit carminefb_probe(struct pci_dev *dev,
|
||||
carminefb_fix.smem_len);
|
||||
if (!hw->screen_mem) {
|
||||
printk(KERN_ERR "carmine: Can't ioremap smem area.\n");
|
||||
release_mem_region(carminefb_fix.smem_start,
|
||||
carminefb_fix.smem_len);
|
||||
goto err_reg_smem;
|
||||
}
|
||||
|
||||
@ -710,7 +708,7 @@ err_deinit_hw:
|
||||
err_unmap_screen:
|
||||
iounmap(hw->screen_mem);
|
||||
err_reg_smem:
|
||||
release_mem_region(carminefb_fix.mmio_start, carminefb_fix.mmio_len);
|
||||
release_mem_region(carminefb_fix.smem_start, carminefb_fix.smem_len);
|
||||
err_unmap_vregs:
|
||||
iounmap(hw->v_regs);
|
||||
err_free_reg_mmio:
|
||||
|
Loading…
Reference in New Issue
Block a user