forked from Minki/linux
tty: protect tty_write from odd low-level tty disciplines
Al root-caused a new warning from syzbot to the ttyprintk tty driver returning a write count larger than the data the tty layer actually gave it. Which confused the tty write code mightily, and with the new iov_iter based code, caused a WARNING in iov_iter_revert(). syzbot correctly bisected the source of the new warning to commit9bb48c82ac
("tty: implement write_iter"), but the oddity goes back much further, it just didn't get caught by anything before. Reported-by: syzbot+3d2c27c2b7dc2a94814d@syzkaller.appspotmail.com Fixes:9bb48c82ac
("tty: implement write_iter") Debugged-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
2c405d1ab8
commit
3342ff2698
@ -962,11 +962,14 @@ static inline ssize_t do_tty_write(
|
||||
if (ret <= 0)
|
||||
break;
|
||||
|
||||
written += ret;
|
||||
if (ret > size)
|
||||
break;
|
||||
|
||||
/* FIXME! Have Al check this! */
|
||||
if (ret != size)
|
||||
iov_iter_revert(from, size-ret);
|
||||
|
||||
written += ret;
|
||||
count -= ret;
|
||||
if (!count)
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user