um: virtio_uml: mark device as unregistered when breaking it
authorBenjamin Berg <benjamin.berg@intel.com>
Thu, 9 Feb 2023 09:00:03 +0000 (10:00 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Mar 2023 12:55:22 +0000 (13:55 +0100)
[ Upstream commit 8e9cd85139a2149d5a7c121b05e0cdb8287311f9 ]

Mark the device as not registered anymore when scheduling the work to
remove it. Otherwise we could end up scheduling the work multiple times
in a row, including scheduling it while it is already running.

Fixes: af9fb41ed315 ("um: virtio_uml: Fix broken device handling in time-travel")
Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/um/drivers/virtio_uml.c

index 588930a..dcfd0ca 100644 (file)
@@ -168,6 +168,8 @@ static void vhost_user_check_reset(struct virtio_uml_device *vu_dev,
        if (!vu_dev->registered)
                return;
 
+       vu_dev->registered = 0;
+
        virtio_break_device(&vu_dev->vdev);
        schedule_work(&pdata->conn_broken_wk);
 }