app/proc-info:fix port mask parse bug

Message ID 1538031669-9305-1-git-send-email-han.li1@zte.com.cn (mailing list archive)
State Changes Requested, archived
Delegated to: Thomas Monjalon
Headers
Series app/proc-info:fix port mask parse bug |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Li Han Sept. 27, 2018, 7:01 a.m. UTC
  parse_portmask return type is int,but global variable
"enabled_port_mask" type is uint32_t.so in proc_info_parse_args
function,when parse_portmask return -1,"enabled_port_mask" will
get a huge value and "if (enabled_port_mask == 0)" will never happen.

Signed-off-by: Li Han <han.li1@zte.com.cn>
---
 app/proc-info/main.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)
  

Comments

Thomas Monjalon Nov. 5, 2018, 11:41 a.m. UTC | #1
+Cc Reshma

Please could you review this patch?


27/09/2018 09:01, Li Han:
> parse_portmask return type is int,but global variable
> "enabled_port_mask" type is uint32_t.so in proc_info_parse_args
> function,when parse_portmask return -1,"enabled_port_mask" will
> get a huge value and "if (enabled_port_mask == 0)" will never happen.
> 
> Signed-off-by: Li Han <han.li1@zte.com.cn>
> ---
>  app/proc-info/main.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
> 
> diff --git a/app/proc-info/main.c b/app/proc-info/main.c
> index c20effa..5b06735 100644
> --- a/app/proc-info/main.c
> +++ b/app/proc-info/main.c
> @@ -90,7 +90,7 @@
>  /*
>   * Parse the portmask provided at run time.
>   */
> -static int
> +static uint32_t
>  parse_portmask(const char *portmask)
>  {
>  	char *end = NULL;
> @@ -103,13 +103,10 @@
>  	if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0') ||
>  		(errno != 0)) {
>  		printf("%s ERROR parsing the port mask\n", __func__);
> -		return -1;
> +		return 0;
>  	}
>  
> -	if (pm == 0)
> -		return -1;
> -
> -	return pm;
> +	return (uint32_t)pm;
>  
>  }
  
Pattan, Reshma Nov. 5, 2018, 3:27 p.m. UTC | #2
Hi,

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Li Han

To avoid typecast below , please use uint64_t for enabled_port_mask. 
So change below function return type to uint64_t

> -static int
> +static uint32_t
>  parse_portmask(const char *portmask)
>  {

Declare pm to be of type uint64_t.

> +	return (uint32_t)pm;
You can remove above typecast after change to uint64_t.

Thanks,
Reshma
  

Patch

diff --git a/app/proc-info/main.c b/app/proc-info/main.c
index c20effa..5b06735 100644
--- a/app/proc-info/main.c
+++ b/app/proc-info/main.c
@@ -90,7 +90,7 @@ 
 /*
  * Parse the portmask provided at run time.
  */
-static int
+static uint32_t
 parse_portmask(const char *portmask)
 {
 	char *end = NULL;
@@ -103,13 +103,10 @@ 
 	if ((portmask[0] == '\0') || (end == NULL) || (*end != '\0') ||
 		(errno != 0)) {
 		printf("%s ERROR parsing the port mask\n", __func__);
-		return -1;
+		return 0;
 	}
 
-	if (pm == 0)
-		return -1;
-
-	return pm;
+	return (uint32_t)pm;
 
 }