Messages in this thread | | | Subject | Re: [PATCH] net: dsa: fix negative loop bound error on for loop | From | Mukesh Ojha <> | Date | Sun, 31 Mar 2019 15:25:47 +0530 |
| |
On 3/31/2019 3:12 AM, Colin King wrote: > From: Colin Ian King <colin.king@canonical.com> > > Currently the for-loop using an unsigned int for the loop counter > which is problematic when comparing it to the signed int count > This is an issue because if the signed int is negative then > the negative loop bound is implicitly cast to an unsigned int on > the comparison to loop counter i and will yield a very large value, > eventually causing an error when memmove/memcpy'ing outside the > allocated region pointed to by ndata. > > Fix this by simply making the loop counter i a signed int; > > Fixes: f2f2356685bc ("net: dsa: move master ethtool code") > Signed-off-by: Colin Ian King <colin.king@canonical.com> > --- > net/dsa/master.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/net/dsa/master.c b/net/dsa/master.c > index c58f33931be1..1b659647a303 100644 > --- a/net/dsa/master.c > +++ b/net/dsa/master.c > @@ -87,8 +87,7 @@ static void dsa_master_get_strings(struct net_device *dev, uint32_t stringset, > struct dsa_switch *ds = cpu_dp->ds; > int port = cpu_dp->index; > int len = ETH_GSTRING_LEN; > - int mcount = 0, count; > - unsigned int i; > + int mcount = 0, count, i;
This looks fine but why the return value checking for the negative will not be good here ? count = ds->ops->get_sset_count(ds, port, stringset);
Cheers, Mukesh
> uint8_t pfx[4]; > uint8_t *ndata; >
| |