From patchwork Thu Jun 20 14:58:45 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Andrzej Siewior X-Patchwork-Id: 252990 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 8BF6A2C009D for ; Fri, 21 Jun 2013 00:59:17 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758024Ab3FTO7E (ORCPT ); Thu, 20 Jun 2013 10:59:04 -0400 Received: from www.linutronix.de ([62.245.132.108]:33784 "EHLO Galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758017Ab3FTO7B (ORCPT ); Thu, 20 Jun 2013 10:59:01 -0400 Received: from localhost ([127.0.0.1] helo=localhost.localdomain) by Galois.linutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1UpgKB-0007QC-8C; Thu, 20 Jun 2013 16:58:59 +0200 From: Sebastian Andrzej Siewior To: "David S. Miller" Cc: netdev@vger.kernel.org, Sebastian Andrzej Siewior , Mugunthan V N Subject: [PATCH] net: eth: davicnci_cpdma: check dma map error Date: Thu, 20 Jun 2013 16:58:45 +0200 Message-Id: <1371740325-14560-1-git-send-email-bigeasy@linutronix.de> X-Mailer: git-send-email 1.8.3.1 X-Linutronix-Spam-Score: -1.0 X-Linutronix-Spam-Level: - X-Linutronix-Spam-Status: No , -1.0 points, 5.0 required, ALL_TRUSTED=-1, SHORTCIRCUIT=-0.0001 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Since the DMA mapping may fail the caller should check the return value. Cc: Mugunthan V N Signed-off-by: Sebastian Andrzej Siewior --- drivers/net/ethernet/ti/davinci_cpdma.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/ethernet/ti/davinci_cpdma.c b/drivers/net/ethernet/ti/davinci_cpdma.c index 49dfd59..053c84f 100644 --- a/drivers/net/ethernet/ti/davinci_cpdma.c +++ b/drivers/net/ethernet/ti/davinci_cpdma.c @@ -705,6 +705,13 @@ int cpdma_chan_submit(struct cpdma_chan *chan, void *token, void *data, } buffer = dma_map_single(ctlr->dev, data, len, chan->dir); + ret = dma_mapping_error(ctlr->dev, buffer); + if (ret) { + cpdma_desc_free(ctlr->pool, desc, 1); + ret = -EINVAL; + goto unlock_ret; + } + mode = CPDMA_DESC_OWNER | CPDMA_DESC_SOP | CPDMA_DESC_EOP; cpdma_desc_to_port(chan, mode, directed);