From 402e7b56053312f4e96737ee7cd82395c998f00f Mon Sep 17 00:00:00 2001 From: Robert Morris Date: Fri, 20 Sep 2019 09:41:03 -0400 Subject: fix a potential kernel crash add a regression test for it --- kernel/vm.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'kernel') diff --git a/kernel/vm.c b/kernel/vm.c index e0bc728..b2bfe2c 100644 --- a/kernel/vm.c +++ b/kernel/vm.c @@ -99,6 +99,9 @@ walkaddr(pagetable_t pagetable, uint64 va) pte_t *pte; uint64 pa; + if(va >= MAXVA) + return 0; + pte = walk(pagetable, va, 0); if(pte == 0) return 0; @@ -408,7 +411,7 @@ copyinstr(pagetable_t pagetable, char *dst, uint64 srcva, uint64 max) int got_null = 0; while(got_null == 0 && max > 0){ - va0 = (uint)PGROUNDDOWN(srcva); + va0 = PGROUNDDOWN(srcva); pa0 = walkaddr(pagetable, va0); if(pa0 == 0) return -1; -- cgit v1.2.3