patch-2.1.6 linux/drivers/char/selection.c

Next file: linux/drivers/char/serial.c
Previous file: linux/drivers/char/scc.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.5/linux/drivers/char/selection.c linux/drivers/char/selection.c
@@ -17,7 +17,7 @@
 #include <linux/malloc.h>
 #include <linux/types.h>
 
-#include <asm/segment.h>
+#include <asm/uaccess.h>
 
 #include "vt_kern.h"
 #include "consolemap.h"
@@ -290,9 +290,9 @@
 	if (!bp || !c)
 		return 0;
 	do_unblank_screen();
-	current->state = TASK_INTERRUPTIBLE;
 	add_wait_queue(&vt->paste_wait, &wait);
-	while (c) {
+	do {
+		current->state = TASK_INTERRUPTIBLE;
 		if (test_bit(TTY_THROTTLED, &tty->flags)) {
 			schedule();
 			continue;
@@ -301,7 +301,8 @@
 		tty->ldisc.receive_buf(tty, bp, 0, l);
 		c -= l;
 		bp += l;
-	}
+	} while (c);
+	remove_wait_queue(&vt->paste_wait, &wait);
 	current->state = TASK_RUNNING;
 	return 0;
 }

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov