From patchwork Tue Sep 12 10:44:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Ujfalusi X-Patchwork-Id: 9948959 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9651760325 for ; Tue, 12 Sep 2017 10:45:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9003928F0F for ; Tue, 12 Sep 2017 10:45:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 84A0228F13; Tue, 12 Sep 2017 10:45:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D892028F12 for ; Tue, 12 Sep 2017 10:44:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751384AbdILKo6 (ORCPT ); Tue, 12 Sep 2017 06:44:58 -0400 Received: from lelnx194.ext.ti.com ([198.47.27.80]:52433 "EHLO lelnx194.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751370AbdILKo6 (ORCPT ); Tue, 12 Sep 2017 06:44:58 -0400 Received: from dflxv15.itg.ti.com ([128.247.5.124]) by lelnx194.ext.ti.com (8.15.1/8.15.1) with ESMTP id v8CAiTQB016598; Tue, 12 Sep 2017 05:44:29 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ti.com; s=ti-com-17Q1; t=1505213069; bh=fbCHR3Ke4MLlWfJjPY5XWtqHcKkeqC0PbwvYGw5Jqx0=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=D4EGEbzZTYORFceZuYEe+JnMvbziFQwsYQmNZHB19Q3Q3JR4CFw8i4BiWW/F9R/1m f/AyBV1AD5NyXarmbGGBchTnbffDaamRGl8i1vzZpf70OZoNLtOTm1FC28qirUnsdk amfjSpEkkbwIX7O6BjqdU4TiM1GYb4J23e6nKcqA= Received: from DLEE104.ent.ti.com (dlee104.ent.ti.com [157.170.170.34]) by dflxv15.itg.ti.com (8.14.3/8.13.8) with ESMTP id v8CAiT12032305; Tue, 12 Sep 2017 05:44:29 -0500 Received: from DLEE113.ent.ti.com (157.170.170.24) by DLEE104.ent.ti.com (157.170.170.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.845.34; Tue, 12 Sep 2017 05:44:29 -0500 Received: from dlep32.itg.ti.com (157.170.170.100) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.845.34 via Frontend Transport; Tue, 12 Sep 2017 05:44:29 -0500 Received: from feketebors.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by dlep32.itg.ti.com (8.14.3/8.13.8) with ESMTP id v8CAiOu2007788; Tue, 12 Sep 2017 05:44:27 -0500 From: Peter Ujfalusi To: , CC: , , , , Subject: [PATCH 1/5] dmaengine: edma: Implement protection for invalid max_burst Date: Tue, 12 Sep 2017 13:44:20 +0300 Message-ID: <20170912104424.18495-2-peter.ujfalusi@ti.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20170912104424.18495-1-peter.ujfalusi@ti.com> References: <20170912104424.18495-1-peter.ujfalusi@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: dmaengine-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: dmaengine@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Set the device's max_burst to 32767 (CIDX is 16bit signed value) so clients can take this into consideration when setting up the trasnfer. During slave transfer preparation check if the requested maxburst is valid. Signed-off-by: Peter Ujfalusi --- drivers/dma/edma.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/dma/edma.c b/drivers/dma/edma.c index 3879f80a4815..6970355abdc9 100644 --- a/drivers/dma/edma.c +++ b/drivers/dma/edma.c @@ -891,6 +891,10 @@ static int edma_slave_config(struct dma_chan *chan, cfg->dst_addr_width == DMA_SLAVE_BUSWIDTH_8_BYTES) return -EINVAL; + if (cfg->src_maxburst > chan->device->max_burst || + cfg->dst_maxburst > chan->device->max_burst) + return -EINVAL; + memcpy(&echan->cfg, cfg, sizeof(echan->cfg)); return 0; @@ -1855,6 +1859,7 @@ static void edma_dma_init(struct edma_cc *ecc, bool legacy_mode) s_ddev->dst_addr_widths = EDMA_DMA_BUSWIDTHS; s_ddev->directions |= (BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV)); s_ddev->residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; + s_ddev->max_burst = SZ_32K - 1; /* CIDX: 16bit signed */ s_ddev->dev = ecc->dev; INIT_LIST_HEAD(&s_ddev->channels);