[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 06/10] mini-os: add memory map service functions
Juergen Gross, le lun. 06 déc. 2021 08:23:33 +0100, a ecrit: > +void e820_put_reserved_pfns(unsigned long start_pfn, int pages) > +{ > + int i; > + unsigned long addr = start_pfn << PAGE_SHIFT; > + unsigned long size = (long)pages << PAGE_SHIFT; > + > + for ( i = 0; i < e820_entries && addr < e820_map[i].addr; i++ ); Shouldn't that be addr > e820_map[i].addr + e820_map[i].size? > + BUG_ON(i == e820_entries || e820_map[i].type != E820_RESERVED); We should also BUG_ON e820_map[i].addr > addr (i.e. we didn't find an entry that contained our address). > + if ( addr == e820_map[i].addr ) > + { > + e820_map[i].addr += size; I'd say BUG_ON here if e820_map[i].size < size. > + e820_map[i].size -= size; > + if ( e820_map[i].size == 0 ) > + e820_remove_entry(i); > + return; > + } > + > + if ( addr + size == e820_map[i].addr + e820_map[i].size ) > + { > + e820_map[i].addr = addr; > + e820_map[i].size = size; ? Shouldn't that rather be just > + e820_map[i].size -= size; ? (since what we remove is at the end of the area, the start of the area doesn't change) > + return; > + }
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |