ahci: Fix crashes on duplicate BH registration
PATCH 1/1 ahci: Fix crashes on duplicate BH registration
If ahci_dma_set_inactive is called a while there is still a pending BH from a previous run, we will crash on the second run of ahci_check_cmd_bh as it overwrites AHCIDevice::check_bh. Avoid this broken and redundant duplicate registration.
Signed-off-by Jan Kiszka <[email protected]>
--- hw/ide/ahci.c | 8 +++++--- 1 files changed, 5 insertions(+), 3 deletions(-)
hw/ide/ahci.c +5 -3
@@ -1066,9 +1066,11 @@ static int ahci_dma_set_inactive(IDEDMA *dma) ad->dma_cb =NULL ; -/* maybe we still have something to process, check later */ - ad->check_bh =qemu_bh_new (ahci_check_cmd_bh, ad); -qemu_bh_schedule (ad->check_bh); +if (!ad->check_bh) { +/* maybe we still have something to process, check later */ + ad->check_bh =qemu_bh_new (ahci_check_cmd_bh, ad); +qemu_bh_schedule (ad->check_bh); + }return 0 ; }
Signature · 1 line
1.7.1
Kevin Wolf
AppliedAm 09.05.2011 17:48, schrieb Jan Kiszka:
Quoted 6 lines
If
ahci_dma_set_inactiveis called a while there is still a pending BH from a previous run, we will crash on the second run ofahci_check_cmd_bhas it overwritesAHCIDevice::check_bh. Avoid this broken and redundant duplicate registration.Signed-off-by Jan Kiszka <[email protected]>
Thanks, applied to the block branch.
Kevin