aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_mmap.c
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2012-02-16 06:45:51 +0000
committerAlan Cox <alc@FreeBSD.org>2012-02-16 06:45:51 +0000
commita6492969593bc6a4846ea56ca561bf51a8c7d2a9 (patch)
tree82c54b5d1d039376b773e5495f507312b9a2a31f /sys/vm/vm_mmap.c
parentc1cb99c965099aa5c772556a6d21238a0c765fbb (diff)
downloadsrc-a6492969593bc6a4846ea56ca561bf51a8c7d2a9.tar.gz
src-a6492969593bc6a4846ea56ca561bf51a8c7d2a9.zip
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
Notes
Notes: svn path=/head/; revision=231819
Diffstat (limited to 'sys/vm/vm_mmap.c')
-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 4b4996fde6f7..6ed24f67c34e 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.