From e847ee5835a132c84ff6f2172f3fd03507f7bb84 Mon Sep 17 00:00:00 2001 From: Tony Josi Date: Wed, 19 Jul 2023 14:59:31 +0530 Subject: [PATCH 1/3] free old buffer once duplicate has been made --- source/FreeRTOS_ND.c | 5 ++++- source/FreeRTOS_RA.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/FreeRTOS_ND.c b/source/FreeRTOS_ND.c index 43c68cd6a..d8ddba380 100644 --- a/source/FreeRTOS_ND.c +++ b/source/FreeRTOS_ND.c @@ -573,6 +573,7 @@ IPv6_Address_t xTargetIPAddress; MACAddress_t xMultiCastMacAddress; NetworkBufferDescriptor_t * pxDescriptor = pxNetworkBuffer; + NetworkBufferDescriptor_t * pxNewDescriptor = NULL; if( ( pxEndPoint != NULL ) && ( pxEndPoint->bits.bIPv6 != pdFALSE_UNSIGNED ) ) { @@ -580,7 +581,9 @@ if( pxDescriptor->xDataLength < uxNeededSize ) { - pxDescriptor = pxDuplicateNetworkBufferWithDescriptor( pxDescriptor, uxNeededSize ); + pxNewDescriptor = pxDuplicateNetworkBufferWithDescriptor( pxDescriptor, uxNeededSize ); + vReleaseNetworkBufferAndDescriptor(pxDescriptor); + pxDescriptor = pxNewDescriptor; } if( pxDescriptor != NULL ) diff --git a/source/FreeRTOS_RA.c b/source/FreeRTOS_RA.c index c98094752..a2eb85084 100644 --- a/source/FreeRTOS_RA.c +++ b/source/FreeRTOS_RA.c @@ -138,6 +138,7 @@ NetworkBufferDescriptor_t * pxDescriptor = pxNetworkBuffer; IPv6_Address_t xSourceAddress; BaseType_t xHasLocal; + NetworkBufferDescriptor_t * pxNewDescriptor = NULL; configASSERT( pxEndPoint != NULL ); configASSERT( pxEndPoint->bits.bIPv6 != pdFALSE_UNSIGNED ); @@ -156,7 +157,9 @@ if( pxDescriptor->xDataLength < uxNeededSize ) { - pxDescriptor = pxDuplicateNetworkBufferWithDescriptor( pxDescriptor, uxNeededSize ); + pxNewDescriptor = pxDuplicateNetworkBufferWithDescriptor( pxDescriptor, uxNeededSize ); + vReleaseNetworkBufferAndDescriptor(pxDescriptor); + pxDescriptor = pxNewDescriptor; } if( pxDescriptor != NULL ) From 67e5fa31bedb9747d8b91cade5590f9c91b71df3 Mon Sep 17 00:00:00 2001 From: tony-josi-aws Date: Wed, 19 Jul 2023 15:02:04 +0530 Subject: [PATCH 2/3] fix formattting --- source/FreeRTOS_ND.c | 6 +++--- source/FreeRTOS_RA.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/FreeRTOS_ND.c b/source/FreeRTOS_ND.c index d8ddba380..439c5038a 100644 --- a/source/FreeRTOS_ND.c +++ b/source/FreeRTOS_ND.c @@ -581,9 +581,9 @@ if( pxDescriptor->xDataLength < uxNeededSize ) { - pxNewDescriptor = pxDuplicateNetworkBufferWithDescriptor( pxDescriptor, uxNeededSize ); - vReleaseNetworkBufferAndDescriptor(pxDescriptor); - pxDescriptor = pxNewDescriptor; + pxNewDescriptor = pxDuplicateNetworkBufferWithDescriptor( pxDescriptor, uxNeededSize ); + vReleaseNetworkBufferAndDescriptor( pxDescriptor ); + pxDescriptor = pxNewDescriptor; } if( pxDescriptor != NULL ) diff --git a/source/FreeRTOS_RA.c b/source/FreeRTOS_RA.c index a2eb85084..e36d8aea0 100644 --- a/source/FreeRTOS_RA.c +++ b/source/FreeRTOS_RA.c @@ -158,7 +158,7 @@ if( pxDescriptor->xDataLength < uxNeededSize ) { pxNewDescriptor = pxDuplicateNetworkBufferWithDescriptor( pxDescriptor, uxNeededSize ); - vReleaseNetworkBufferAndDescriptor(pxDescriptor); + vReleaseNetworkBufferAndDescriptor( pxDescriptor ); pxDescriptor = pxNewDescriptor; } From ddebe968be8e465901f56e4760e30bfa1ff50c6e Mon Sep 17 00:00:00 2001 From: tony-josi-aws Date: Wed, 19 Jul 2023 15:15:29 +0530 Subject: [PATCH 3/3] fix unit tests --- test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c | 2 ++ test/unit-test/FreeRTOS_RA/FreeRTOS_RA_utest.c | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c b/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c index f0d0ddf93..d15d77445 100644 --- a/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c +++ b/test/unit-test/FreeRTOS_ND/FreeRTOS_ND_utest.c @@ -722,6 +722,8 @@ void test_vNDAgeCache_NSIncorrectDataLen( void ) pxDuplicateNetworkBufferWithDescriptor_ExpectAnyArgsAndReturn( NULL ); + vReleaseNetworkBufferAndDescriptor_Expect( &xNetworkBuffer ); + vNDAgeCache(); TEST_ASSERT_EQUAL( xNDCache[ xUseEntry ].ucAge, xAgeDefault - 1 ); diff --git a/test/unit-test/FreeRTOS_RA/FreeRTOS_RA_utest.c b/test/unit-test/FreeRTOS_RA/FreeRTOS_RA_utest.c index d50af6b65..0d77637d7 100644 --- a/test/unit-test/FreeRTOS_RA/FreeRTOS_RA_utest.c +++ b/test/unit-test/FreeRTOS_RA/FreeRTOS_RA_utest.c @@ -149,6 +149,8 @@ void test_vNDSendRouterSolicitation_xHasLocal0( void ) pxDuplicateNetworkBufferWithDescriptor_ExpectAnyArgsAndReturn( NULL ); + vReleaseNetworkBufferAndDescriptor_Expect( pxNetworkBuffer ); + vNDSendRouterSolicitation( pxNetworkBuffer, &xIPAddress ); } @@ -188,6 +190,8 @@ void test_vNDSendRouterSolicitation_xHasLocal1( void ) pxDuplicateNetworkBufferWithDescriptor_ExpectAnyArgsAndReturn( NULL ); + vReleaseNetworkBufferAndDescriptor_Expect( pxNetworkBuffer ); + vNDSendRouterSolicitation( pxNetworkBuffer, &xIPAddress ); } @@ -223,6 +227,8 @@ void test_vNDSendRouterSolicitation_NullDesc( void ) pxDuplicateNetworkBufferWithDescriptor_ExpectAnyArgsAndReturn( NULL ); + vReleaseNetworkBufferAndDescriptor_Expect( pxNetworkBuffer ); + vNDSendRouterSolicitation( pxNetworkBuffer, &xIPAddress ); } @@ -1017,6 +1023,8 @@ void test_vRAProcess_eRAStateApply2( void ) /*usGenerateProtocolChecksum_ExpectAnyArgsAndReturn( ipCORRECT_CRC ); */ /*vReturnEthernetFrame_ExpectAnyArgs(); */ + vReleaseNetworkBufferAndDescriptor_Expect( &xNetworkBuffer ); + vDHCP_RATimerReload_ExpectAnyArgs(); /* pdFALSE for vRAProcessInit */