fix a potential kernel crash
add a regression test for it
This commit is contained in:
parent
57e40a0204
commit
402e7b5605
2 changed files with 17 additions and 1 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue