Prevent an O_NDELAY writer from blocking when a tty write is blocked by the tty atomic writer mutex
Without this a tty write could block if a previous blocking tty write was in progress on the same tty and blocked by a line discipline or hardware event. Originally found and reported by Dave Johnson. Signed-off-by: Alan Cox <alan@redhat.com> Acked-by: Dave Johnson <djohnson+linux-kernel@sw.starentnetworks.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Этот коммит содержится в:

коммит произвёл
Linus Torvalds

родитель
c9c64155f5
Коммит
9c1729db3e
@@ -1538,7 +1538,8 @@ static unsigned int normal_poll(struct tty_struct * tty, struct file * file, pol
|
||||
else
|
||||
tty->minimum_to_wake = 1;
|
||||
}
|
||||
if (tty->driver->chars_in_buffer(tty) < WAKEUP_CHARS &&
|
||||
if (!tty_is_writelocked(tty) &&
|
||||
tty->driver->chars_in_buffer(tty) < WAKEUP_CHARS &&
|
||||
tty->driver->write_room(tty) > 0)
|
||||
mask |= POLLOUT | POLLWRNORM;
|
||||
return mask;
|
||||
|
Ссылка в новой задаче
Block a user