mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-25 16:49:23 +00:00
* kern/mm.c (grub_mm_init_region): Check for region size after aligning
pointers.
This commit is contained in:
1 parent
2589383147
commit
9b058d5291
2 files changed
+10
-6
No files matched your search
@@ -1,3 +1,8 @@
|
|||||||
|
2010-05-01 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* kern/mm.c (grub_mm_init_region): Check for region size after aligning
|
||||||
|
pointers.
|
||||||
|
|
||||||
2010-05-01 Vladimir Serbinenko <phcoder@gmail.com>
|
2010-05-01 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* kern/mm.c (grub_real_malloc): Fix size calculation when extra == 0.
|
* kern/mm.c (grub_real_malloc): Fix size calculation when extra == 0.
|
||||||
|
|||||||
@@ -148,15 +148,14 @@ grub_mm_init_region (void *addr, grub_size_t size)
|
|||||||
grub_printf ("Using memory for heap: start=%p, end=%p\n", addr, addr + (unsigned int) size);
|
grub_printf ("Using memory for heap: start=%p, end=%p\n", addr, addr + (unsigned int) size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* If this region is too small, ignore it. */
|
|
||||||
if (size < GRUB_MM_ALIGN * 2)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* Allocate a region from the head. */
|
/* Allocate a region from the head. */
|
||||||
r = (grub_mm_region_t) (((grub_addr_t) addr + GRUB_MM_ALIGN - 1)
|
r = (grub_mm_region_t) ALIGN_UP ((grub_addr_t) addr, GRUB_MM_ALIGN);
|
||||||
& (~(GRUB_MM_ALIGN - 1)));
|
|
||||||
size -= (char *) r - (char *) addr + sizeof (*r);
|
size -= (char *) r - (char *) addr + sizeof (*r);
|
||||||
|
|
||||||
|
/* If this region is too small, ignore it. */
|
||||||
|
if (size < GRUB_MM_ALIGN)
|
||||||
|
return;
|
||||||
|
|
||||||
h = (grub_mm_header_t) ((char *) r + GRUB_MM_ALIGN);
|
h = (grub_mm_header_t) ((char *) r + GRUB_MM_ALIGN);
|
||||||
h->next = h;
|
h->next = h;
|
||||||
h->magic = GRUB_MM_FREE_MAGIC;
|
h->magic = GRUB_MM_FREE_MAGIC;
|
||||||
|
|||||||
Reference in new issue
Block a user