提交 99c014a8 编写于 作者: S Steven Rostedt (VMware)

ktest: Fix while loop in wait_for_input

The run_command function was changed to use the wait_for_input function to
allow having a timeout if the command to run takes too much time. There was
a bug in the wait_for_input where it could end up going into an infinite
loop. There's two issues here. One is that the return value of the sysread
wasn't used for the write (to write a proper size), and that it should
continue processing the passed in file descriptor too even if there was
input. There was no check for error, if for some reason STDIN returned an
error, the function would go into an infinite loop and never exit.
Reported-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tested-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fixes: 6e98d1b4 ("ktest: Add timeout to ssh command")
Signed-off-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
上级 5739438b
......@@ -1904,11 +1904,12 @@ sub wait_for_input
# copy data from stdin to the console
if (vec($rout, fileno(\*STDIN), 1) == 1) {
sysread(\*STDIN, $buf, 1000);
syswrite($fp, $buf, 1000);
next;
$nr = sysread(\*STDIN, $buf, 1000);
syswrite($fp, $buf, $nr) if ($nr > 0);
}
next if (vec($rout, fileno($fp), 1) != 1);
$line = "";
# try to read one char at a time
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册