aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/drivers/line.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um/drivers/line.c')
-rw-r--r--arch/um/drivers/line.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 3e0b68e297f2..b4538dfb4820 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -216,18 +216,15 @@ int line_write(struct tty_struct *tty, const unsigned char *buf, int len)
216{ 216{
217 struct line *line = tty->driver_data; 217 struct line *line = tty->driver_data;
218 unsigned long flags; 218 unsigned long flags;
219 int n, err, ret = 0; 219 int n, ret = 0;
220 220
221 if(tty->stopped) 221 if(tty->stopped)
222 return 0; 222 return 0;
223 223
224 spin_lock_irqsave(&line->lock, flags); 224 spin_lock_irqsave(&line->lock, flags);
225 if (line->head != line->tail) { 225 if (line->head != line->tail)
226 ret = buffer_data(line, buf, len); 226 ret = buffer_data(line, buf, len);
227 err = flush_buffer(line); 227 else {
228 if (err <= 0 && (err != -EAGAIN || !ret))
229 ret = err;
230 } else {
231 n = write_chan(&line->chan_list, buf, len, 228 n = write_chan(&line->chan_list, buf, len,
232 line->driver->write_irq); 229 line->driver->write_irq);
233 if (n < 0) { 230 if (n < 0) {