pipeline: fix deallocate null pointer

Message ID 1619073510-58316-1-git-send-email-humin29@huawei.com (mailing list archive)
State Rejected, archived
Delegated to: Thomas Monjalon
Headers
Series pipeline: fix deallocate null pointer |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot success github build: passed
ci/Intel-compilation fail apply issues

Commit Message

humin (Q) April 22, 2021, 6:38 a.m. UTC
  From: HongBo Zheng <zhenghongbo3@huawei.com>

Fix deallocate null pointer in instruction_config, while
pointer 'data' or 'instr' may be null.

Fixes: a1711f948dbf ("pipeline: add SWX Rx and extract instructions")
Cc: stable@dpdk.org

Signed-off-by: HongBo Zheng <zhenghongbo3@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
---
 lib/librte_pipeline/rte_swx_pipeline.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
  

Comments

Cristian Dumitrescu April 22, 2021, 8:36 a.m. UTC | #1
> -----Original Message-----
> From: Min Hu (Connor) <humin29@huawei.com>
> Sent: Thursday, April 22, 2021 7:39 AM
> To: dev@dpdk.org
> Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; Dumitrescu, Cristian
> <cristian.dumitrescu@intel.com>
> Subject: [PATCH] pipeline: fix deallocate null pointer
> 
> From: HongBo Zheng <zhenghongbo3@huawei.com>
> 
> Fix deallocate null pointer in instruction_config, while
> pointer 'data' or 'instr' may be null.
> 
> Fixes: a1711f948dbf ("pipeline: add SWX Rx and extract instructions")
> Cc: stable@dpdk.org
> 
> Signed-off-by: HongBo Zheng <zhenghongbo3@huawei.com>
> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
> ---
>  lib/librte_pipeline/rte_swx_pipeline.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_pipeline/rte_swx_pipeline.c
> b/lib/librte_pipeline/rte_swx_pipeline.c
> index 4455d91..6084635 100644
> --- a/lib/librte_pipeline/rte_swx_pipeline.c
> +++ b/lib/librte_pipeline/rte_swx_pipeline.c
> @@ -8015,8 +8015,10 @@ instruction_config(struct rte_swx_pipeline *p,
>  	return 0;
> 
>  error:
> -	free(data);
> -	free(instr);
> +	if (data)
> +		free(data);
> +	if (instr)
> +		free(instr);
>  	return err;
>  }
> 
> --
> 2.7.4

Hi,

NACK.

Thanks for the patch, but the tests for data and instr being non-NULL before calling free are not required, because:
1. Both data and instr are initialized to NULL.
2. free(NULL) is supported.

Regards,
Cristian
  
humin (Q) April 22, 2021, 9:36 a.m. UTC | #2
在 2021/4/22 16:36, Dumitrescu, Cristian 写道:
> 
> 
>> -----Original Message-----
>> From: Min Hu (Connor) <humin29@huawei.com>
>> Sent: Thursday, April 22, 2021 7:39 AM
>> To: dev@dpdk.org
>> Cc: Yigit, Ferruh <ferruh.yigit@intel.com>; Dumitrescu, Cristian
>> <cristian.dumitrescu@intel.com>
>> Subject: [PATCH] pipeline: fix deallocate null pointer
>>
>> From: HongBo Zheng <zhenghongbo3@huawei.com>
>>
>> Fix deallocate null pointer in instruction_config, while
>> pointer 'data' or 'instr' may be null.
>>
>> Fixes: a1711f948dbf ("pipeline: add SWX Rx and extract instructions")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: HongBo Zheng <zhenghongbo3@huawei.com>
>> Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
>> ---
>>   lib/librte_pipeline/rte_swx_pipeline.c | 6 ++++--
>>   1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/librte_pipeline/rte_swx_pipeline.c
>> b/lib/librte_pipeline/rte_swx_pipeline.c
>> index 4455d91..6084635 100644
>> --- a/lib/librte_pipeline/rte_swx_pipeline.c
>> +++ b/lib/librte_pipeline/rte_swx_pipeline.c
>> @@ -8015,8 +8015,10 @@ instruction_config(struct rte_swx_pipeline *p,
>>   	return 0;
>>
>>   error:
>> -	free(data);
>> -	free(instr);
>> +	if (data)
>> +		free(data);
>> +	if (instr)
>> +		free(instr);
>>   	return err;
>>   }
>>
>> --
>> 2.7.4
> 
> Hi,
> 
> NACK.
> 
> Thanks for the patch, but the tests for data and instr being non-NULL before calling free are not required, because:
> 1. Both data and instr are initialized to NULL.
> 2. free(NULL) is supported.
> 
Agreed, thanks Cristian, this patch can be abandoned.
> Regards,
> Cristian
> .
>
  

Patch

diff --git a/lib/librte_pipeline/rte_swx_pipeline.c b/lib/librte_pipeline/rte_swx_pipeline.c
index 4455d91..6084635 100644
--- a/lib/librte_pipeline/rte_swx_pipeline.c
+++ b/lib/librte_pipeline/rte_swx_pipeline.c
@@ -8015,8 +8015,10 @@  instruction_config(struct rte_swx_pipeline *p,
 	return 0;
 
 error:
-	free(data);
-	free(instr);
+	if (data)
+		free(data);
+	if (instr)
+		free(instr);
 	return err;
 }