Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751621AbdILKp5 (ORCPT ); Tue, 12 Sep 2017 06:45:57 -0400 Received: from fllnx209.ext.ti.com ([198.47.19.16]:55998 "EHLO fllnx209.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751375AbdILKpd (ORCPT ); Tue, 12 Sep 2017 06:45:33 -0400 From: Peter Ujfalusi To: , CC: , , , , Subject: [PATCH 2/5] dmaengine: omap-dma: Implement protection for invalid max_burst Date: Tue, 12 Sep 2017 13:44:21 +0300 Message-ID: <20170912104424.18495-3-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 Content-Type: text/plain; charset="utf-8" X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by nfs id v8CAk1ss015453 Content-Length: 1426 Lines: 40 Set the device's max_burst to 16777215 (EN is 24bit unsigned 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/omap-dma.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/dma/omap-dma.c b/drivers/dma/omap-dma.c index 8c1665c8fe33..f6dd849159d8 100644 --- a/drivers/dma/omap-dma.c +++ b/drivers/dma/omap-dma.c @@ -1288,6 +1288,10 @@ static int omap_dma_slave_config(struct dma_chan *chan, struct dma_slave_config 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(&c->cfg, cfg, sizeof(c->cfg)); return 0; @@ -1482,6 +1486,7 @@ static int omap_dma_probe(struct platform_device *pdev) od->ddev.dst_addr_widths = OMAP_DMA_BUSWIDTHS; od->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; + od->ddev.max_burst = SZ_16M - 1; /* CCEN: 24bit unsigned */ od->ddev.dev = &pdev->dev; INIT_LIST_HEAD(&od->ddev.channels); spin_lock_init(&od->lock); -- 2.14.1 Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki