patch-2.4.0-test7 linux/drivers/char/tty_io.c

Next file: linux/drivers/char/tuner-3036.c
Previous file: linux/drivers/char/tea6420.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test6/linux/drivers/char/tty_io.c linux/drivers/char/tty_io.c
@@ -1839,9 +1839,12 @@
 	read_lock(&tasklist_lock);
 	for_each_task(p) {
 		if ((p->tty == tty) ||
-		    ((session > 0) && (p->session == session)))
+		    ((session > 0) && (p->session == session))) {
 			send_sig(SIGKILL, p, 1);
-		else if (p->files) {
+			continue;
+		}
+		task_lock(p);
+		if (p->files) {
 			read_lock(&p->files->file_lock);
 			/* FIXME: p->files could change */
 			for (i=0; i < p->files->max_fds; i++) {
@@ -1854,6 +1857,7 @@
 			}
 			read_unlock(&p->files->file_lock);
 		}
+		task_unlock(p);
 	}
 	read_unlock(&tasklist_lock);
 #endif

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)