]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/kern/mm.c (grub_mm_init_region): Fix condition for
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 20 Apr 2013 15:39:49 +0000 (17:39 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 20 Apr 2013 15:39:49 +0000 (17:39 +0200)
detecting too small regions.

ChangeLog
grub-core/kern/mm.c

index b2e3cccac7229ab4f17e3bb5786132b5d6235e66..2a4264cf0dddf07546d6db026fa2c90838c4b4a3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-20  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/kern/mm.c (grub_mm_init_region): Fix condition for
+       detecting too small regions.
+
 2013-04-20  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/Makefile.core.def (legacycfg): Enable on EFI.
index d8690916c987ae55737db1f1aa4c011966a31c3a..959c3bab10fbd3f52a303d79cdcde16941623bab 100644 (file)
@@ -140,12 +140,13 @@ grub_mm_init_region (void *addr, grub_size_t size)
 
   /* Allocate a region from the head.  */
   r = (grub_mm_region_t) ALIGN_UP ((grub_addr_t) addr, GRUB_MM_ALIGN);
-  size -= (char *) r - (char *) addr + sizeof (*r);
 
   /* If this region is too small, ignore it.  */
-  if (size < GRUB_MM_ALIGN)
+  if (size < GRUB_MM_ALIGN + (char *) r - (char *) addr + sizeof (*r))
     return;
 
+  size -= (char *) r - (char *) addr + sizeof (*r);
+
   h = (grub_mm_header_t) (r + 1);
   h->next = h;
   h->magic = GRUB_MM_FREE_MAGIC;