Message ID | 20240819075408.92378-1-kniv@yandex-team.ru (mailing list archive) |
---|---|
State | Accepted |
Commit | 80a1e7b83bb1834b5568a3872e64c05795d88f31 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v2] cxgb4: add forgotten u64 ivlan cast before shift | expand |
On 8/19/2024 12:54 AM, Nikolay Kuratov wrote: > It is done everywhere in cxgb4 code, e.g. in is_filter_exact_match() > There is no reason it should not be done here > > Found by Linux Verification Center (linuxtesting.org) with SVACE > Without casting to u64, the value would be smaller and the shift might not behave as expected? Slightly annoying that the extra cause causes us to break 80 columns. I checked and the FT_VLAN_VLD_F doesn't appear to already be a ULL value either. Reviewed-by: Jacob Keller <jacob.e.keller@intel.com> > Signed-off-by: Nikolay Kuratov <kniv@yandex-team.ru> > Cc: stable@vger.kernel.org > Fixes: 12b276fbf6e0 ("cxgb4: add support to create hash filters") > Reviewed-by: Simon Horman <horms@kernel.org> > --- > v2: Wrap line to 80 characters > > drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c > index 786ceae34488..dd9e68465e69 100644 > --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c > +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c > @@ -1244,7 +1244,8 @@ static u64 hash_filter_ntuple(struct ch_filter_specification *fs, > * in the Compressed Filter Tuple. > */ > if (tp->vlan_shift >= 0 && fs->mask.ivlan) > - ntuple |= (FT_VLAN_VLD_F | fs->val.ivlan) << tp->vlan_shift; > + ntuple |= (u64)(FT_VLAN_VLD_F | > + fs->val.ivlan) << tp->vlan_shift; > > if (tp->port_shift >= 0 && fs->mask.iport) > ntuple |= (u64)fs->val.iport << tp->port_shift;
On Mon, 19 Aug 2024 10:54:08 +0300 Nikolay Kuratov wrote: > It is done everywhere in cxgb4 code, e.g. in is_filter_exact_match() > There is no reason it should not be done here The max value of the shift is 21. I wish you spent more than 5 min looking at this code.
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Mon, 19 Aug 2024 10:54:08 +0300 you wrote: > It is done everywhere in cxgb4 code, e.g. in is_filter_exact_match() > There is no reason it should not be done here > > Found by Linux Verification Center (linuxtesting.org) with SVACE > > Signed-off-by: Nikolay Kuratov <kniv@yandex-team.ru> > Cc: stable@vger.kernel.org > Fixes: 12b276fbf6e0 ("cxgb4: add support to create hash filters") > Reviewed-by: Simon Horman <horms@kernel.org> > > [...] Here is the summary with links: - [v2] cxgb4: add forgotten u64 ivlan cast before shift https://git.kernel.org/netdev/net/c/80a1e7b83bb1 You are awesome, thank you!
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c index 786ceae34488..dd9e68465e69 100644 --- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c @@ -1244,7 +1244,8 @@ static u64 hash_filter_ntuple(struct ch_filter_specification *fs, * in the Compressed Filter Tuple. */ if (tp->vlan_shift >= 0 && fs->mask.ivlan) - ntuple |= (FT_VLAN_VLD_F | fs->val.ivlan) << tp->vlan_shift; + ntuple |= (u64)(FT_VLAN_VLD_F | + fs->val.ivlan) << tp->vlan_shift; if (tp->port_shift >= 0 && fs->mask.iport) ntuple |= (u64)fs->val.iport << tp->port_shift;