diff options
author | Sergio Lopez <slp@redhat.com> | 2019-09-11 12:03:16 +0200 |
---|---|---|
committer | Max Reitz <mreitz@redhat.com> | 2019-09-16 15:31:12 +0200 |
commit | d876bf676f5e7c6aa9ac64555e48cba8734ecb2f (patch) | |
tree | a59919ba03b035259cabd05193df4ac224cbd7ed /hw/pci-bridge/simba.c | |
parent | c34dc07f9f01cf686e512f939aece744723072cd (diff) |
blockjob: update nodes head while removing all bdrv
block_job_remove_all_bdrv() iterates through job->nodes, calling
bdrv_root_unref_child() for each entry. The call to the latter may
reach child_job_[can_]set_aio_ctx(), which will also attempt to
traverse job->nodes, potentially finding entries that where freed
on previous iterations.
To avoid this situation, update job->nodes head on each iteration to
ensure that already freed entries are no longer linked to the list.
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1746631
Signed-off-by: Sergio Lopez <slp@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-id: 20190911100316.32282-1-mreitz@redhat.com
Reviewed-by: Sergio Lopez <slp@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
Diffstat (limited to 'hw/pci-bridge/simba.c')
0 files changed, 0 insertions, 0 deletions