diff options
author | Jiri Slaby <jirislaby@gmail.com> | 2007-07-15 23:40:12 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-16 09:05:43 -0700 |
commit | b0fed3140f57c435d2783b698c5090f325c22bad (patch) | |
tree | e77a18c79193461aa217bd62f9c03406c74ec612 /drivers/char/n_hdlc.c | |
parent | c2aef333c98b41eeb0f0d55b7faa7d4625a6160b (diff) | |
download | lwn-b0fed3140f57c435d2783b698c5090f325c22bad.tar.gz lwn-b0fed3140f57c435d2783b698c5090f325c22bad.zip |
Char: n_hdlc, allow RESTARTSYS retval of tty write
Acked-by: Paul Fulghum <paulkf@microgate.com>
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/n_hdlc.c')
-rw-r--r-- | drivers/char/n_hdlc.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/char/n_hdlc.c b/drivers/char/n_hdlc.c index 37f7d3403040..e8332f305d72 100644 --- a/drivers/char/n_hdlc.c +++ b/drivers/char/n_hdlc.c @@ -400,7 +400,12 @@ static void n_hdlc_send_frames(struct n_hdlc *n_hdlc, struct tty_struct *tty) /* Send the next block of data to device */ tty->flags |= (1 << TTY_DO_WRITE_WAKEUP); actual = tty->driver->write(tty, tbuf->buf, tbuf->count); - + + /* rollback was possible and has been done */ + if (actual == -ERESTARTSYS) { + n_hdlc->tbuf = tbuf; + break; + } /* if transmit error, throw frame away by */ /* pretending it was accepted by driver */ if (actual < 0) |