diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2018-03-24 13:51:27 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2018-03-24 13:51:27 +0000 |
| commit | ed9e8bc4681f06db333ea9d4a301de3e18f79ac1 (patch) | |
| tree | 5395b7ee10496b75e070eea943a4c07d04a19942 /sys/vm | |
| parent | 63b5d112b6d1fe36adf2f1c12e98df2c35117086 (diff) | |
Notes
Diffstat (limited to 'sys/vm')
| -rw-r--r-- | sys/vm/vm_glue.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/vm/vm_glue.c b/sys/vm/vm_glue.c index 5546822e3a58..25db4ad18a4b 100644 --- a/sys/vm/vm_glue.c +++ b/sys/vm/vm_glue.c @@ -196,11 +196,16 @@ vslock(void *addr, size_t len) #endif error = vm_map_wire(&curproc->p_vmspace->vm_map, start, end, VM_MAP_WIRE_SYSTEM | VM_MAP_WIRE_NOHOLES); + if (error == KERN_SUCCESS) { + curthread->td_vslock_sz += len; + return (0); + } + /* * Return EFAULT on error to match copy{in,out}() behaviour * rather than returning ENOMEM like mlock() would. */ - return (error == KERN_SUCCESS ? 0 : EFAULT); + return (EFAULT); } void @@ -208,6 +213,8 @@ vsunlock(void *addr, size_t len) { /* Rely on the parameter sanity checks performed by vslock(). */ + MPASS(curthread->td_vslock_sz >= len); + curthread->td_vslock_sz -= len; (void)vm_map_unwire(&curproc->p_vmspace->vm_map, trunc_page((vm_offset_t)addr), round_page((vm_offset_t)addr + len), VM_MAP_WIRE_SYSTEM | VM_MAP_WIRE_NOHOLES); |
