From owner-freebsd-current Tue Jun 5 5:40:19 2001 Delivered-To: freebsd-current@freebsd.org Received: from rina.r.dl.itc.u-tokyo.ac.jp (cvsup2.r.dl.itc.u-tokyo.ac.jp [133.11.199.247]) by hub.freebsd.org (Postfix) with ESMTP id F0F3637B405 for ; Tue, 5 Jun 2001 05:40:04 -0700 (PDT) (envelope-from tanimura@r.dl.itc.u-tokyo.ac.jp) Received: from rina.r.dl.itc.u-tokyo.ac.jp (localhost [127.0.0.1]) by rina.r.dl.itc.u-tokyo.ac.jp (8.11.3+3.4W/3.7W-rina.r-20010412) with ESMTP id f55CdxD05625 ; Tue, 5 Jun 2001 21:40:00 +0900 (JST) Message-Id: <200106051240.f55CdxD05625@rina.r.dl.itc.u-tokyo.ac.jp> Date: Tue, 05 Jun 2001 21:39:59 +0900 From: Seigo Tanimura To: D.Rock@t-online.de Cc: Alfred Perlstein , current@freebsd.org, Seigo Tanimura Subject: Re: panic in procfs code In-Reply-To: In your message of "Tue, 05 Jun 2001 12:21:46 +0200" <3B1CB2BA.32057B4E@t-online.de> References: <3B1CB2BA.32057B4E@t-online.de> User-Agent: Wanderlust/1.1.1 (Purple Rain) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) MULE XEmacs/21.1 (patch 14) (Cuyahoga Valley) (i386--freebsd) Organization: Digital Library Research Division, Information Techinology Centre, The University of Tokyo MIME-Version: 1.0 (generated by SEMI 1.13.7 - "Awazu") Content-Type: multipart/mixed; boundary="Multipart_Tue_Jun__5_21:39:59_2001-1" Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG --Multipart_Tue_Jun__5_21:39:59_2001-1 Content-Type: text/plain; charset=US-ASCII On Tue, 05 Jun 2001 12:21:46 +0200, Daniel Rock 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. --Multipart_Tue_Jun__5_21:39:59_2001-1 Content-Type: text/plain; type=patch; charset=US-ASCII Content-Disposition: attachment; filename="procfs_map.c.diff" Content-Transfer-Encoding: 7bit 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; } --Multipart_Tue_Jun__5_21:39:59_2001-1 Content-Type: text/plain; charset=US-ASCII -- Seigo Tanimura --Multipart_Tue_Jun__5_21:39:59_2001-1-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message