xen/balloon: fix balloon kthread freezing
authorJuergen Gross <jgross@suse.com>
Mon, 20 Sep 2021 10:03:45 +0000 (12:03 +0200)
committerJuergen Gross <jgross@suse.com>
Tue, 21 Sep 2021 07:39:04 +0000 (09:39 +0200)
Commit 8480ed9c2bbd56 ("xen/balloon: use a kernel thread instead a
workqueue") switched the Xen balloon driver to use a kernel thread.
Unfortunately the patch omitted to call try_to_freeze() or to use
wait_event_freezable_timeout(), causing a system suspend to fail.

Fixes: 8480ed9c2bbd56 ("xen/balloon: use a kernel thread instead a workqueue")
Signed-off-by: Juergen Gross <jgross@suse.com>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Link: https://lore.kernel.org/r/20210920100345.21939-1-jgross@suse.com
Signed-off-by: Juergen Gross <jgross@suse.com>
drivers/xen/balloon.c

index 2d2803883306d51cac15b97f093533ed66e57223..43ebfe36ac2767358f8471db489d825e51ae96a8 100644 (file)
@@ -522,8 +522,8 @@ static int balloon_thread(void *unused)
                        timeout = 3600 * HZ;
                credit = current_credit();
 
-               wait_event_interruptible_timeout(balloon_thread_wq,
-                                balloon_thread_cond(state, credit), timeout);
+               wait_event_freezable_timeout(balloon_thread_wq,
+                       balloon_thread_cond(state, credit), timeout);
 
                if (kthread_should_stop())
                        return 0;