OSDN Git Service

tty: Correct INPCK handling
[uclinux-h8/linux.git] / drivers / tty / n_tty.c
index f95569d..f44f1ba 100644 (file)
@@ -1214,15 +1214,16 @@ static void n_tty_receive_parity_error(struct tty_struct *tty, unsigned char c)
 {
        struct n_tty_data *ldata = tty->disc_data;
 
-       if (I_IGNPAR(tty))
-               return;
-       if (I_PARMRK(tty)) {
-               put_tty_queue('\377', ldata);
-               put_tty_queue('\0', ldata);
-               put_tty_queue(c, ldata);
-       } else  if (I_INPCK(tty))
-               put_tty_queue('\0', ldata);
-       else
+       if (I_INPCK(tty)) {
+               if (I_IGNPAR(tty))
+                       return;
+               if (I_PARMRK(tty)) {
+                       put_tty_queue('\377', ldata);
+                       put_tty_queue('\0', ldata);
+                       put_tty_queue(c, ldata);
+               } else
+                       put_tty_queue('\0', ldata);
+       } else
                put_tty_queue(c, ldata);
        if (waitqueue_active(&tty->read_wait))
                wake_up_interruptible(&tty->read_wait);