summaryrefslogtreecommitdiffstats
path: root/drivers/video/efifb.c
diff options
context:
space:
mode:
authorMatthew Garrett <mjg59@srcf.ucam.org>2009-04-13 23:39:44 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-14 00:04:29 +0200
commit133bb070e94ab41d750c6f2160c8843e46f11b78 (patch)
tree843aaa121f13ed754c8f14bd7011591035ac1550 /drivers/video/efifb.c
parentuvesafb: fix color component length for pseudocolor modes (diff)
downloadlinux-133bb070e94ab41d750c6f2160c8843e46f11b78.tar.xz
linux-133bb070e94ab41d750c6f2160c8843e46f11b78.zip
efifb: exit if framebuffer address is invalid
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>
Diffstat (limited to 'drivers/video/efifb.c')
-rw-r--r--drivers/video/efifb.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/efifb.c b/drivers/video/efifb.c
index 0c5b9a9fd56f..8dea2bc92705 100644
--- a/drivers/video/efifb.c
+++ b/drivers/video/efifb.c
@@ -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) {