]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/char/n_hdlc.c
tty: some ICANON magic is in the wrong places
[linux-2.6-omap-h63xx.git] / drivers / char / n_hdlc.c
index ed4e03333ab4646029f61236a554daa23a65a2df..bacb3e2872ae49cbc5668e6a402cb50fbf75a30b 100644 (file)
@@ -677,6 +677,10 @@ static ssize_t n_hdlc_tty_write(struct tty_struct *tty, struct file *file,
        /* Allocate transmit buffer */
        /* sleep until transmit buffer available */             
        while (!(tbuf = n_hdlc_buf_get(&n_hdlc->tx_free_buf_list))) {
+               if (file->f_flags & O_NONBLOCK) {
+                       error = -EAGAIN;
+                       break;
+               }
                schedule();
                        
                n_hdlc = tty2n_hdlc (tty);
@@ -760,7 +764,7 @@ static int n_hdlc_tty_ioctl(struct tty_struct *tty, struct file *file,
                break;
 
        default:
-               error = n_tty_ioctl (tty, file, cmd, arg);
+               error = n_tty_ioctl_helper(tty, file, cmd, arg);
                break;
        }
        return error;