um: Fix uml_mconsole stop/go
authorAnton Ivanov <anton.ivanov@cambridgegreys.com>
Tue, 22 Feb 2022 12:44:10 +0000 (12:44 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Apr 2022 12:40:44 +0000 (14:40 +0200)
commit 1a3a6a2a035bb6c3a7ef4c788d8fd69a7b2d6284 upstream.

Moving to an EPOLL based IRQ controller broke uml_mconsole stop/go
commands. This fixes it and restores stop/go functionality.

Fixes: ff6a17989c08 ("Epoll based IRQ controller")
Signed-off-by: Anton Ivanov <anton.ivanov@cambridgegreys.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/um/drivers/mconsole_kern.c

index a2e680f7d39f25af3bcfc09bfaac464de7faec66..2d20773b7d8ee237e90b49a1bc9c216b5b62f0c6 100644 (file)
@@ -223,7 +223,7 @@ void mconsole_go(struct mc_request *req)
 
 void mconsole_stop(struct mc_request *req)
 {
-       deactivate_fd(req->originating_fd, MCONSOLE_IRQ);
+       block_signals();
        os_set_fd_block(req->originating_fd, 1);
        mconsole_reply(req, "stopped", 0, 0);
        for (;;) {
@@ -246,6 +246,7 @@ void mconsole_stop(struct mc_request *req)
        }
        os_set_fd_block(req->originating_fd, 0);
        mconsole_reply(req, "", 0, 0);
+       unblock_signals();
 }
 
 static DEFINE_SPINLOCK(mc_devices_lock);