[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/6] relocator: Do not use memory region if its starta is smaller than size
On 21.07.2015 08:42, Andrei Borzenkov wrote: > On Mon, Jul 20, 2015 at 5:35 PM, Daniel Kiper <daniel.kiper@xxxxxxxxxx> wrote: >> malloc_in_range() should not use memory region if its starta is smaller >> than size. Otherwise target wraps around and points to region which is >> usually not a RAM, e.g.: >> >> loader/multiboot.c:93: segment 0: paddr=0x800000, memsz=0x3f800000, >> vaddr=0x800000 >> lib/relocator.c:1241: min_addr = 0x0, max_addr = 0xffffffffffffffff, target >> = 0x800000 >> lib/relocator.c:434: trying to allocate in 0x800000-0xffffffffffffffff >> aligned 0x1 size 0x3f800000 >> lib/relocator.c:434: trying to allocate in 0x0-0x800000 aligned 0x1 size >> 0x3f800000 >> lib/relocator.c:434: trying to allocate in 0x0-0xffffffffffffffff aligned >> 0x1 size 0x3f800000 >> lib/relocator.c:1188: allocated: 0xffffffffc07fffff+0x3f800000 >> lib/relocator.c:1277: allocated 0xffffffffc07fffff/0x800000 >> >> Signed-off-by: Daniel Kiper <daniel.kiper@xxxxxxxxxx> >> --- >> grub-core/lib/relocator.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/grub-core/lib/relocator.c b/grub-core/lib/relocator.c >> index f759c7f..4eee0c5 100644 >> --- a/grub-core/lib/relocator.c >> +++ b/grub-core/lib/relocator.c >> @@ -748,7 +748,7 @@ malloc_in_range (struct grub_relocator *rel, >> /* Found an usable address. */ >> goto found; >> } >> - if (isinsidebefore && !isinsideafter && !from_low_priv) >> + if (isinsidebefore && !isinsideafter && !from_low_priv && starta >= >> size) > > That's too late, we need to check end of region on previous iteration. > Consider region of 128 bytes, requested size 129 and alignment 256. > Than starta still ends up high in memory. > Agreed, we need a check earlier. It makes sense to split this block with an if (from_low_priv) as both flows are completely separate and splitting them will make it more readable >> { >> target = starta - size; >> if (target > end - size) >> -- >> 1.7.10.4 >> >> >> _______________________________________________ >> Grub-devel mailing list >> Grub-devel@xxxxxxx >> https://lists.gnu.org/mailman/listinfo/grub-devel > Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |