hvmloader: Fix e820_malloc() after bug I introduced in c/s 18383
authorKeir Fraser <keir.fraser@citrix.com>
Wed, 27 Aug 2008 14:16:13 +0000 (15:16 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Wed, 27 Aug 2008 14:16:13 +0000 (15:16 +0100)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
tools/firmware/hvmloader/util.c

index 1b2bdd99471ea14beee8c98662bdb6e3764cb289..fe33b0f124069722687e7108425bc674942e9517 100644 (file)
@@ -337,7 +337,7 @@ uint32_t e820_malloc(uint32_t size, uint32_t align)
 
     for ( i = *HVM_E820_NR - 1; i >= 0; i-- )
     {
-        addr = (ent[i].size - size) & ~(align-1);
+        addr = (ent[i].addr + ent[i].size - size) & ~(align-1);
         if ( (ent[i].type != E820_RAM) || /* not ram? */
              (addr < ent[i].addr) ||      /* too small or starts above 4gb? */
              ((addr + size) < addr) )     /* ends above 4gb? */