Date: Tue, 31 Dec 2002 14:52:27 +0100 (CET) From: Stefan Esser <se@FreeBSD.org> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/46652: DEBUG_VFS_LOCKS never checks locks for **vpp Message-ID: <20021231135227.84B861550@StefanEsser.FreeBSD.org>
next in thread | raw e-mail | index | archive | help
>Number: 46652 >Category: kern >Synopsis: DEBUG_VFS_LOCKS never checks locks for **vpp >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Dec 31 07:20:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Stefan Esser >Release: FreeBSD 5.0-CURRENT i386 >Organization: >Environment: System: FreeBSD StefanEsser.FreeBSD.org 5.0-CURRENT FreeBSD 5.0-CURRENT #11: Sun Dec 29 19:23:53 CET 2002 root@:/usr/src/sys/i386/compile/ISDN686 i386 >Description: There is an inconsistency in "/sys/tools/vnode_if.awk", which causes VOP locking assertions to be missed for one specific argument name: No assertions are ever generated for VOP argument **vpp, since that argument name is mangled into "*vpp" when reading the locking requirements, but not when generating the test macros in "add_debug_code". >How-To-Repeat: Have a look at the generated "vnode_if.h" in the kernel build directory. There are no assertions for "vpp", though locking is specified for that argument in vnode_if.src. >Fix: The minimal patch (requires no changes to vnode_if.src) follows: Apply the following simple patch to /sys/tools/vnode_if.awk in order to match the mangled name when generating debug code: Index: /sys/tools/vnode_if.awk =================================================================== RCS file: /usr/cvs/src/sys/tools/vnode_if.awk,v retrieving revision 1.37 diff -u -3 -r1.37 vnode_if.awk --- /sys/tools/vnode_if.awk 26 Sep 2002 04:48:43 -0000 1.37 +++ /sys/tools/vnode_if.awk 31 Dec 2002 13:37:20 -0000 @@ -65,6 +65,8 @@ function add_debug_code(name, arg, pos) { + if (arg == "vpp") + arg = "*vpp"; if (lockdata[name, arg, pos]) { printh("\tASSERT_VI_UNLOCKED("arg", \""uname"\");"); # Add assertions for locking (An alternative fix would be to specify locking for vpp in the form "#% *vpp L L L" instead of "#% vpp L L L". This requires a small change to the regular expression in line 171 (permit optional leading "*" for $2) and the removal of the name mangling in line 174f ...) >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20021231135227.84B861550>