Buildroot Archive on 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox