From f16ee523808e5e555dd927761a96a390ca36ca47 Mon Sep 17 00:00:00 2001 From: tanimura Date: Wed, 6 Jun 2001 04:13:11 +0000 Subject: Lock VM Giant prior to locking a vm map. Spotted by: Daniel Rock Tested by: David Wolfskill , Sean Eric Fagan --- sys/fs/procfs/procfs_map.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'sys/fs') diff --git a/sys/fs/procfs/procfs_map.c b/sys/fs/procfs/procfs_map.c index e974b04..047a67f 100644 --- a/sys/fs/procfs/procfs_map.c +++ b/sys/fs/procfs/procfs_map.c @@ -87,6 +87,8 @@ procfs_domap(curp, p, pfs, uio) if (uio->uio_offset != 0) return (0); + mtx_lock(&vm_mtx); + error = 0; if (map != &curproc->p_vmspace->vm_map) vm_map_lock_read(map); @@ -169,12 +171,17 @@ case OBJT_DEVICE: error = EFBIG; break; } + mtx_unlock(&vm_mtx); error = uiomove(mebuffer, len, uio); + mtx_lock(&vm_mtx); if (error) break; } if (map != &curproc->p_vmspace->vm_map) vm_map_unlock_read(map); + + mtx_unlock(&vm_mtx); + return error; } -- cgit v1.1