svn commit: r269126 - head/sys/kern

Marcel Moolenaar marcel at FreeBSD.org
Sat Jul 26 15:46:42 UTC 2014


Author: marcel
Date: Sat Jul 26 15:46:41 2014
New Revision: 269126
URL: http://svnweb.freebsd.org/changeset/base/269126

Log:
  Don't return ERESTART when the device is gone. In ttydev_leave() ERESTART
  is the indication that draining got interrupted due to a revoke(2) and
  that tty_drain() is to be called again for draining to complete. If the
  device is flagged as gone, then waiting/draining is not possible. Only
  return ERESTART when waiting is still possible.
  
  Obtained from:	Juniper Networks, Inc.

Modified:
  head/sys/kern/tty.c

Modified: head/sys/kern/tty.c
==============================================================================
--- head/sys/kern/tty.c	Sat Jul 26 15:33:20 2014	(r269125)
+++ head/sys/kern/tty.c	Sat Jul 26 15:46:41 2014	(r269126)
@@ -1370,14 +1370,14 @@ tty_wait(struct tty *tp, struct cv *cv)
 
 	error = cv_wait_sig(cv, tp->t_mtx);
 
-	/* Restart the system call when we may have been revoked. */
-	if (tp->t_revokecnt != revokecnt)
-		return (ERESTART);
-
 	/* Bail out when the device slipped away. */
 	if (tty_gone(tp))
 		return (ENXIO);
 
+	/* Restart the system call when we may have been revoked. */
+	if (tp->t_revokecnt != revokecnt)
+		return (ERESTART);
+
 	return (error);
 }
 


More information about the svn-src-all mailing list