lguest: fix out-by-one error in address checking.
PATCH 1/1 lguest: fix out-by-one error in address checking.
This bug has been there since day 1; addresses in the top guest physical page weren't considered valid. You could map that page (the check in check_gpte() is correct), but if a guest tried to put a pagetable there we'd check that address manually when walking it, and kill the guest.
Signed-off-by Rusty Russell <[email protected]>
drivers/lguest/core.c +1 -1
@@ -173,7 +173,7 @@ static void unmap_switcher(void)bool lguest_address_ok (const struct lguest *lg,unsigned long addr,unsigned long len) { -return (addr+len) /PAGE_SIZE < lg->pfn_limit && (addr+len >= addr); +return addr+len <= lg->pfn_limit *PAGE_SIZE && (addr+len >= addr); }/*