Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933345AbcLBOuQ (ORCPT ); Fri, 2 Dec 2016 09:50:16 -0500 Received: from m50-134.163.com ([123.125.50.134]:34083 "EHLO m50-134.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760961AbcLBOuO (ORCPT ); Fri, 2 Dec 2016 09:50:14 -0500 From: Pan Bian To: Vinod Koul , Dan Williams , Dave Jiang , Julia Lawall Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Pan Bian Subject: [PATCH 1/2] dmaengine: ioat: set error code on failures Date: Fri, 2 Dec 2016 22:49:01 +0800 Message-Id: <1480690141-2858-1-git-send-email-bianpan2016@163.com> X-Mailer: git-send-email 1.9.1 X-CM-TRANSID: DtGowAAXzi7fiUFYt7iiIQ--.34301S3 X-Coremail-Antispam: 1Uf129KBjvdXoWrZFWDKF48Kry8ur1xWr1UAwb_yoWktwbE9r 17Arn2gwn8ArsrJa18tr9IvryUta45XFn7uF1kKa47t34vk3s5AFWIgrsIyF1Uur4SkFZ8 Wrs3ZrWrursrujkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IU5joGPUUUUU== X-Originating-IP: [222.131.246.88] X-CM-SenderInfo: held01tdqsiiqw6rljoofrz/1tbiQAw0clSIRRYqlAABs6 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1158 Lines: 33 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. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188591 Signed-off-by: Pan Bian --- 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