From: "Burakov, Anatoly" <anatoly.burakov@intel.com>
To: Li Han <han.li1@zte.com.cn>, reshma.pattan@intel.com
Cc: dev@dpdk.org
Subject: Re: [dpdk-dev] [PATCH v3] app/proc-info: fix port mask parse issue
Date: Fri, 16 Nov 2018 10:15:00 +0000 [thread overview]
Message-ID: <3202c296-0bbf-1832-4552-bff912c93e06@intel.com> (raw)
In-Reply-To: <1541571009-12396-1-git-send-email-han.li1@zte.com.cn>
On 07-Nov-18 6:10 AM, Li Han wrote:
> 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.
>
> Fixes: 22561383ea17 ("app: replace dump_cfg by proc_info")
> Signed-off-by: Li Han <han.li1@zte.com.cn>
>
> ---
> v3:
> *fix commit meassges issue
> v2:
> *fix typecast issue
> ---
> 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..650d599 100644
> --- a/app/proc-info/main.c
> +++ b/app/proc-info/main.c
> @@ -37,7 +37,7 @@
> #define MAX_STRING_LEN 256
>
> /**< mask of enabled ports */
> -static uint32_t enabled_port_mask;
> +static uint64_t enabled_port_mask;
> /**< Enable stats. */
> static uint32_t enable_stats;
> /**< Enable xstats. */
> @@ -90,7 +90,7 @@
> /*
> * Parse the portmask provided at run time.
> */
> -static int
> +static unsigned long
> parse_portmask(const char *portmask)
> {
> char *end = NULL;
> @@ -103,12 +103,9 @@
> 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;
>
> }
>
Hi,
This fix appears wrong. If you're making the value uint64_t, you cannot
encode errors in the value. So, it's better to leave the return type as
int, return 0 or -1 on success/error, and store the parsed result in a
pointer passed to the function instead. Something like this:
static int
parse_portmask(const char *portmask, uint64_t *mask)
{
...
if (pm == 0)
return -1;
*mask = pm;
return 0;
}
--
Thanks,
Anatoly
next prev parent reply other threads:[~2018-11-16 10:15 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-07 6:10 Li Han
2018-11-07 9:47 ` Pattan, Reshma
2018-11-14 3:10 ` Thomas Monjalon
2018-11-14 3:57 ` [dpdk-dev] 答复: " han.li1
2018-11-14 10:39 ` [dpdk-dev] " Burakov, Anatoly
2018-11-16 10:15 ` Burakov, Anatoly [this message]
2018-11-16 10:35 ` Burakov, Anatoly
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3202c296-0bbf-1832-4552-bff912c93e06@intel.com \
--to=anatoly.burakov@intel.com \
--cc=dev@dpdk.org \
--cc=han.li1@zte.com.cn \
--cc=reshma.pattan@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).