lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <529b10f7-6f74-9fdb-db45-0ba589ba0cb3@intel.com> Date: Wed, 12 Apr 2023 14:23:06 -0700 From: Jacob Keller <jacob.e.keller@...el.com> To: Vladimir Oltean <vladimir.oltean@....com>, <netdev@...r.kernel.org> CC: Andrew Lunn <andrew@...n.ch>, Florian Fainelli <f.fainelli@...il.com>, "David S. Miller" <davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>, "Claudiu Manoil" <claudiu.manoil@....com>, Alexandre Belloni <alexandre.belloni@...tlin.com>, <UNGLinuxDriver@...rochip.com>, Colin Foster <colin.foster@...advantage.com>, <linux-kernel@...r.kernel.org> Subject: Re: [PATCH net-next 8/8] net: mscc: ocelot: fix ineffective WARN_ON() in ocelot_stats.c On 4/12/2023 5:47 AM, Vladimir Oltean wrote: > Since it is hopefully now clear that, since "last" and "layout[i].reg" > are enum types and not addresses, the existing WARN_ON() is ineffective > in checking that the _addresses_ are sorted in the proper order. > > Signed-off-by: Vladimir Oltean <vladimir.oltean@....com> > --- This is definitely more clear after reviewing the other code dealing with these encoded register addresses. Nice fix. Reviewed-by: Jacob Keller <jacob.e.keller@...el.com> Thanks, Jake > drivers/net/ethernet/mscc/ocelot_stats.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/ethernet/mscc/ocelot_stats.c b/drivers/net/ethernet/mscc/ocelot_stats.c > index e82c9d9d0ad3..5c55197c7327 100644 > --- a/drivers/net/ethernet/mscc/ocelot_stats.c > +++ b/drivers/net/ethernet/mscc/ocelot_stats.c > @@ -901,6 +901,17 @@ static int ocelot_prepare_stats_regions(struct ocelot *ocelot) > if (!layout[i].reg) > continue; > > + /* enum ocelot_stat must be kept sorted in the same order > + * as the addresses behind layout[i].reg in order to have > + * efficient bulking > + */ > + if (last) { > + WARN(ocelot->map[SYS][last & REG_MASK] >= ocelot->map[SYS][layout[i].reg & REG_MASK], > + "reg 0x%x had address 0x%x but reg 0x%x has address 0x%x, bulking broken!", > + last, ocelot->map[SYS][last & REG_MASK], > + layout[i].reg, ocelot->map[SYS][layout[i].reg & REG_MASK]); > + } > + > if (region && ocelot->map[SYS][layout[i].reg & REG_MASK] == > ocelot->map[SYS][last & REG_MASK] + 4) { > region->count++; > @@ -910,12 +921,6 @@ static int ocelot_prepare_stats_regions(struct ocelot *ocelot) > if (!region) > return -ENOMEM; > > - /* enum ocelot_stat must be kept sorted in the same > - * order as layout[i].reg in order to have efficient > - * bulking > - */ > - WARN_ON(last >= layout[i].reg); > - > region->base = layout[i].reg; > region->first_stat = i; > region->count = 1;
Powered by blists - more mailing lists