diff options
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/tty_buffer.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/char/tty_buffer.c b/drivers/char/tty_buffer.c index 66fa4e10d76b..f27c4d6d956e 100644 --- a/drivers/char/tty_buffer.c +++ b/drivers/char/tty_buffer.c | |||
@@ -247,7 +247,8 @@ int tty_insert_flip_string(struct tty_struct *tty, const unsigned char *chars, | |||
247 | { | 247 | { |
248 | int copied = 0; | 248 | int copied = 0; |
249 | do { | 249 | do { |
250 | int space = tty_buffer_request_room(tty, size - copied); | 250 | int goal = min(size - copied, TTY_BUFFER_PAGE); |
251 | int space = tty_buffer_request_room(tty, goal); | ||
251 | struct tty_buffer *tb = tty->buf.tail; | 252 | struct tty_buffer *tb = tty->buf.tail; |
252 | /* If there is no space then tb may be NULL */ | 253 | /* If there is no space then tb may be NULL */ |
253 | if (unlikely(space == 0)) | 254 | if (unlikely(space == 0)) |
@@ -283,7 +284,8 @@ int tty_insert_flip_string_flags(struct tty_struct *tty, | |||
283 | { | 284 | { |
284 | int copied = 0; | 285 | int copied = 0; |
285 | do { | 286 | do { |
286 | int space = tty_buffer_request_room(tty, size - copied); | 287 | int goal = min(size - copied, TTY_BUFFER_PAGE); |
288 | int space = tty_buffer_request_room(tty, goal); | ||
287 | struct tty_buffer *tb = tty->buf.tail; | 289 | struct tty_buffer *tb = tty->buf.tail; |
288 | /* If there is no space then tb may be NULL */ | 290 | /* If there is no space then tb may be NULL */ |
289 | if (unlikely(space == 0)) | 291 | if (unlikely(space == 0)) |