Re: panic in procfs code

2001-06-05 Thread Seigo Tanimura

On Tue, 05 Jun 2001 12:21:46 +0200,
  Daniel Rock [EMAIL PROTECTED] said:

Daniel Hi,
Daniel I just noticed: Doing a simple cat /proc/$$/map panics the system:
(snip)
Daniel _mtx_unlock_sleep(c049c9c0,0,c03b01a0,f2) at _mtx_unlock_sleep+0xa3
Daniel lockmgr(c55fadb0,10001,c049c9c0,c55f4100) at lockmgr+0x9d
Daniel procfs_domap(c55f4100,c55f4320,c0c90da0,c6eefefc,c0cc3180) at
Daniel procfs_domap+0x88

Lock and unlock of vm_mtx around vm_map_(un)lock_read() in
procfs_domap() are missing. The attached patch should fix the bug.



Index: fs/procfs/procfs_map.c
===
RCS file: /home/naklab/tanimura/rina2/CVS/FreeBSD/sys/fs/procfs/procfs_map.c,v
retrieving revision 1.1.1.1.8.1
diff -u -r1.1.1.1.8.1 procfs_map.c
--- fs/procfs/procfs_map.c  2001/05/27 02:39:08 1.1.1.1.8.1
+++ fs/procfs/procfs_map.c  2001/06/05 12:16:06
@@ -87,6 +87,8 @@
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 @@
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;
 }
 



-- 
Seigo Tanimura [EMAIL PROTECTED] [EMAIL PROTECTED]



Re: panic in procfs code

2001-06-05 Thread David Wolfskill

Date: Tue, 05 Jun 2001 21:39:59 +0900
From: Seigo Tanimura [EMAIL PROTECTED]

Daniel Hi,
Daniel I just noticed: Doing a simple cat /proc/$$/map panics the system:
(snip)
Daniel _mtx_unlock_sleep(c049c9c0,0,c03b01a0,f2) at _mtx_unlock_sleep+0xa3
Daniel lockmgr(c55fadb0,10001,c049c9c0,c55f4100) at lockmgr+0x9d
Daniel procfs_domap(c55f4100,c55f4320,c0c90da0,c6eefefc,c0cc3180) at
Daniel procfs_domap+0x88

Lock and unlock of vm_mtx around vm_map_(un)lock_read() in
procfs_domap() are missing. The attached patch should fix the bug.

I looked at the patch, and it seemed reasonable, so I applied it just
before my daily build of -CURRENT, and:

m133[1] cat /proc/$$/map
0x8048000 0x80f2000 165 0 0xce84bc60 r-x 6 3 0x0 COW NC vnode
0x80f2000 0x80f7000 5 0 0xce8c7f00 rw- 1 0 0x2180 COW NNC vnode
0x80f7000 0x814a000 28 0 0xce8e1ea0 rw- 1 0 0x2180 COW NNC default
0x814a000 0x815b000 17 0 0xce8c7c60 rwx 1 0 0x2180 COW NNC default
0x815b000 0x815d000 2 0 0xce8e1900 rwx 1 0 0x2180 COW NNC default
0x815d000 0x8191000 52 0 0xce8e1840 rwx 1 0 0x2180 NCOW NNC default
0x280f2000 0x280f3000 1 0 0xce8e1360 rwx 1 0 0x2180 COW NNC default
0xbfbe 0xbfc0 14 0 0xce8c7c00 rwx 1 0 0x2180 COW NNC default
m133[2] uname -a
FreeBSD m133.whistle.com 5.0-CURRENT FreeBSD 5.0-CURRENT #23: Tue Jun  5 08:57:03 PDT 
2001 [EMAIL PROTECTED]:/common/C/obj/usr/src/sys/LAPTOP_30W  i386
m133[3]


so it looks good to me,
david
-- 
David H. Wolfskill  [EMAIL PROTECTED]
As a computing professional, I believe it would be unethical for me to
advise, recommend, or support the use (save possibly for personal
amusement) of any product that is or depends on any Microsoft product.

To Unsubscribe: send mail to [EMAIL PROTECTED]
with unsubscribe freebsd-current in the body of the message