diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-08-14 01:20:50 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-08-14 01:22:05 +0200 |
commit | bf8632fdb76fef70c830082a8e5c059c1d0aeb7c (patch) | |
tree | f0e444f89b45bce755abbefd9eb0ab26e7105478 /i386 | |
parent | 0858a1817f58a002945c4c58fea196f2b14ba460 (diff) | |
download | gnumach-bf8632fdb76fef70c830082a8e5c059c1d0aeb7c.tar.gz gnumach-bf8632fdb76fef70c830082a8e5c059c1d0aeb7c.tar.bz2 gnumach-bf8632fdb76fef70c830082a8e5c059c1d0aeb7c.zip |
pmap: Fix coping with VM_MAX_USER_ADDRESS not being aligned on l4 limit
It is however usually aligned on l3 limit.
Diffstat (limited to 'i386')
-rw-r--r-- | i386/intel/pmap.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c index a9879340..1a20f38b 100644 --- a/i386/intel/pmap.c +++ b/i386/intel/pmap.c @@ -1477,9 +1477,11 @@ void pmap_destroy(pmap_t p) pt_entry_t *pdebase = (pt_entry_t*) ptetokv(pde); if ( #ifdef __x86_64__ - l4i <= lin2l4num(VM_MAX_USER_ADDRESS) && + l4i < lin2l4num(VM_MAX_USER_ADDRESS) || + (l4i == lin2l4num(VM_MAX_USER_ADDRESS) && l3i <= lin2pdpnum(VM_MAX_USER_ADDRESS))) +#else /* __x86_64__ */ + l3i <= lin2pdpnum(VM_MAX_USER_ADDRESS) #endif /* __x86_64__ */ - l3i <= lin2pdpnum(VM_MAX_USER_ADDRESS)) for (int l2i = 0; l2i < NPTES; l2i++) #else /* PAE */ pt_entry_t *pdebase = p->dirbase; |