[dpdk-dev] testpmd: limit port mask bits to RTE_MAX_ETHPORTS
Commit Message
The port mask parsing in testpmd allowed up to 64 bits to be processed,
even if RTE_MAX_ETHPORTS is set to a max of 32. Fix this by only
processing up to min(RTE_MAX_ETHPORTS,64) bits of the mask.
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
app/test-pmd/config.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Comments
2014-12-16 13:27, Bruce Richardson:
> The port mask parsing in testpmd allowed up to 64 bits to be processed,
> even if RTE_MAX_ETHPORTS is set to a max of 32. Fix this by only
> processing up to min(RTE_MAX_ETHPORTS,64) bits of the mask.
[...]
> - for (i = 0; i < 64; i++) {
> + for (i = 0; i < 64 && i < RTE_MAX_ETHPORTS; i++) {
Why not use RTE_MIN?
On Tue, Dec 16, 2014 at 02:40:09PM +0100, Thomas Monjalon wrote:
> 2014-12-16 13:27, Bruce Richardson:
> > The port mask parsing in testpmd allowed up to 64 bits to be processed,
> > even if RTE_MAX_ETHPORTS is set to a max of 32. Fix this by only
> > processing up to min(RTE_MAX_ETHPORTS,64) bits of the mask.
> [...]
> > - for (i = 0; i < 64; i++) {
> > + for (i = 0; i < 64 && i < RTE_MAX_ETHPORTS; i++) {
>
> Why not use RTE_MIN?
>
> --
> Thomas
Because this works equally well, and the change is simpler and clearer IMHO.
However, if you feel very strongly about it, I can change it to use RTE_MIN
instead. :-)
/Bruce
On Tue, Dec 16, 2014 at 01:50:06PM +0000, Bruce Richardson wrote:
> On Tue, Dec 16, 2014 at 02:40:09PM +0100, Thomas Monjalon wrote:
> > 2014-12-16 13:27, Bruce Richardson:
> > > The port mask parsing in testpmd allowed up to 64 bits to be processed,
> > > even if RTE_MAX_ETHPORTS is set to a max of 32. Fix this by only
> > > processing up to min(RTE_MAX_ETHPORTS,64) bits of the mask.
> > [...]
> > > - for (i = 0; i < 64; i++) {
> > > + for (i = 0; i < 64 && i < RTE_MAX_ETHPORTS; i++) {
> >
> > Why not use RTE_MIN?
> >
> > --
> > Thomas
>
> Because this works equally well, and the change is simpler and clearer IMHO.
> However, if you feel very strongly about it, I can change it to use RTE_MIN
> instead. :-)
>
> /Bruce
>
Please do, checking the same variable for being less than 2 different values
isn't common practice. Its common, and far more readable to use a min function
as Thomas indicates. It also saves you doing an extra comparison every loop
iteration.
Neil
@@ -1440,7 +1440,7 @@ set_fwd_ports_mask(uint64_t portmask)
return;
}
nb_pt = 0;
- for (i = 0; i < 64; i++) {
+ for (i = 0; i < 64 && i < RTE_MAX_ETHPORTS; i++) {
if (! ((uint64_t)(1ULL << i) & portmask))
continue;
portlist[nb_pt++] = i;