Commit cc0be0fb authored by Karol Swietlicki's avatar Karol Swietlicki Committed by Linus Torvalds

uml: fix infinite mconsole loop

This patch takes care of a problem with the stopping code.

The function inside the while condition returns 0 to signify a problem.  A
problem could be for example a bad command or a bad version of the mconsole
client.  A bad command would terminate the stopping loop and resume the
kernel.  This is a problem.

A better solution is to make the loop infinite and don't leave it until we are
explicitly told to.
Signed-off-by: default avatarKarol Swietlicki <magotari@gmail.com>
Signed-off-by: default avatarJeff Dike <jdike@linux.intel.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent ab26a527
...@@ -305,7 +305,9 @@ void mconsole_stop(struct mc_request *req) ...@@ -305,7 +305,9 @@ void mconsole_stop(struct mc_request *req)
deactivate_fd(req->originating_fd, MCONSOLE_IRQ); deactivate_fd(req->originating_fd, MCONSOLE_IRQ);
os_set_fd_block(req->originating_fd, 1); os_set_fd_block(req->originating_fd, 1);
mconsole_reply(req, "stopped", 0, 0); mconsole_reply(req, "stopped", 0, 0);
while (mconsole_get_request(req->originating_fd, req)) { for (;;) {
if (!mconsole_get_request(req->originating_fd, req))
continue;
if (req->cmd->handler == mconsole_go) if (req->cmd->handler == mconsole_go)
break; break;
if (req->cmd->handler == mconsole_stop) { if (req->cmd->handler == mconsole_stop) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment