summaryrefslogtreecommitdiffstats
path: root/hw
diff options
context:
space:
mode:
authorMichael Tokarev2014-08-13 09:23:31 +0200
committerStefan Hajnoczi2014-08-15 19:03:14 +0200
commitd66168ed687325aa6d338ce3a3cff18ce3098ed6 (patch)
tree44b1407e01cad38ae5288133a8164af48cca7bf7 /hw
parentvirtio-blk: Correct bug in support for flexible descriptor layout (diff)
downloadqemu-d66168ed687325aa6d338ce3a3cff18ce3098ed6.tar.gz
qemu-d66168ed687325aa6d338ce3a3cff18ce3098ed6.tar.xz
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>
Diffstat (limited to 'hw')
-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;