diff mbox series

input-linux: Reset il->fd handler before closing it

Message ID 20200925021808.26471-1-colin.xu@intel.com (mailing list archive)
State New, archived
Headers show
Series input-linux: Reset il->fd handler before closing it | expand

Commit Message

Colin Xu Sept. 25, 2020, 2:18 a.m. UTC
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>
---
 ui/input-linux.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Li Qiang Sept. 25, 2020, 4:31 a.m. UTC | #1
Colin Xu <colin.xu@intel.com> 于2020年9月25日周五 上午10:18写道:
>
> 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>

> ---
>  ui/input-linux.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/ui/input-linux.c b/ui/input-linux.c
> index ab351a418701..34cc531190f9 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);
> --
> 2.28.0
>
>
diff mbox series

Patch

diff --git a/ui/input-linux.c b/ui/input-linux.c
index ab351a418701..34cc531190f9 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);