VIDEO: cyberpro: pci_request_regions needs a persistent name
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 24 Dec 2009 13:36:21 +0000 (13:36 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 24 Dec 2009 18:34:09 +0000 (18:34 +0000)
Don't pass a name pointer from the kernel stack, it will not survive
and will result in corrupted /proc/iomem output.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
drivers/video/cyber2000fb.c

index da7c01b39be248129a1a5f99274695cc510872d2..3a561df2e8a29d7b020913beef4a86fb705836a3 100644 (file)
@@ -1573,15 +1573,15 @@ cyberpro_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
        if (err)
                return err;
 
-       err = pci_request_regions(dev, name);
-       if (err)
-               return err;
-
        err = -ENOMEM;
        cfb = cyberpro_alloc_fb_info(id->driver_data, name);
        if (!cfb)
                goto failed_release;
 
+       err = pci_request_regions(dev, cfb->fb.fix.id);
+       if (err)
+               goto failed_regions;
+
        cfb->dev = dev;
        cfb->region = pci_ioremap_bar(dev, 0);
        if (!cfb->region)
@@ -1633,10 +1633,10 @@ cyberpro_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 failed:
        iounmap(cfb->region);
 failed_ioremap:
+       pci_release_regions(dev);
+failed_regions:
        cyberpro_free_fb_info(cfb);
 failed_release:
-       pci_release_regions(dev);
-
        return err;
 }