]> rtime.felk.cvut.cz Git - zynq/linux.git/blobdiff - drivers/staging/apf/xilinx-dma-apf.c
staging: apf: Correct sg list length assignment in apf dma
[zynq/linux.git] / drivers / staging / apf / xilinx-dma-apf.c
index 7bcce2d66e11668b6bd99a979e289f73b6a91cb5..55913130eafc8088a69f1bdaf77c8faa0ee351ab 100644 (file)
@@ -818,8 +818,9 @@ int xdma_submit(struct xdma_chan *chan,
                sglist = kmalloc_array(dp->dbuf_sg_table->nents,
                                       sizeof(*sglist),
                                       GFP_KERNEL);
-               if (!dp->sg_list)
+               if (!sglist)
                        return -ENOMEM;
+
                sg_init_table(sglist, dp->dbuf_sg_table->nents);
                sgcnt = 0;
                for_each_sg(dp->dbuf_sg_table->sgl,
@@ -837,6 +838,7 @@ int xdma_submit(struct xdma_chan *chan,
                                sg_dma_len(sglist + i) = remaining_size;
                                sgcnt++;
                        } else {
+                               sg_dma_len(sglist + i) = sg_dma_len(sg);
                                remaining_size -= sg_dma_len(sg);
                                sgcnt++;
                        }