Commit 20762071 authored by Michael S. Tsirkin's avatar Michael S. Tsirkin
Browse files

hwrng: virtio - unregister device before reset



unregister after reset is clearly wrong - device
can be used while it's reset. There's an attempt to
protect against that using hwrng_removed but it
seems racy since access can be in progress
when the flag is set.

Just unregister, then reset seems simpler and cleaner.
NB: we might be able to drop hwrng_removed in a follow-up patch.

Signed-off-by: default avatarLaurent Vivier <lvivier@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent d9679d00
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -179,9 +179,9 @@ static void remove_common(struct virtio_device *vdev)
	vi->data_avail = 0;
	vi->data_idx = 0;
	complete(&vi->have_data);
	virtio_reset_device(vdev);
	if (vi->hwrng_register_done)
		hwrng_unregister(&vi->hwrng);
	virtio_reset_device(vdev);
	vdev->config->del_vqs(vdev);
	ida_simple_remove(&rng_index_ida, vi->index);
	kfree(vi);