|
@@ -2228,16 +2228,6 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file,
|
|
|
}
|
|
|
__set_current_state(TASK_RUNNING);
|
|
|
|
|
|
- /* Deal with packet mode. */
|
|
|
- if (packet && b == buf) {
|
|
|
- if (tty_put_user(tty, TIOCPKT_DATA, b++)) {
|
|
|
- retval = -EFAULT;
|
|
|
- b--;
|
|
|
- break;
|
|
|
- }
|
|
|
- nr--;
|
|
|
- }
|
|
|
-
|
|
|
if (ldata->icanon && !L_EXTPROC(tty)) {
|
|
|
retval = canon_copy_from_read_buf(tty, &b, &nr);
|
|
|
if (retval == -EAGAIN) {
|
|
@@ -2247,6 +2237,17 @@ static ssize_t n_tty_read(struct tty_struct *tty, struct file *file,
|
|
|
break;
|
|
|
} else {
|
|
|
int uncopied;
|
|
|
+
|
|
|
+ /* Deal with packet mode. */
|
|
|
+ if (packet && b == buf) {
|
|
|
+ if (tty_put_user(tty, TIOCPKT_DATA, b++)) {
|
|
|
+ retval = -EFAULT;
|
|
|
+ b--;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ nr--;
|
|
|
+ }
|
|
|
+
|
|
|
/* The copy function takes the read lock and handles
|
|
|
locking internally for this case */
|
|
|
uncopied = copy_from_read_buf(tty, &b, &nr);
|