From 21b136f8538df45f2fc0b0ef100a5eaeacf5ac9e Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Mon, 29 Oct 2012 19:20:28 +0100 Subject: Do not return DMA buffer in streaming read if the callback returns error --- dma/nwl_engine.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dma/nwl_engine.c b/dma/nwl_engine.c index fc07ccd..e4c102d 100644 --- a/dma/nwl_engine.c +++ b/dma/nwl_engine.c @@ -299,10 +299,10 @@ int dma_nwl_stream_read(pcilib_dma_context_t *vctx, pcilib_dma_engine_t dma, uin pcilib_kmem_sync_block(ctx->pcilib, info->pages, PCILIB_KMEM_SYNC_FROMDEVICE, bufnum); void *buf = pcilib_kmem_get_block_ua(ctx->pcilib, info->pages, bufnum); ret = cb(cbattr, (eop?PCILIB_DMA_FLAG_EOP:0), bufsize, buf); + if (ret < 0) return -ret; // DS: Fixme, it looks like we can avoid calling this for the sake of performance // pcilib_kmem_sync_block(ctx->pcilib, info->pages, PCILIB_KMEM_SYNC_TODEVICE, bufnum); dma_nwl_return_buffer(ctx, info); - if (ret < 0) return -ret; res += bufsize; -- cgit v1.2.3