summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorEdgar E. Iglesias <edgar.iglesias@xilinx.com>2016-02-16 12:42:49 +0100
committerEdgar E. Iglesias <edgar.iglesias@xilinx.com>2016-02-20 00:17:48 +0100
commitc3bce9d5f986bc22b0692a8fa9d26ce6d304375c (patch)
tree43c3c4ae44721518b0f1be0b874fa7a0798ddfca
parent586d1a99ff1253ac97c07459743e952abfff2a54 (diff)
downloadfocaccia-qemu-c3bce9d5f986bc22b0692a8fa9d26ce6d304375c.tar.gz
focaccia-qemu-c3bce9d5f986bc22b0692a8fa9d26ce6d304375c.zip
etraxfs_dma: Dont forward zero-length payload to clients
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
-rw-r--r--hw/dma/etraxfs_dma.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/hw/dma/etraxfs_dma.c b/hw/dma/etraxfs_dma.c
index 9cbb16580e..d5650eb885 100644
--- a/hw/dma/etraxfs_dma.c
+++ b/hw/dma/etraxfs_dma.c
@@ -440,13 +440,16 @@ static int channel_out_run(struct fs_dma_ctrl *ctrl, int c)
 		D(printf("channel %d pushes %x %u bytes eop=%u\n", c,
 		         saved_data_buf, len, out_eop));
 
-		if (ctrl->channels[c].client->client.push)
-			ctrl->channels[c].client->client.push(
-				ctrl->channels[c].client->client.opaque,
-				buf, len, out_eop);
-		else
+		if (ctrl->channels[c].client->client.push) {
+                        if (len > 0) {
+				ctrl->channels[c].client->client.push(
+					ctrl->channels[c].client->client.opaque,
+					buf, len, out_eop);
+			}
+		} else {
 			printf("WARNING: DMA ch%d dataloss,"
 			       " no attached client.\n", c);
+		}
 
 		saved_data_buf += len;