From owner-cvs-all@FreeBSD.ORG Thu Sep 15 15:03:48 2005 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DB5DC16A41F; Thu, 15 Sep 2005 15:03:48 +0000 (GMT) (envelope-from csjp@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id AD18243D46; Thu, 15 Sep 2005 15:03:48 +0000 (GMT) (envelope-from csjp@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id j8FF3m5D086439; Thu, 15 Sep 2005 15:03:48 GMT (envelope-from csjp@repoman.freebsd.org) Received: (from csjp@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id j8FF3m5i086438; Thu, 15 Sep 2005 15:03:48 GMT (envelope-from csjp) Message-Id: <200509151503.j8FF3m5i086438@repoman.freebsd.org> From: "Christian S.J. Peron" Date: Thu, 15 Sep 2005 15:03:48 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/kern imgact_elf.c vfs_lookup.c vfs_syscalls.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 15 Sep 2005 15:03:49 -0000 csjp 2005-09-15 15:03:48 UTC FreeBSD src repository Modified files: sys/kern imgact_elf.c vfs_lookup.c vfs_syscalls.c Log: Improve the MP safeness associated with the creation of symbolic links and the execution of ELF binaries. Two problems were found: 1) The link path wasn't tagged as being MP safe and thus was not properly protected. 2) The ELF interpreter vnode wasnt being locked in namei(9) and thus was insufficiently protected. This commit makes the following changes: -Sets the MPSAFE flag in NDINIT for symbolic link paths -Sets the MPSAFE flag in NDINIT and introduce a vfslocked variable which will be used to instruct VFS_UNLOCK_GIANT to unlock Giant if it has been picked up. -Drop in an assertion into vfs_lookup which ensures that if the MPSAFE flag is NOT set, that we have picked up giant. If not panic (if WITNESS compiled into the kernel). This should help us find conditions where vnode operations are in-sufficiently protected. This is a RELENG_6 candidate. Discussed with: jeff MFC after: 4 days Revision Changes Path 1.163 +7 -3 src/sys/kern/imgact_elf.c 1.82 +2 -0 src/sys/kern/vfs_lookup.c 1.394 +1 -1 src/sys/kern/vfs_syscalls.c