Fix bug https://bugzilla.kernel.org/show_bug.cgi?id=188591. In function
ioat_dma_self_test(), when the calls to dma_mapping_error() fails, the
value of return variable err is 0 (indicates no error). As a result, the
return value may be inconsistent with the execution status. This patch
fixes the bug by assigning -ENOMEM to err on the error path.
Signed-off-by: Pan Bian <[email protected]>
---
drivers/dma/ioat/init.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
index 015f711..32383ef 100644
--- a/drivers/dma/ioat/init.c
+++ b/drivers/dma/ioat/init.c
@@ -340,11 +340,13 @@ static int ioat_dma_self_test(struct ioatdma_device *ioat_dma)
dma_src = dma_map_single(dev, src, IOAT_TEST_SIZE, DMA_TO_DEVICE);
if (dma_mapping_error(dev, dma_src)) {
dev_err(dev, "mapping src buffer failed\n");
+ err = -ENOMEM;
goto free_resources;
}
dma_dest = dma_map_single(dev, dest, IOAT_TEST_SIZE, DMA_FROM_DEVICE);
if (dma_mapping_error(dev, dma_dest)) {
dev_err(dev, "mapping dest buffer failed\n");
+ err = -ENOMEM;
goto unmap_src;
}
flags = DMA_PREP_INTERRUPT;
--
1.9.1
On 12/01/2016 12:10 AM, Pan Bian wrote:
> Fix bug https://bugzilla.kernel.org/show_bug.cgi?id=188591. In function
> ioat_dma_self_test(), when the calls to dma_mapping_error() fails, the
> value of return variable err is 0 (indicates no error). As a result, the
> return value may be inconsistent with the execution status. This patch
> fixes the bug by assigning -ENOMEM to err on the error path.
>
> Signed-off-by: Pan Bian <[email protected]>
Acked-by: Dave Jiang <[email protected]>
> ---
> drivers/dma/ioat/init.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/dma/ioat/init.c b/drivers/dma/ioat/init.c
> index 015f711..32383ef 100644
> --- a/drivers/dma/ioat/init.c
> +++ b/drivers/dma/ioat/init.c
> @@ -340,11 +340,13 @@ static int ioat_dma_self_test(struct ioatdma_device *ioat_dma)
> dma_src = dma_map_single(dev, src, IOAT_TEST_SIZE, DMA_TO_DEVICE);
> if (dma_mapping_error(dev, dma_src)) {
> dev_err(dev, "mapping src buffer failed\n");
> + err = -ENOMEM;
> goto free_resources;
> }
> dma_dest = dma_map_single(dev, dest, IOAT_TEST_SIZE, DMA_FROM_DEVICE);
> if (dma_mapping_error(dev, dma_dest)) {
> dev_err(dev, "mapping dest buffer failed\n");
> + err = -ENOMEM;
> goto unmap_src;
> }
> flags = DMA_PREP_INTERRUPT;
>
On Thu, Dec 01, 2016 at 03:10:12PM +0800, Pan Bian wrote:
> Fix bug https://bugzilla.kernel.org/show_bug.cgi?id=188591. In function
> ioat_dma_self_test(), when the calls to dma_mapping_error() fails, the
> value of return variable err is 0 (indicates no error). As a result, the
> return value may be inconsistent with the execution status. This patch
> fixes the bug by assigning -ENOMEM to err on the error path.
Please describe the fix you are doing. For Bugzilla you can use Fixes tag
Also add the correct subsystem tag, so the changelog can look like:
dmaengine: ioat: set error code on failures
In ioat_dma_self_test(), when the calls to dma_mapping_error() fails, the
value of return variable err is 0 ...
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188591
Fixes: Commit you fixes
..
So please update the changelog and resend with Acks collected
--
~Vinod