mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
virtio_blk: Reset device on probe error paths after DRIVER_OK
virtblk_probe() marks the device ready before revalidating zones and
adding the disk, and either of those can fail. The out_cleanup_disk path
they take goes on to delete the virtqueues, but nothing tells the device
to stop first, so it is still live when the rings are freed.
Reset the device at out_cleanup_disk, which is only reachable after
virtio_device_ready(). virtblk_remove() and virtblk_freeze_priv() both
reset before deleting the virtqueues for the same reason.
Fixes: dbb301f91f ("virtio_blk: add error handling support for add_disk()")
Signed-off-by: Yuho Choi <oss.patchbox@gmail.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Message-ID: <20260922211207.523999-1-oss.patchbox@gmail.com>
This commit is contained in:
parent
8689ee3842
commit
f4f6e9a9cb
|
|
@ -1590,6 +1590,7 @@ static int virtblk_probe(struct virtio_device *vdev)
|
|||
return 0;
|
||||
|
||||
out_cleanup_disk:
|
||||
virtio_reset_device(vdev);
|
||||
put_disk(vblk->disk);
|
||||
out_free_tags:
|
||||
blk_mq_free_tag_set(&vblk->tag_set);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user