OSDN Git Service

etraxfs_dma: Dont forward zero-length payload to clients
authorEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Tue, 16 Feb 2016 11:42:49 +0000 (12:42 +0100)
committerEdgar E. Iglesias <edgar.iglesias@xilinx.com>
Fri, 19 Feb 2016 23:17:48 +0000 (00:17 +0100)
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
hw/dma/etraxfs_dma.c

index 9cbb165..d5650eb 100644 (file)
@@ -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;