Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b3760ce authored by Antonino A. Daplas's avatar Antonino A. Daplas Committed by Linus Torvalds
Browse files

[PATCH] intelfb: Fix freeing of nonexistent resource



Fix intelfb trying to free a non-existent resource in its error path.

Signed-off-by: default avatarAntonino Daplas <adaplas@pol.net>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 6ee7fb7e
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -41,6 +41,10 @@

/*** hw-related values ***/

/* Resource Allocation */
#define INTELFB_FB_ACQUIRED                 1
#define INTELFB_MMIO_ACQUIRED               2

/* PCI ids for supported devices */
#define PCI_DEVICE_ID_INTEL_830M	0x3577
#define PCI_DEVICE_ID_INTEL_845G	0x2562
@@ -257,6 +261,7 @@ struct intelfb_info {
	int hwcursor;
	int fixed_mode;
	int ring_active;
	int flag;

	/* hw cursor */
	int cursor_on;
+7 −2
Original line number Diff line number Diff line
@@ -473,9 +473,9 @@ cleanup(struct intelfb_info *dinfo)
	if (dinfo->aperture.virtual)
		iounmap((void __iomem *)dinfo->aperture.virtual);

	if (dinfo->mmio_base_phys)
	if (dinfo->flag & INTELFB_MMIO_ACQUIRED)
		release_mem_region(dinfo->mmio_base_phys, INTEL_REG_SIZE);
	if (dinfo->aperture.physical)
	if (dinfo->flag & INTELFB_FB_ACQUIRED)
		release_mem_region(dinfo->aperture.physical,
				   dinfo->aperture.size);
	framebuffer_release(dinfo->info);
@@ -572,6 +572,9 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
		cleanup(dinfo);
		return -ENODEV;
	}

	dinfo->flag |= INTELFB_FB_ACQUIRED;

	if (!request_mem_region(dinfo->mmio_base_phys,
				INTEL_REG_SIZE,
				INTELFB_MODULE_NAME)) {
@@ -580,6 +583,8 @@ intelfb_pci_register(struct pci_dev *pdev, const struct pci_device_id *ent)
		return -ENODEV;
	}

	dinfo->flag |= INTELFB_MMIO_ACQUIRED;

	/* Get the chipset info. */
	dinfo->pci_chipset = pdev->device;