efifb: exit if framebuffer address is invalid
authorMatthew Garrett <mjg59@srcf.ucam.org>
Mon, 13 Apr 2009 21:39:44 +0000 (14:39 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 13 Apr 2009 22:04:29 +0000 (15:04 -0700)
efifb will attempt to ioremap a framebuffer even if its starting address
is 0, failing and causing an ugly backtrace in the process.  Exit before
probing if this is the case.

Signed-off-by: Matthew Garrett <mjg@redhat.com>
Acked-by: Peter Jones <pjones@redhat.com>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/video/efifb.c

index 0c5b9a9fd56f178cf0ad10bed907138a2b06fe3c..8dea2bc927054783658183f662d9644e2eb27efc 100644 (file)
@@ -210,12 +210,15 @@ static int __init efifb_probe(struct platform_device *dev)
        unsigned int size_total;
        int request_succeeded = 0;
 
-       printk(KERN_INFO "efifb: probing for efifb\n");
-
        if (!screen_info.lfb_depth)
                screen_info.lfb_depth = 32;
        if (!screen_info.pages)
                screen_info.pages = 1;
+       if (!screen_info.lfb_base) {
+               printk(KERN_DEBUG "efifb: invalid framebuffer address\n");
+               return -ENODEV;
+       }
+       printk(KERN_INFO "efifb: probing for efifb\n");
 
        /* just assume they're all unset if any are */
        if (!screen_info.blue_size) {