diff options
-rw-r--r-- | kexec/kexec.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c index fd66e15..d6cca88 100644 --- a/kexec/kexec.c +++ b/kexec/kexec.c @@ -324,12 +324,17 @@ unsigned long add_buffer(struct kexec_info *info, { unsigned long base; int result; + int pagesize; result = sort_segments(info); if (result < 0) { die("sort_segments failed\n"); } + /* Round memsz up to a multiple of pagesize */ + pagesize = getpagesize(); + memsz = (memsz + (pagesize - 1)) & ~(pagesize - 1); + base = locate_hole(info, memsz, buf_align, buf_min, buf_max, buf_end); if (base == ULONG_MAX) { die("locate_hole failed\n"); |