diff options
author | Doug Moore <dougm@FreeBSD.org> | 2019-11-20 16:06:48 +0000 |
---|---|---|
committer | Doug Moore <dougm@FreeBSD.org> | 2019-11-20 16:06:48 +0000 |
commit | 83704cc2364d19cb0dd2ad7ec4371afece02662b (patch) | |
tree | fa4dd61b2cec6c22630e9f4e9dbd25e7fb437c09 /sys/security | |
parent | 0cb5357037c0169cb546365878afe601bd2d6c8b (diff) | |
download | src-83704cc2364d19cb0dd2ad7ec4371afece02662b.tar.gz src-83704cc2364d19cb0dd2ad7ec4371afece02662b.zip |
Instead of looking up a predecessor or successor to the current map
entry, when that entry has been seen already, keep the
already-looked-up value in a variable and use that instead of looking
it up again.
Approved by: alc, markj (earlier version), kib (earlier version)
Differential Revision: https://reviews.freebsd.org/D22348
Notes
Notes:
svn path=/head/; revision=354895
Diffstat (limited to 'sys/security')
-rw-r--r-- | sys/security/mac/mac_process.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/security/mac/mac_process.c b/sys/security/mac/mac_process.c index 64f466e69f80..bc119dbbc7f9 100644 --- a/sys/security/mac/mac_process.c +++ b/sys/security/mac/mac_process.c @@ -252,7 +252,7 @@ static void mac_proc_vm_revoke_recurse(struct thread *td, struct ucred *cred, struct vm_map *map) { - vm_map_entry_t vme; + vm_map_entry_t prev, vme; int result; vm_prot_t revokeperms; vm_object_t backing_object, object; @@ -263,8 +263,10 @@ mac_proc_vm_revoke_recurse(struct thread *td, struct ucred *cred, if (!mac_mmap_revocation) return; + prev = &map->header; vm_map_lock(map); - VM_MAP_ENTRY_FOREACH(vme, map) { + for (vme = vm_map_entry_first(map); vme != &map->header; + prev = vme, vme = vm_map_entry_succ(prev)) { if (vme->eflags & MAP_ENTRY_IS_SUB_MAP) { mac_proc_vm_revoke_recurse(td, cred, vme->object.sub_map); @@ -363,8 +365,7 @@ mac_proc_vm_revoke_recurse(struct thread *td, struct ucred *cred, } pmap_protect(map->pmap, vme->start, vme->end, vme->protection & ~revokeperms); - vm_map_try_merge_entries(map, vm_map_entry_pred(vme), - vme); + vm_map_try_merge_entries(map, prev, vme); } } vm_map_unlock(map); |