aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/n_tty.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/n_tty.c')
-rw-r--r--drivers/char/n_tty.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c
index 19105ec203f7..8096389b0dc2 100644
--- a/drivers/char/n_tty.c
+++ b/drivers/char/n_tty.c
@@ -282,16 +282,20 @@ static int opost(unsigned char c, struct tty_struct *tty)
282 if (O_ONLRET(tty)) 282 if (O_ONLRET(tty))
283 tty->column = 0; 283 tty->column = 0;
284 if (O_ONLCR(tty)) { 284 if (O_ONLCR(tty)) {
285 if (space < 2) 285 if (space < 2) {
286 unlock_kernel();
286 return -1; 287 return -1;
288 }
287 tty_put_char(tty, '\r'); 289 tty_put_char(tty, '\r');
288 tty->column = 0; 290 tty->column = 0;
289 } 291 }
290 tty->canon_column = tty->column; 292 tty->canon_column = tty->column;
291 break; 293 break;
292 case '\r': 294 case '\r':
293 if (O_ONOCR(tty) && tty->column == 0) 295 if (O_ONOCR(tty) && tty->column == 0) {
296 unlock_kernel();
294 return 0; 297 return 0;
298 }
295 if (O_OCRNL(tty)) { 299 if (O_OCRNL(tty)) {
296 c = '\n'; 300 c = '\n';
297 if (O_ONLRET(tty)) 301 if (O_ONLRET(tty))
@@ -303,10 +307,13 @@ static int opost(unsigned char c, struct tty_struct *tty)
303 case '\t': 307 case '\t':
304 spaces = 8 - (tty->column & 7); 308 spaces = 8 - (tty->column & 7);
305 if (O_TABDLY(tty) == XTABS) { 309 if (O_TABDLY(tty) == XTABS) {
306 if (space < spaces) 310 if (space < spaces) {
311 unlock_kernel();
307 return -1; 312 return -1;
313 }
308 tty->column += spaces; 314 tty->column += spaces;
309 tty->ops->write(tty, " ", spaces); 315 tty->ops->write(tty, " ", spaces);
316 unlock_kernel();
310 return 0; 317 return 0;
311 } 318 }
312 tty->column += spaces; 319 tty->column += spaces;