Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Oct 2009 21:17:30 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r197942 - head/sys/kern
Message-ID:  <200910102117.n9ALHUKW092617@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Sat Oct 10 21:17:30 2009
New Revision: 197942
URL: http://svn.freebsd.org/changeset/base/197942

Log:
  Refine r195509, instead of checking that vnode type is VBAD, that is
  set quite late in the revocation path, properly verify that vnode is
  not doomed before calling VOP.
  
  Reported and tested by:	Harald Schmalzbauer <h.schmalzbauer omnilan de>
  MFC after:	3 days

Modified:
  head/sys/kern/kern_exit.c

Modified: head/sys/kern/kern_exit.c
==============================================================================
--- head/sys/kern/kern_exit.c	Sat Oct 10 21:10:49 2009	(r197941)
+++ head/sys/kern/kern_exit.c	Sat Oct 10 21:17:30 2009	(r197942)
@@ -340,10 +340,10 @@ exit1(struct thread *td, int rv)
 
 		if (ttyvp != NULL) {
 			sx_xunlock(&proctree_lock);
-			vn_lock(ttyvp, LK_EXCLUSIVE | LK_RETRY);
-			if (ttyvp->v_type != VBAD)
+			if (vn_lock(ttyvp, LK_EXCLUSIVE) == 0) {
 				VOP_REVOKE(ttyvp, REVOKEALL);
-			VOP_UNLOCK(ttyvp, 0);
+				VOP_UNLOCK(ttyvp, 0);
+			}
 			sx_xlock(&proctree_lock);
 		}
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200910102117.n9ALHUKW092617>