diff --git a/hw/ide/core.c b/hw/ide/core.c
index 081c9eb765ab7d666de2b17368541a977db33417..d117b7c202468041c479d7a43bc43609b6b6c723 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -823,6 +823,7 @@ static void ide_dma_cb(void *opaque, int ret)
     }
     if (ret < 0) {
         if (ide_handle_rw_error(s, -ret, ide_dma_cmd_to_retry(s->dma_cmd))) {
+            s->bus->dma->aiocb = NULL;
             return;
         }
     }