From: Shixiong Ou <[email protected]> Fix missing pci_disable_device() in probe and remove.
Use pcim_enable_device(), pcim_request_all_regions(), devm_ioremap() and devm_ioremap_wc() to replace manual resource management. Remove all pci_release_regions() and iounmap() calls. Merge failed_init label into failed_enable. Signed-off-by: Shixiong Ou <[email protected]> --- drivers/video/fbdev/savage/savagefb_driver.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/video/fbdev/savage/savagefb_driver.c b/drivers/video/fbdev/savage/savagefb_driver.c index 7789196d2eb5..56ff3c50cd29 100644 --- a/drivers/video/fbdev/savage/savagefb_driver.c +++ b/drivers/video/fbdev/savage/savagefb_driver.c @@ -1728,7 +1728,7 @@ static int savage_map_mmio(struct fb_info *info) par->mmio.len = SAVAGE_NEWMMIO_REGSIZE; - par->mmio.vbase = ioremap(par->mmio.pbase, par->mmio.len); + par->mmio.vbase = devm_ioremap(&par->pcidev->dev, par->mmio.pbase, par->mmio.len); if (!par->mmio.vbase) { printk("savagefb: unable to map memory mapped IO\n"); return -ENOMEM; @@ -1755,7 +1755,6 @@ static void savage_unmap_mmio(struct fb_info *info) savage_disable_mmio(par); if (par->mmio.vbase) { - iounmap(par->mmio.vbase); par->mmio.vbase = NULL; } } @@ -1774,7 +1773,7 @@ static int savage_map_video(struct fb_info *info, int video_len) par->video.pbase = pci_resource_start(par->pcidev, resource); par->video.len = video_len; - par->video.vbase = ioremap_wc(par->video.pbase, par->video.len); + par->video.vbase = devm_ioremap_wc(&par->pcidev->dev, par->video.pbase, par->video.len); if (!par->video.vbase) { printk("savagefb: unable to map screen memory\n"); @@ -1802,7 +1801,6 @@ static void savage_unmap_video(struct fb_info *info) if (par->video.vbase) { arch_phys_wc_del(par->video.wc_cookie); - iounmap(par->video.vbase); par->video.vbase = NULL; info->screen_base = NULL; } @@ -2188,11 +2186,12 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id) return -ENOMEM; par = info->par; mutex_init(&par->open_lock); - err = pci_enable_device(dev); + err = pcim_enable_device(dev); if (err) goto failed_enable; - if ((err = pci_request_regions(dev, "savagefb"))) { + err = pcim_request_all_regions(dev, "savagefb"); + if (err) { printk(KERN_ERR "cannot request PCI regions\n"); goto failed_enable; } @@ -2200,7 +2199,7 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id) err = -ENOMEM; if ((err = savage_init_fb_info(info, dev, id))) - goto failed_init; + goto failed_enable; err = savage_map_mmio(info); if (err) @@ -2331,8 +2330,6 @@ static int savagefb_probe(struct pci_dev *dev, const struct pci_device_id *id) savage_unmap_mmio(info); failed_mmio: kfree(info->pixmap.addr); - failed_init: - pci_release_regions(dev); failed_enable: framebuffer_release(info); @@ -2355,7 +2352,6 @@ static void savagefb_remove(struct pci_dev *dev) savage_unmap_video(info); savage_unmap_mmio(info); kfree(info->pixmap.addr); - pci_release_regions(dev); framebuffer_release(info); } } -- 2.25.1 No virus found Checked by Hillstone Network AntiVirus
