summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMichael Tokarev <mjt@tls.msk.ru>2014-08-13 11:23:31 +0400
committerStefan Hajnoczi <stefanha@redhat.com>2014-08-15 18:03:14 +0100
commitd66168ed687325aa6d338ce3a3cff18ce3098ed6 (patch)
tree44b1407e01cad38ae5288133a8164af48cca7bf7
parenta83ceea8ffa5ed8f0b09d6ed1f33da6aae8b14e4 (diff)
downloadfocaccia-qemu-d66168ed687325aa6d338ce3a3cff18ce3098ed6.tar.gz
focaccia-qemu-d66168ed687325aa6d338ce3a3cff18ce3098ed6.zip
ide: only constrain read/write requests to drive size, not other types
Commit 58ac321135a introduced a check to ide dma processing which
constrains all requests to drive size.  However, apparently, some
valid requests (like TRIM) does not fit in this constraint, and
fails in 2.1.  So check the range only for reads and writes.

Cc: qemu-stable@nongnu.org
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
-rw-r--r--hw/ide/core.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/hw/ide/core.c b/hw/ide/core.c
index 82dd4afd84..b48127f921 100644
--- a/hw/ide/core.c
+++ b/hw/ide/core.c
@@ -692,7 +692,8 @@ void ide_dma_cb(void *opaque, int ret)
            sector_num, n, s->dma_cmd);
 #endif
 
-    if (!ide_sect_range_ok(s, sector_num, n)) {
+    if ((s->dma_cmd == IDE_DMA_READ || s->dma_cmd == IDE_DMA_WRITE) &&
+        !ide_sect_range_ok(s, sector_num, n)) {
         dma_buf_commit(s);
         ide_dma_error(s);
         return;