From: Stephen Hemminger <stephen@networkplumber.org>
To: Matan Azrad <matan@mellanox.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
Stephen Hemminger <sthemmin@microsoft.com>
Subject: Re: [dpdk-dev] [PATCH v5 1/4] examples/multi_process/client_server_mp: check port validity
Date: Mon, 5 Aug 2019 09:00:54 -0700 [thread overview]
Message-ID: <20190805090054.1511b033@hermes.lan> (raw)
In-Reply-To: <AM0PR0502MB4019C927C26E558B961D8C02D2DB0@AM0PR0502MB4019.eurprd05.prod.outlook.com>
On Sun, 4 Aug 2019 08:31:54 +0000
Matan Azrad <matan@mellanox.com> wrote:
> > > > /* convert parameter to a number and verify */
> > > > pm = strtoul(portmask, &end, 16);
> > > > - if (end == NULL || *end != '\0' || pm == 0)
> > > > + if (end == NULL || *end != '\0' || pm > UINT16_MAX || pm == 0)
> > >
> > > Why pm > UINT16_MAX ? should be something like > (1 <<
> > RTE_MAX_ETHPORTS) - 1.
> > > And need to be sure pm type can hold RTE_MAX_ETHPORTS bits,
> > otherwise port 0 may unlikely be all the time visible in the loop below.
> > >
> >
> > The DPDK assumes a lot of places that unsigned long will hold a port mask.
>
> So, all are bugs, no?
I don't think 32 bit build is that well tested. But yes a mask
needs to hold 64 ports.
> > If some extra bits are set, the error is visible later when the bits are leftover
> > after finding ports.
>
> Yes, but if there is a valid port which its port id is bigger than the portmask bits number - port 0 will be all the time visible in the check -> bug.
>
> > The original code had worse problems, it would not catch invalid pm values at
> > all and truncate silently.
>
> Yes, maybe, but I really don't understand why you chose to limit for 16 ports, where this number come from?
> So, my approach here, 2 options:
The problem here was my mistake for not having wide enough portmask.
next prev parent reply other threads:[~2019-08-05 16:00 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-09 15:09 [dpdk-dev] [PATCH v3 0/2] examples/client_server_mp: fix port issues Stephen Hemminger
2019-07-09 15:09 ` [dpdk-dev] [PATCH v3 1/2] examples/multi_process/client_server_mp: check port validity Stephen Hemminger
2019-07-09 15:09 ` [dpdk-dev] [PATCH v3 2/2] examples/multi_process - fix crash in mp_client with sparse ports Stephen Hemminger
2019-07-26 16:50 ` [dpdk-dev] [PATCH v4 0/4] examples/client_server_mp: fix port issues Stephen Hemminger
2019-07-26 16:50 ` [dpdk-dev] [PATCH v4 1/4] examples/multi_process/client_server_mp: check port validity Stephen Hemminger
2019-07-30 9:21 ` Matan Azrad
2019-07-30 15:56 ` Stephen Hemminger
2019-07-30 16:39 ` Matan Azrad
2019-07-30 16:50 ` Stephen Hemminger
2019-07-26 16:50 ` [dpdk-dev] [PATCH v4 2/4] examples/multi_process/client_server_mp - fix crash in mp_client with sparse ports Stephen Hemminger
2019-07-26 16:50 ` [dpdk-dev] [PATCH v4 3/4] examples/multi_process/client_server_mp/mp_server: fix style Stephen Hemminger
2019-07-26 16:50 ` [dpdk-dev] [PATCH v4 4/4] examples/multi_process/client_server_mp/mp_server: use ether format address Stephen Hemminger
2019-08-02 2:58 ` [dpdk-dev] [PATCH v5 0/4] examples/client_server_mp: port id fixes Stephen Hemminger
2019-08-02 2:58 ` [dpdk-dev] [PATCH v5 1/4] examples/multi_process/client_server_mp: check port validity Stephen Hemminger
2019-08-02 5:33 ` Matan Azrad
2019-08-02 15:53 ` Stephen Hemminger
2019-08-04 8:31 ` Matan Azrad
2019-08-05 16:00 ` Stephen Hemminger [this message]
2019-08-06 8:19 ` Matan Azrad
2019-08-06 15:39 ` Stephen Hemminger
2019-08-06 20:03 ` Matan Azrad
2019-08-06 23:09 ` Stephen Hemminger
2019-08-07 5:38 ` Matan Azrad
2019-08-07 5:53 ` Stephen Hemminger
2019-08-07 7:02 ` Matan Azrad
2019-08-07 15:15 ` Stephen Hemminger
2019-08-02 2:58 ` [dpdk-dev] [PATCH v5 2/4] examples/multi_process/client_server_mp - fix crash in mp_client with sparse ports Stephen Hemminger
2019-08-02 2:58 ` [dpdk-dev] [PATCH v5 3/4] examples/multi_process/client_server_mp/mp_server: fix style Stephen Hemminger
2019-08-02 11:09 ` David Marchand
2019-08-02 2:58 ` [dpdk-dev] [PATCH v5 4/4] examples/multi_process/client_server_mp/mp_server: use ether format address Stephen Hemminger
2019-08-02 23:52 ` [dpdk-dev] [PATCH v6 0/2] examples/client_server_mp: port id (fixes only) Stephen Hemminger
2019-08-02 23:52 ` [dpdk-dev] [PATCH v6 1/2] examples/multi_process/client_server_mp: check port validity Stephen Hemminger
2019-08-02 23:52 ` [dpdk-dev] [PATCH v6 2/2] examples/multi_process/client_server_mp - fix crash in mp_client with sparse ports Stephen Hemminger
2019-08-05 16:38 ` [dpdk-dev] [PATCH v7 0/2] examples/client_server_mp: port id (fixes only) Stephen Hemminger
2019-08-05 16:38 ` [dpdk-dev] [PATCH v7 1/2] examples/multi_process/client_server_mp: check port validity Stephen Hemminger
2019-08-06 12:07 ` Matan Azrad
2019-11-13 18:53 ` Stephen Hemminger
2019-08-05 16:38 ` [dpdk-dev] [PATCH v7 2/2] examples/multi_process/client_server_mp - fix crash in mp_client with sparse ports Stephen Hemminger
2019-08-07 5:40 ` [dpdk-dev] [PATCH v7 0/2] examples/client_server_mp: port id (fixes only) Matan Azrad
2019-11-25 22:51 ` Thomas Monjalon
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=20190805090054.1511b033@hermes.lan \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=matan@mellanox.com \
--cc=sthemmin@microsoft.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.