summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2012-02-16 06:45:51 +0000
committeralc <alc@FreeBSD.org>2012-02-16 06:45:51 +0000
commit506ef17e7f3ab3678d09b09e013110953cf28974 (patch)
tree82c54b5d1d039376b773e5495f507312b9a2a31f /sys/vm
parent68e86f3d5f06a494bc61375850d6d89639b1ef90 (diff)
downloadFreeBSD-src-506ef17e7f3ab3678d09b09e013110953cf28974.zip
FreeBSD-src-506ef17e7f3ab3678d09b09e013110953cf28974.tar.gz
When vm_mmap() is used to map a vm object into a kernel vm_map, it
makes no sense to check the size of the kernel vm_map against the user-level resource limits for the calling process. Reviewed by: kib
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_mmap.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 4b4996f..6ed24f6 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -1438,18 +1438,18 @@ vm_mmap(vm_map_t map, vm_offset_t *addr, vm_size_t size, vm_prot_t prot,
size = round_page(size);
- PROC_LOCK(td->td_proc);
- if (td->td_proc->p_vmspace->vm_map.size + size >
- lim_cur(td->td_proc, RLIMIT_VMEM)) {
- PROC_UNLOCK(td->td_proc);
- return (ENOMEM);
- }
- if (racct_set(td->td_proc, RACCT_VMEM,
- td->td_proc->p_vmspace->vm_map.size + size)) {
+ if (map == &td->td_proc->p_vmspace->vm_map) {
+ PROC_LOCK(td->td_proc);
+ if (map->size + size > lim_cur(td->td_proc, RLIMIT_VMEM)) {
+ PROC_UNLOCK(td->td_proc);
+ return (ENOMEM);
+ }
+ if (racct_set(td->td_proc, RACCT_VMEM, map->size + size)) {
+ PROC_UNLOCK(td->td_proc);
+ return (ENOMEM);
+ }
PROC_UNLOCK(td->td_proc);
- return (ENOMEM);
}
- PROC_UNLOCK(td->td_proc);
/*
* We currently can only deal with page aligned file offsets.
OpenPOWER on IntegriCloud