|
@@ -400,6 +400,7 @@ int __init igafb_init(void)
|
|
info = kzalloc(size, GFP_ATOMIC);
|
|
info = kzalloc(size, GFP_ATOMIC);
|
|
if (!info) {
|
|
if (!info) {
|
|
printk("igafb_init: can't alloc fb_info\n");
|
|
printk("igafb_init: can't alloc fb_info\n");
|
|
|
|
+ pci_dev_put(pdev);
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -409,12 +410,14 @@ int __init igafb_init(void)
|
|
if ((addr = pdev->resource[0].start) == 0) {
|
|
if ((addr = pdev->resource[0].start) == 0) {
|
|
printk("igafb_init: no memory start\n");
|
|
printk("igafb_init: no memory start\n");
|
|
kfree(info);
|
|
kfree(info);
|
|
|
|
+ pci_dev_put(pdev);
|
|
return -ENXIO;
|
|
return -ENXIO;
|
|
}
|
|
}
|
|
|
|
|
|
if ((info->screen_base = ioremap(addr, 1024*1024*2)) == 0) {
|
|
if ((info->screen_base = ioremap(addr, 1024*1024*2)) == 0) {
|
|
printk("igafb_init: can't remap %lx[2M]\n", addr);
|
|
printk("igafb_init: can't remap %lx[2M]\n", addr);
|
|
kfree(info);
|
|
kfree(info);
|
|
|
|
+ pci_dev_put(pdev);
|
|
return -ENXIO;
|
|
return -ENXIO;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -449,6 +452,7 @@ int __init igafb_init(void)
|
|
printk("igafb_init: can't remap %lx[4K]\n", igafb_fix.mmio_start);
|
|
printk("igafb_init: can't remap %lx[4K]\n", igafb_fix.mmio_start);
|
|
iounmap((void *)info->screen_base);
|
|
iounmap((void *)info->screen_base);
|
|
kfree(info);
|
|
kfree(info);
|
|
|
|
+ pci_dev_put(pdev);
|
|
return -ENXIO;
|
|
return -ENXIO;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -466,6 +470,7 @@ int __init igafb_init(void)
|
|
iounmap((void *)par->io_base);
|
|
iounmap((void *)par->io_base);
|
|
iounmap(info->screen_base);
|
|
iounmap(info->screen_base);
|
|
kfree(info);
|
|
kfree(info);
|
|
|
|
+ pci_dev_put(pdev);
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
}
|
|
}
|
|
|
|
|