aboutsummaryrefslogtreecommitdiff
path: root/ui/input-linux.c
diff options
context:
space:
mode:
authorColin Xu <colin.xu@intel.com>2020-09-25 10:18:08 +0800
committerGerd Hoffmann <kraxel@redhat.com>2020-10-14 06:05:56 +0200
commit33d72145d783457973e29aed703b84f820763f47 (patch)
tree415b0c0c917b24128aa21eb5d4fe9ac87ffeb526 /ui/input-linux.c
parent67c6f1dbb708f4cf0edc18d427f694654999b4b2 (diff)
downloadqemu-33d72145d783457973e29aed703b84f820763f47.zip
qemu-33d72145d783457973e29aed703b84f820763f47.tar.gz
qemu-33d72145d783457973e29aed703b84f820763f47.tar.bz2
input-linux: Reset il->fd handler before closing it
If object-del input-linux object on-the-fly, instance finalize will close evdev fd without resetting it. However the main thread is still trying to lock_acquire/lock_release during ppoll, which leads to a very high CPU utilization. Signed-off-by: Colin Xu <colin.xu@intel.com> Reviewed-by: Li Qiang <liq3ea@gmail.com> Message-id: 20200925021808.26471-1-colin.xu@intel.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/input-linux.c')
-rw-r--r--ui/input-linux.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/ui/input-linux.c b/ui/input-linux.c
index ab351a4..34cc531 100644
--- a/ui/input-linux.c
+++ b/ui/input-linux.c
@@ -418,6 +418,7 @@ static void input_linux_instance_finalize(Object *obj)
if (il->initialized) {
QTAILQ_REMOVE(&inputs, il, next);
+ qemu_set_fd_handler(il->fd, NULL, NULL, NULL);
close(il->fd);
}
g_free(il->evdev);