From 938e8b4ce7d1f231a748e6e4b0852eb0aa511cae Mon Sep 17 00:00:00 2001 From: Jukka Laitinen Date: Wed, 28 Aug 2019 08:42:41 -0600 Subject: [PATCH] arch/arm/src/stm32h7/stm32_ethernet.c: Correct memory corruption error. The Ethernet driver initialization incorrectly wrote to DMACRXCR instead of DMACSR when trying to clear the stopped flags. This caused invalid buffer length in the DMACRXCR, causing DMA to overflow the RX buffers when large packets are sent to the device. --- arch/arm/src/stm32h7/stm32_ethernet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/src/stm32h7/stm32_ethernet.c b/arch/arm/src/stm32h7/stm32_ethernet.c index ec401fbbeae..d58c705fee1 100644 --- a/arch/arm/src/stm32h7/stm32_ethernet.c +++ b/arch/arm/src/stm32h7/stm32_ethernet.c @@ -4219,9 +4219,9 @@ static int stm32_macenable(struct stm32_ethmac_s *priv) /* Clear Tx and Rx process stopped flags */ - regval = stm32_getreg(STM32_ETH_DMACRXCR); + regval = stm32_getreg(STM32_ETH_DMACSR); regval |= (ETH_DMACSR_TPS | ETH_DMACSR_RPS); - stm32_putreg(regval, STM32_ETH_DMACRXCR); + stm32_putreg(regval, STM32_ETH_DMACSR); return OK; }