Merge branch 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 14 Sep 2009 15:01:47 +0000 (08:01 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 14 Sep 2009 15:01:47 +0000 (08:01 -0700)
* 'x86-setup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86, e820: Guard against array overflowed in __e820_add_region()
  x86, setup: remove obsolete pre-Kconfig CONFIG_VIDEO_ variables

arch/x86/boot/video-vesa.c
arch/x86/boot/video-vga.c
arch/x86/boot/video.c
arch/x86/boot/video.h
arch/x86/kernel/e820.c

index 275dd177f1985719f239c10a148306c9c5995572..11e8c6eb80a1014b4f0df92d15ccca32d29c6625 100644 (file)
@@ -31,7 +31,6 @@ static inline void vesa_store_mode_params_graphics(void) {}
 
 static int vesa_probe(void)
 {
-#if defined(CONFIG_VIDEO_VESA) || defined(CONFIG_FIRMWARE_EDID)
        struct biosregs ireg, oreg;
        u16 mode;
        addr_t mode_ptr;
@@ -49,8 +48,7 @@ static int vesa_probe(void)
            vginfo.signature != VESA_MAGIC ||
            vginfo.version < 0x0102)
                return 0;       /* Not present */
-#endif /* CONFIG_VIDEO_VESA || CONFIG_FIRMWARE_EDID */
-#ifdef CONFIG_VIDEO_VESA
+
        set_fs(vginfo.video_mode_ptr.seg);
        mode_ptr = vginfo.video_mode_ptr.off;
 
@@ -102,9 +100,6 @@ static int vesa_probe(void)
        }
 
        return nmodes;
-#else
-       return 0;
-#endif /* CONFIG_VIDEO_VESA */
 }
 
 static int vesa_set_mode(struct mode_info *mode)
index 8f8d827e254d0b8cb392bf7fe95103059ac5ca89..819caa1f200879887c3726de406cbf664a771960 100644 (file)
@@ -47,14 +47,6 @@ static u8 vga_set_basic_mode(void)
 
        initregs(&ireg);
 
-#ifdef CONFIG_VIDEO_400_HACK
-       if (adapter >= ADAPTER_VGA) {
-               ireg.ax = 0x1202;
-               ireg.bx = 0x0030;
-               intcall(0x10, &ireg, NULL);
-       }
-#endif
-
        ax = 0x0f00;
        intcall(0x10, &ireg, &oreg);
        mode = oreg.al;
@@ -62,11 +54,9 @@ static u8 vga_set_basic_mode(void)
        set_fs(0);
        rows = rdfs8(0x484);    /* rows minus one */
 
-#ifndef CONFIG_VIDEO_400_HACK
        if ((oreg.ax == 0x5003 || oreg.ax == 0x5007) &&
            (rows == 0 || rows == 24))
                return mode;
-#endif
 
        if (mode != 3 && mode != 7)
                mode = 3;
index bad728b76fc2acff40b1e5052ae20b0e08ea5dc1..d42da380249940ced8d6cdbb13bf76467ea89792 100644 (file)
@@ -221,7 +221,6 @@ static unsigned int mode_menu(void)
        }
 }
 
-#ifdef CONFIG_VIDEO_RETAIN
 /* Save screen content to the heap */
 static struct saved_screen {
        int x, y;
@@ -299,10 +298,6 @@ static void restore_screen(void)
        ireg.dl = saved.curx;
        intcall(0x10, &ireg, NULL);
 }
-#else
-#define save_screen()          ((void)0)
-#define restore_screen()       ((void)0)
-#endif
 
 void set_video(void)
 {
index 5bb174a997fc61a3609a0a41500192f4475e676a..ff339c5db31127c7db4e27d9e16c32d1d3d0753d 100644 (file)
 
 #include <linux/types.h>
 
-/* Enable autodetection of SVGA adapters and modes. */
-#undef CONFIG_VIDEO_SVGA
-
-/* Enable autodetection of VESA modes */
-#define CONFIG_VIDEO_VESA
-
-/* Retain screen contents when switching modes */
-#define CONFIG_VIDEO_RETAIN
-
-/* Force 400 scan lines for standard modes (hack to fix bad BIOS behaviour */
-#undef CONFIG_VIDEO_400_HACK
-
-/* This code uses an extended set of video mode numbers. These include:
+/*
+ * This code uses an extended set of video mode numbers. These include:
  * Aliases for standard modes
  *      NORMAL_VGA (-1)
  *      EXTENDED_VGA (-2)
 /* The "recalculate timings" flag */
 #define VIDEO_RECALC 0x8000
 
-/* Define DO_STORE according to CONFIG_VIDEO_RETAIN */
-#ifdef CONFIG_VIDEO_RETAIN
 void store_screen(void);
 #define DO_STORE() store_screen()
-#else
-#define DO_STORE() ((void)0)
-#endif /* CONFIG_VIDEO_RETAIN */
 
 /*
  * Mode table structures
index 5cb5725b2bae26b97ab1f080599a13ab09cc9770..147005a1cc3cf6cd85579fb6809e6eafe38dcb66 100644 (file)
@@ -115,7 +115,7 @@ static void __init __e820_add_region(struct e820map *e820x, u64 start, u64 size,
 {
        int x = e820x->nr_map;
 
-       if (x == ARRAY_SIZE(e820x->map)) {
+       if (x >= ARRAY_SIZE(e820x->map)) {
                printk(KERN_ERR "Ooops! Too many entries in the memory map!\n");
                return;
        }