diff --git a/hw/ide/atapi.c b/hw/ide/atapi.c
index 95056d92e78bb5b4a9c68d1b3117b555c01a8765..61896750365e7da0086f10ab574ee766a0ea24e6 100644
--- a/hw/ide/atapi.c
+++ b/hw/ide/atapi.c
@@ -386,6 +386,7 @@ static void ide_atapi_cmd_read_dma_cb(void *opaque, int ret)
     if (ret < 0) {
         if (ide_handle_rw_error(s, -ret, ide_dma_cmd_to_retry(s->dma_cmd))) {
             if (s->bus->error_status) {
+                s->bus->dma->aiocb = NULL;
                 return;
             }
             goto eot;