| From 1a3a6a2a035bb6c3a7ef4c788d8fd69a7b2d6284 Mon Sep 17 00:00:00 2001 |
| From: Anton Ivanov <anton.ivanov@cambridgegreys.com> |
| Date: Tue, 22 Feb 2022 12:44:10 +0000 |
| Subject: um: Fix uml_mconsole stop/go |
| |
| From: Anton Ivanov <anton.ivanov@cambridgegreys.com> |
| |
| 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 | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/arch/um/drivers/mconsole_kern.c |
| +++ b/arch/um/drivers/mconsole_kern.c |
| @@ -224,7 +224,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 (;;) { |
| @@ -247,6 +247,7 @@ void mconsole_stop(struct mc_request *re |
| } |
| os_set_fd_block(req->originating_fd, 0); |
| mconsole_reply(req, "", 0, 0); |
| + unblock_signals(); |
| } |
| |
| static DEFINE_SPINLOCK(mc_devices_lock); |