[V5,5/8] mem: possible data truncation and conversion error

Message ID 20221214123253.29549-6-lihuisong@huawei.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series telemetry: fix data truncation and conversion error and add hex integer API |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

lihuisong (C) Dec. 14, 2022, 12:32 p.m. UTC
  The 'u32' and 'u64' data can not assigned to 'int' type variable.
They need to use the 'u64' APIs to add.

Fixes: e6732d0d6e26 ("mem: add telemetry infos")
Cc: stable@dpdk.org

Signed-off-by: Huisong Li <lihuisong@huawei.com>
Acked-by: Morten Brørup <mb@smartsharesystems.com>
Acked-by: Chengwen Feng <fengchengwen@huawei.com>
---
 lib/eal/common/eal_common_memory.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
  

Comments

Morten Brørup Dec. 14, 2022, 1 p.m. UTC | #1
> From: Huisong Li [mailto:lihuisong@huawei.com]
> Sent: Wednesday, 14 December 2022 13.33
> 
> The 'u32' and 'u64' data can not assigned to 'int' type variable.
> They need to use the 'u64' APIs to add.
> 
> Fixes: e6732d0d6e26 ("mem: add telemetry infos")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Huisong Li <lihuisong@huawei.com>
> Acked-by: Morten Brørup <mb@smartsharesystems.com>
> Acked-by: Chengwen Feng <fengchengwen@huawei.com>
> ---
>  lib/eal/common/eal_common_memory.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/eal/common/eal_common_memory.c
> b/lib/eal/common/eal_common_memory.c
> index 688dc615d7..8e427bf4b4 100644
> --- a/lib/eal/common/eal_common_memory.c
> +++ b/lib/eal/common/eal_common_memory.c
> @@ -1139,7 +1139,7 @@ handle_eal_heap_info_request(const char *cmd
> __rte_unused, const char *params,
>  	malloc_heap_get_stats(heap, &sock_stats);
> 
>  	rte_tel_data_start_dict(d);
> -	rte_tel_data_add_dict_int(d, "Head id", heap_id);
> +	rte_tel_data_add_dict_u64(d, "Head id", heap_id);

Consider: "Head id" -> "Heap_id"


>  	rte_tel_data_add_dict_string(d, "Name", heap->name);
>  	rte_tel_data_add_dict_u64(d, "Heap_size",
>  				  sock_stats.heap_totalsz_bytes);
> @@ -1201,13 +1201,13 @@ handle_eal_memzone_info_request(const char *cmd
> __rte_unused,
>  	mz = rte_fbarray_get(&mcfg->memzones, mz_idx);
> 
>  	rte_tel_data_start_dict(d);
> -	rte_tel_data_add_dict_int(d, "Zone", mz_idx);
> +	rte_tel_data_add_dict_u64(d, "Zone", mz_idx);
>  	rte_tel_data_add_dict_string(d, "Name", mz->name);
> -	rte_tel_data_add_dict_int(d, "Length", mz->len);
> +	rte_tel_data_add_dict_u64(d, "Length", mz->len);
>  	snprintf(addr, ADDR_STR, "%p", mz->addr);
>  	rte_tel_data_add_dict_string(d, "Address", addr);
>  	rte_tel_data_add_dict_int(d, "Socket", mz->socket_id);
> -	rte_tel_data_add_dict_int(d, "Flags", mz->flags);
> +	rte_tel_data_add_dict_u64(d, "Flags", mz->flags);
> 
>  	/* go through each page occupied by this memzone */
>  	msl = rte_mem_virt2memseg_list(mz->addr);
> @@ -1222,7 +1222,7 @@ handle_eal_memzone_info_request(const char *cmd
> __rte_unused,
>  	ms_idx = RTE_PTR_DIFF(mz->addr, msl->base_va) / page_sz;
>  	ms = rte_fbarray_get(&msl->memseg_arr, ms_idx);
> 
> -	rte_tel_data_add_dict_int(d, "Hugepage_size", page_sz);
> +	rte_tel_data_add_dict_u64(d, "Hugepage_size", page_sz);
>  	snprintf(addr, ADDR_STR, "%p", ms->addr);
>  	rte_tel_data_add_dict_string(d, "Hugepage_base", addr);
> 
> --
> 2.33.0
>
  
lihuisong (C) Dec. 15, 2022, 1:11 a.m. UTC | #2
在 2022/12/14 21:00, Morten Brørup 写道:
>> From: Huisong Li [mailto:lihuisong@huawei.com]
>> Sent: Wednesday, 14 December 2022 13.33
>>
>> The 'u32' and 'u64' data can not assigned to 'int' type variable.
>> They need to use the 'u64' APIs to add.
>>
>> Fixes: e6732d0d6e26 ("mem: add telemetry infos")
>> Cc: stable@dpdk.org
>>
>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>> Acked-by: Morten Brørup <mb@smartsharesystems.com>
>> Acked-by: Chengwen Feng <fengchengwen@huawei.com>
>> ---
>>   lib/eal/common/eal_common_memory.c | 10 +++++-----
>>   1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/lib/eal/common/eal_common_memory.c
>> b/lib/eal/common/eal_common_memory.c
>> index 688dc615d7..8e427bf4b4 100644
>> --- a/lib/eal/common/eal_common_memory.c
>> +++ b/lib/eal/common/eal_common_memory.c
>> @@ -1139,7 +1139,7 @@ handle_eal_heap_info_request(const char *cmd
>> __rte_unused, const char *params,
>>   	malloc_heap_get_stats(heap, &sock_stats);
>>
>>   	rte_tel_data_start_dict(d);
>> -	rte_tel_data_add_dict_int(d, "Head id", heap_id);
>> +	rte_tel_data_add_dict_u64(d, "Head id", heap_id);
> Consider: "Head id" -> "Heap_id"
Need to do this in this patch? Maybe it's better to do this in a new 
patch. What do you think?
>
>
>>   	rte_tel_data_add_dict_string(d, "Name", heap->name);
>>   	rte_tel_data_add_dict_u64(d, "Heap_size",
>>   				  sock_stats.heap_totalsz_bytes);
>> @@ -1201,13 +1201,13 @@ handle_eal_memzone_info_request(const char *cmd
>> __rte_unused,
>>   	mz = rte_fbarray_get(&mcfg->memzones, mz_idx);
>>
>>   	rte_tel_data_start_dict(d);
>> -	rte_tel_data_add_dict_int(d, "Zone", mz_idx);
>> +	rte_tel_data_add_dict_u64(d, "Zone", mz_idx);
>>   	rte_tel_data_add_dict_string(d, "Name", mz->name);
>> -	rte_tel_data_add_dict_int(d, "Length", mz->len);
>> +	rte_tel_data_add_dict_u64(d, "Length", mz->len);
>>   	snprintf(addr, ADDR_STR, "%p", mz->addr);
>>   	rte_tel_data_add_dict_string(d, "Address", addr);
>>   	rte_tel_data_add_dict_int(d, "Socket", mz->socket_id);
>> -	rte_tel_data_add_dict_int(d, "Flags", mz->flags);
>> +	rte_tel_data_add_dict_u64(d, "Flags", mz->flags);
>>
>>   	/* go through each page occupied by this memzone */
>>   	msl = rte_mem_virt2memseg_list(mz->addr);
>> @@ -1222,7 +1222,7 @@ handle_eal_memzone_info_request(const char *cmd
>> __rte_unused,
>>   	ms_idx = RTE_PTR_DIFF(mz->addr, msl->base_va) / page_sz;
>>   	ms = rte_fbarray_get(&msl->memseg_arr, ms_idx);
>>
>> -	rte_tel_data_add_dict_int(d, "Hugepage_size", page_sz);
>> +	rte_tel_data_add_dict_u64(d, "Hugepage_size", page_sz);
>>   	snprintf(addr, ADDR_STR, "%p", ms->addr);
>>   	rte_tel_data_add_dict_string(d, "Hugepage_base", addr);
>>
>> --
>> 2.33.0
>>
  
Morten Brørup Dec. 15, 2022, 7:04 a.m. UTC | #3
> From: lihuisong (C) [mailto:lihuisong@huawei.com]
> Sent: Thursday, 15 December 2022 02.12
> 
> 在 2022/12/14 21:00, Morten Brørup 写道:
> >> From: Huisong Li [mailto:lihuisong@huawei.com]
> >> Sent: Wednesday, 14 December 2022 13.33
> >>
> >> --- a/lib/eal/common/eal_common_memory.c
> >> +++ b/lib/eal/common/eal_common_memory.c
> >> @@ -1139,7 +1139,7 @@ handle_eal_heap_info_request(const char *cmd
> >> __rte_unused, const char *params,
> >>   	malloc_heap_get_stats(heap, &sock_stats);
> >>
> >>   	rte_tel_data_start_dict(d);
> >> -	rte_tel_data_add_dict_int(d, "Head id", heap_id);
> >> +	rte_tel_data_add_dict_u64(d, "Head id", heap_id);
> > Consider: "Head id" -> "Heap_id"
> Need to do this in this patch? Maybe it's better to do this in a new
> patch. What do you think?

You are right. It belongs in a different patch, not related to this series.
  
lihuisong (C) Dec. 15, 2022, 7:56 a.m. UTC | #4
在 2022/12/15 15:04, Morten Brørup 写道:
>> From: lihuisong (C) [mailto:lihuisong@huawei.com]
>> Sent: Thursday, 15 December 2022 02.12
>>
>> 在 2022/12/14 21:00, Morten Brørup 写道:
>>>> From: Huisong Li [mailto:lihuisong@huawei.com]
>>>> Sent: Wednesday, 14 December 2022 13.33
>>>>
>>>> --- a/lib/eal/common/eal_common_memory.c
>>>> +++ b/lib/eal/common/eal_common_memory.c
>>>> @@ -1139,7 +1139,7 @@ handle_eal_heap_info_request(const char *cmd
>>>> __rte_unused, const char *params,
>>>>    	malloc_heap_get_stats(heap, &sock_stats);
>>>>
>>>>    	rte_tel_data_start_dict(d);
>>>> -	rte_tel_data_add_dict_int(d, "Head id", heap_id);
>>>> +	rte_tel_data_add_dict_u64(d, "Head id", heap_id);
>>> Consider: "Head id" -> "Heap_id"
>> Need to do this in this patch? Maybe it's better to do this in a new
>> patch. What do you think?
> You are right. It belongs in a different patch, not related to this series.
Yes, it isn't related to this series. I'll fix it after this series.
>
  

Patch

diff --git a/lib/eal/common/eal_common_memory.c b/lib/eal/common/eal_common_memory.c
index 688dc615d7..8e427bf4b4 100644
--- a/lib/eal/common/eal_common_memory.c
+++ b/lib/eal/common/eal_common_memory.c
@@ -1139,7 +1139,7 @@  handle_eal_heap_info_request(const char *cmd __rte_unused, const char *params,
 	malloc_heap_get_stats(heap, &sock_stats);
 
 	rte_tel_data_start_dict(d);
-	rte_tel_data_add_dict_int(d, "Head id", heap_id);
+	rte_tel_data_add_dict_u64(d, "Head id", heap_id);
 	rte_tel_data_add_dict_string(d, "Name", heap->name);
 	rte_tel_data_add_dict_u64(d, "Heap_size",
 				  sock_stats.heap_totalsz_bytes);
@@ -1201,13 +1201,13 @@  handle_eal_memzone_info_request(const char *cmd __rte_unused,
 	mz = rte_fbarray_get(&mcfg->memzones, mz_idx);
 
 	rte_tel_data_start_dict(d);
-	rte_tel_data_add_dict_int(d, "Zone", mz_idx);
+	rte_tel_data_add_dict_u64(d, "Zone", mz_idx);
 	rte_tel_data_add_dict_string(d, "Name", mz->name);
-	rte_tel_data_add_dict_int(d, "Length", mz->len);
+	rte_tel_data_add_dict_u64(d, "Length", mz->len);
 	snprintf(addr, ADDR_STR, "%p", mz->addr);
 	rte_tel_data_add_dict_string(d, "Address", addr);
 	rte_tel_data_add_dict_int(d, "Socket", mz->socket_id);
-	rte_tel_data_add_dict_int(d, "Flags", mz->flags);
+	rte_tel_data_add_dict_u64(d, "Flags", mz->flags);
 
 	/* go through each page occupied by this memzone */
 	msl = rte_mem_virt2memseg_list(mz->addr);
@@ -1222,7 +1222,7 @@  handle_eal_memzone_info_request(const char *cmd __rte_unused,
 	ms_idx = RTE_PTR_DIFF(mz->addr, msl->base_va) / page_sz;
 	ms = rte_fbarray_get(&msl->memseg_arr, ms_idx);
 
-	rte_tel_data_add_dict_int(d, "Hugepage_size", page_sz);
+	rte_tel_data_add_dict_u64(d, "Hugepage_size", page_sz);
 	snprintf(addr, ADDR_STR, "%p", ms->addr);
 	rte_tel_data_add_dict_string(d, "Hugepage_base", addr);