All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings
@ 2024-11-28  5:01 Maxim Kochetkov via buildroot
  2024-11-28  5:15 ` Baruch Siach via buildroot
  0 siblings, 1 reply; 3+ messages in thread
From: Maxim Kochetkov via buildroot @ 2024-11-28  5:01 UTC (permalink / raw)
  To: buildroot; +Cc: Maxim Kochetkov

axi_rw_burst_len allowed values range is 1..256. Then this value
goes to ARLEN/AWLEN 8-bit fields of lli->ctl_hi. So writing 256
leads to overflow and overwrites another fields in LLI. More over
ARLEN/AWLEN are zero based (0 - 1, 256 - 255).

Fixes: c454d16a7d5a ("dmaengine: dw-axi-dmac: Burst length settings")
Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
---
 drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
index b23536645ff7..9aa79e9b49ca 100644
--- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
+++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
@@ -1437,7 +1437,7 @@ static int parse_device_properties(struct axi_dma_chip *chip)
 			return -EINVAL;
 
 		chip->dw->hdata->restrict_axi_burst_len = true;
-		chip->dw->hdata->axi_rw_burst_len = tmp;
+		chip->dw->hdata->axi_rw_burst_len = tmp - 1;
 	}
 
 	return 0;
@@ -1550,7 +1550,7 @@ static int dw_probe(struct platform_device *pdev)
 	dma_cap_set(DMA_CYCLIC, dw->dma.cap_mask);
 
 	/* DMA capabilities */
-	dw->dma.max_burst = hdata->axi_rw_burst_len;
+	dw->dma.max_burst = hdata->axi_rw_burst_len + 1;
 	dw->dma.src_addr_widths = AXI_DMA_BUSWIDTHS;
 	dw->dma.dst_addr_widths = AXI_DMA_BUSWIDTHS;
 	dw->dma.directions = BIT(DMA_MEM_TO_MEM);
-- 
2.45.2

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings
  2024-11-28  5:01 [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings Maxim Kochetkov via buildroot
@ 2024-11-28  5:15 ` Baruch Siach via buildroot
  2024-11-28  6:08   ` Maxim Kochetkov via buildroot
  0 siblings, 1 reply; 3+ messages in thread
From: Baruch Siach via buildroot @ 2024-11-28  5:15 UTC (permalink / raw)
  To: Maxim Kochetkov via buildroot; +Cc: Maxim Kochetkov

Hi Maxim,

On Thu, Nov 28 2024, Maxim Kochetkov via buildroot wrote:
> axi_rw_burst_len allowed values range is 1..256. Then this value
> goes to ARLEN/AWLEN 8-bit fields of lli->ctl_hi. So writing 256
> leads to overflow and overwrites another fields in LLI. More over
> ARLEN/AWLEN are zero based (0 - 1, 256 - 255).
>
> Fixes: c454d16a7d5a ("dmaengine: dw-axi-dmac: Burst length settings")
> Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>

This is the wrong list for this patch, I believe.

baruch

> ---
>  drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
> index b23536645ff7..9aa79e9b49ca 100644
> --- a/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
> +++ b/drivers/dma/dw-axi-dmac/dw-axi-dmac-platform.c
> @@ -1437,7 +1437,7 @@ static int parse_device_properties(struct axi_dma_chip *chip)
>  			return -EINVAL;
>  
>  		chip->dw->hdata->restrict_axi_burst_len = true;
> -		chip->dw->hdata->axi_rw_burst_len = tmp;
> +		chip->dw->hdata->axi_rw_burst_len = tmp - 1;
>  	}
>  
>  	return 0;
> @@ -1550,7 +1550,7 @@ static int dw_probe(struct platform_device *pdev)
>  	dma_cap_set(DMA_CYCLIC, dw->dma.cap_mask);
>  
>  	/* DMA capabilities */
> -	dw->dma.max_burst = hdata->axi_rw_burst_len;
> +	dw->dma.max_burst = hdata->axi_rw_burst_len + 1;
>  	dw->dma.src_addr_widths = AXI_DMA_BUSWIDTHS;
>  	dw->dma.dst_addr_widths = AXI_DMA_BUSWIDTHS;
>  	dw->dma.directions = BIT(DMA_MEM_TO_MEM);

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings
  2024-11-28  5:15 ` Baruch Siach via buildroot
@ 2024-11-28  6:08   ` Maxim Kochetkov via buildroot
  0 siblings, 0 replies; 3+ messages in thread
From: Maxim Kochetkov via buildroot @ 2024-11-28  6:08 UTC (permalink / raw)
  To: buildroot

28.11.2024 08:15, Baruch Siach via buildroot wrote:
> Hi Maxim,
> 
> On Thu, Nov 28 2024, Maxim Kochetkov via buildroot wrote:
>> axi_rw_burst_len allowed values range is 1..256. Then this value
>> goes to ARLEN/AWLEN 8-bit fields of lli->ctl_hi. So writing 256
>> leads to overflow and overwrites another fields in LLI. More over
>> ARLEN/AWLEN are zero based (0 - 1, 256 - 255).
>>
>> Fixes: c454d16a7d5a ("dmaengine: dw-axi-dmac: Burst length settings")
>> Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
> 
> This is the wrong list for this patch, I believe.

Yep. Sorry about that. That was miss click.


_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-11-28  6:08 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-28  5:01 [Buildroot] [PATCH 1/1] dmaengine: dw-axi-dmac: fix snps, axi-max-burst-len settings Maxim Kochetkov via buildroot
2024-11-28  5:15 ` Baruch Siach via buildroot
2024-11-28  6:08   ` Maxim Kochetkov via buildroot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.