Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756276AbcLAHKg (ORCPT ); Thu, 1 Dec 2016 02:10:36 -0500 Received: from m12-17.163.com ([220.181.12.17]:52578 "EHLO m12-17.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751003AbcLAHKe (ORCPT ); Thu, 1 Dec 2016 02:10:34 -0500 From: Pan Bian To: Dan Williams , Vinod Koul , Dave Jiang , Julia Lawall Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, Pan Bian Subject: [PATCH 1/1] dma: ioat: set error code on failures Date: Thu, 1 Dec 2016 15:10:12 +0800 Message-Id: <1480576212-26518-1-git-send-email-bianpan2016@163.com> X-Mailer: git-send-email 1.9.1 X-CM-TRANSID: EcCowAB3jQ7XzD9YyvICDw--.2108S3 X-Coremail-Antispam: 1Uf129KBjvdXoWrZFWDKF48Kry8ur1xWr1UAwb_yoWktFgE9r 1xArn2grn8CrsrJa10yryavryjya45XFn7uF1kKa47K34vk3s5GFW09rsIyr1Uur1SkFZ8 Wrs3ZrWrCrsrujkaLaAFLSUrUUUUUb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUvcSsGvfC2KfnxnUUI43ZEXa7IUY33ktUUUUU== X-Originating-IP: [106.120.213.17] X-CM-SenderInfo: held01tdqsiiqw6rljoofrz/1tbiNh0zclWBUbWe-AAAs4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1153 Lines: 32 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 --- 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