aboutsummaryrefslogtreecommitdiff
path: root/include/hw/riscv/virt.h
diff options
context:
space:
mode:
authorStefan Hajnoczi <stefanha@redhat.com>2022-11-21 16:19:23 -0500
committerStefan Hajnoczi <stefanha@redhat.com>2022-11-29 18:15:26 -0500
commit7103895123d580bbe93e341241d200e75d8996a1 (patch)
treee805b02834ad199f47a6b4f61a7fbc8427819793 /include/hw/riscv/virt.h
parent86fdb0582c653a9824183679403a85f588260d62 (diff)
block-backend: avoid bdrv_unregister_buf() NULL pointer deref
bdrv_*() APIs expect a valid BlockDriverState. Calling them with bs=NULL leads to undefined behavior. Jonathan Cameron reported this following NULL pointer dereference when a VM with a virtio-blk device and a memory-backend-file object is terminated: 1. qemu_cleanup() closes all drives, setting blk->root to NULL 2. qemu_cleanup() calls user_creatable_cleanup(), which results in a RAM block notifier callback because the memory-backend-file is destroyed. 3. blk_unregister_buf() is called by virtio-blk's BlockRamRegistrar notifier callback and undefined behavior occurs. Fixes: baf422684d73 ("virtio-blk: use BDRV_REQ_REGISTERED_BUF optimization hint") Co-authored-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-Id: <20221121211923.1993171-1-stefanha@redhat.com>
Diffstat (limited to 'include/hw/riscv/virt.h')
0 files changed, 0 insertions, 0 deletions