summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEdgar E. Iglesias <edgar.iglesias@xilinx.com>2016-02-16 12:42:49 +0100
committerTimothy Pearson <tpearson@raptorengineering.com>2019-11-29 19:45:30 -0600
commit0f2e60d82b7819f2c52e16b48cc44728836f02b5 (patch)
tree83fbdcc46e236264d14752b3ae2236b3623b3c64
parent8f21521d08ac66d0f2295d32f5cb288009bcadc8 (diff)
downloadhqemu-0f2e60d82b7819f2c52e16b48cc44728836f02b5.zip
hqemu-0f2e60d82b7819f2c52e16b48cc44728836f02b5.tar.gz
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 9cbb165..d5650eb 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;
OpenPOWER on IntegriCloud