diff options
author | Edgar E. Iglesias <edgar.iglesias@xilinx.com> | 2016-02-16 12:42:49 +0100 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineering.com> | 2019-11-29 19:45:30 -0600 |
commit | 0f2e60d82b7819f2c52e16b48cc44728836f02b5 (patch) | |
tree | 83fbdcc46e236264d14752b3ae2236b3623b3c64 /hw/dma | |
parent | 8f21521d08ac66d0f2295d32f5cb288009bcadc8 (diff) | |
download | hqemu-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>
Diffstat (limited to 'hw/dma')
-rw-r--r-- | hw/dma/etraxfs_dma.c | 13 |
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; |