Date: Mon, 29 Apr 2002 01:19:46 -0700 (PDT) From: Peter Edwards <pmedwards@eircom.net> To: freebsd-gnats-submit@FreeBSD.org Subject: kern/37555: vnode flags appear to be changed in non-safe manner in kern/elf_imgact.c Message-ID: <200204290819.g3T8JkE95791@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 37555
>Category: kern
>Synopsis: vnode flags appear to be changed in non-safe manner in kern/elf_imgact.c
>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: Mon Apr 29 01:20:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Peter Edwards
>Release: 4-STABLE
>Organization:
>Environment:
FreeBSD rocklobster 4.5-STABLE FreeBSD 4.5-STABLE #30: Mon Apr 29 08:00:03 IST 2002 petere@rocklobster:/pub/FreeBSD/work/src/sys/compile/ROCKLOBSTER i386
>Description:
The "VTEXT" flag added by imgact_elf.c is added once while holding the
v_interlock simple lock on the vnode in question, and once without.
As well as being inconsistent, I assume there's a possible race here
for 5.x, which also lacks the simple_lock() around the vnode for one
case
>How-To-Repeat:
>Fix:
--- imgact_elf.c 16 Dec 2001 18:26:16 -0000 1.73.2.9
+++ imgact_elf.c 29 Apr 2002 08:17:42 -0000
@@ -376,8 +376,11 @@
* Also make certain that the interpreter stays the same, so set
* its VTEXT flag, too.
*/
- if (error == 0)
+ if (error == 0) {
+ simple_lock(&nd->ni_vp->v_interlock);
nd->ni_vp->v_flag |= VTEXT;
+ simple_unlock(&nd->ni_vp->v_interlock);
+ }
VOP_UNLOCK(nd->ni_vp, 0, p);
if (error)
goto fail;
>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?200204290819.g3T8JkE95791>
