viafb: fix ioremap_nocache error handling
authorFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
Tue, 22 Sep 2009 23:47:15 +0000 (16:47 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 23 Sep 2009 14:39:51 +0000 (07:39 -0700)
Correct the returned error code for remapping the video framebuffer.
Introduce error handling for remapping MMIO register address space to
avoid a NULL pointer dereference.  Disable hardware acceleration if
remapping MMIO register address space failed as those registers are only
used for hardware acceleration.

Signed-off-by: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
Cc: Scott Fang <ScottFang@viatech.com.cn>
Cc: Joseph Chan <JosephChan@via.com.tw>
Cc: Harald Welte <laforge@gnumonks.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/via/viafbdev.c

index 743eed4..72759b6 100644 (file)
@@ -2134,12 +2134,16 @@ static int __devinit via_pci_probe(void)
 
        if (!viaparinfo->fbmem_virt) {
                printk(KERN_INFO "ioremap failed\n");
-               return -1;
+               return -ENOMEM;
        }
 
        viafb_get_mmio_info(&viaparinfo->mmio_base, &viaparinfo->mmio_len);
        viaparinfo->io_virt = ioremap_nocache(viaparinfo->mmio_base,
                viaparinfo->mmio_len);
+       if (!viaparinfo->io_virt) {
+               printk(KERN_WARNING "ioremap failed: hardware acceleration disabled\n");
+               viafb_accel = 0;
+       }
 
        viafbinfo->node = 0;
        viafbinfo->fbops = &viafb_ops;