linux/arch/x86_64
Robert Hentosh 7ca97c6131 [PATCH] x86_64: Fix off by one in bad_addr checking in find_e820_area
From: Robert Hentosh <robert_hentosh@dell.com>

Actually, we just stumbled on a different bug found in find_e820_area() in
e820.c.  The following code does not handle the edge condition correctly:

   while (bad_addr(&addr, size) && addr+size < ei->addr + ei->size)
       ;
   last = addr + size;
   if ( last > ei->addr + ei->size )
       continue;

The second statement in the while loop needs to be a <= b so that it is the
logical negavite of the if (a > b) outside it. It needs to read:

   while (bad_addr(&addr, size) && addr+size <= ei->addr + ei->size)
       ;

In the case that failed bad_addr was returning an address that is exactly size
bellow the end of the e820 range.

AK: Again together with the earlier avoid edma fix this fixes
boot on a Dell PE6850/16GB

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-05-30 20:31:06 -07:00
..
boot [PATCH] vesafb: Fix incorrect logo colors in x86_64 2006-04-11 06:18:54 -07:00
crypto [CRYPTO] aes: Fixed array boundary violation 2006-03-21 20:14:10 +11:00
ia32 [PATCH] x86_64: Fix stack/mmap randomization for compat tasks 2006-05-30 20:31:05 -07:00
kernel [PATCH] x86_64: Fix off by one in bad_addr checking in find_e820_area 2006-05-30 20:31:06 -07:00
lib [PATCH] x86_64: remove dead do_softirq_thunk 2006-03-25 09:10:53 -08:00
mm [PATCH] x86_64: Handle empty node zero 2006-05-30 20:31:06 -07:00
oprofile [PATCH] Move Kprobes and Oprofile to "Instrumentation Support" menu 2005-11-07 07:53:35 -08:00
pci [PATCH] x86_64: Fix embarassing typo in mmconfig bus check 2006-04-11 06:38:57 -07:00
defconfig [PATCH] x86_64: Update defconfig 2006-04-18 10:39:19 -07:00
Kconfig [PATCH] Configurable NODES_SHIFT 2006-04-11 06:18:39 -07:00
Kconfig.debug [PATCH] x86_64: Remove CONFIG_INIT_DEBUG 2006-02-04 16:43:13 -08:00
Makefile [PATCH] x86_64: fix CONFIG_REORDER 2006-04-09 11:53:53 -07:00