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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 11 Aug 2021 15:02:38 +0300 From: Leon Romanovsky <leon@...nel.org> To: Alex Elder <elder@...aro.org> Cc: davem@...emloft.net, kuba@...nel.org, bjorn.andersson@...aro.org, evgreen@...omium.org, cpratapa@...eaurora.org, subashab@...eaurora.org, lkp@...el.com, elder@...nel.org, netdev@...r.kernel.org, linux-kernel@...r.kernel.org Subject: Re: [PATCH net-next] net: ipa: always inline ipa_aggr_granularity_val() On Tue, Aug 10, 2021 at 11:02:13AM -0500, Alex Elder wrote: > It isn't required, but all callers of ipa_aggr_granularity_val() > pass a constant value (IPA_AGGR_GRANULARITY) as the usec argument. > Two of those callers are in ipa_validate_build(), with the result > being passed to BUILD_BUG_ON(). > > Evidently the "sparc64-linux-gcc" compiler (at least) doesn't always > inline ipa_aggr_granularity_val(), so the result of the function is > not constant at compile time, and that leads to build errors. > > Define the function with the __always_inline attribute to avoid the > errors. And given that the function is inline, we can switch the > WARN_ON() there to be BUILD_BUG_ON(). > > Fixes: 5bc5588466a1f ("net: ipa: use WARN_ON() rather than assertions") > Reported-by: kernel test robot <lkp@...el.com> > Signed-off-by: Alex Elder <elder@...aro.org> > --- > > David/Jakub, this fixes a bug in a commit in net-next/master. -Alex > > drivers/net/ipa/ipa_main.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/ipa/ipa_main.c b/drivers/net/ipa/ipa_main.c > index 25bbb456e0078..f90b3521e266b 100644 > --- a/drivers/net/ipa/ipa_main.c > +++ b/drivers/net/ipa/ipa_main.c > @@ -255,9 +255,9 @@ ipa_hardware_config_qsb(struct ipa *ipa, const struct ipa_data *data) > * less than the number of timer ticks in the requested period. 0 is not > * a valid granularity value. > */ > -static u32 ipa_aggr_granularity_val(u32 usec) > +static __always_inline u32 ipa_aggr_granularity_val(u32 usec) > { > - WARN_ON(!usec); > + BUILD_BUG_ON(!usec); So what exactly are you checking here if all callers pass same value? It is in-kernel API, declared as static inside one module. There is no need to protect from itself. Thanks > > return DIV_ROUND_CLOSEST(usec * TIMER_FREQUENCY, USEC_PER_SEC) - 1; > } > -- > 2.27.0 >
Powered by blists - more mailing lists