Re: [PATCH nf] netfilter: nf_tables: fix 'exist' matching on bigendian arches

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Dec 04, 2023 at 02:57:31PM +0100, Phil Sutter wrote:
> On Mon, Dec 04, 2023 at 12:29:54PM +0100, Florian Westphal wrote:
> > Maze reports "tcp option fastopen exists" fails to match on
> > OpenWrt 22.03.5, r20134-5f15225c1e (5.10.176) router.
> > 
> > "tcp option fastopen exists" translates to:
> > inet
> >   [ exthdr load tcpopt 1b @ 34 + 0 present => reg 1 ]
> >   [ cmp eq reg 1 0x00000001 ]
> > 
> > .. but existing nft userspace generates a 1-byte compare.
> > 
> > On LSB (x86), "*reg32 = 1" is identical to nft_reg_store8(reg32, 1), but
> > not on MSB, which will place the 1 last. IOW, on bigendian aches the cmp8
> > is awalys false.
> > 
> > Make sure we store this in a consistent fashion, so existing userspace
> > will also work on MSB (bigendian).
> > 
> > Regardless of this patch we can also change nft userspace to generate
> > 'reg32 == 0' and 'reg32 != 0' instead of u8 == 0 // u8 == 1 when
> > adding 'option x missing/exists' expressions as well.
> > 
> > Fixes: 3c1fece8819e ("netfilter: nft_exthdr: Allow checking TCP option presence, too")
> > Fixes: b9f9a485fb0e ("netfilter: nft_exthdr: add boolean DCCP option matching")
> > Fixes: 055c4b34b94f ("netfilter: nft_fib: Support existence check")
> > Reported-by: Maciej Żenczykowski <zenczykowski@xxxxxxxxx>
> > Closes: https://lore.kernel.org/netfilter-devel/CAHo-OozyEqHUjL2-ntATzeZOiuftLWZ_HU6TOM_js4qLfDEAJg@xxxxxxxxxxxxxx/
> > Signed-off-by: Florian Westphal <fw@xxxxxxxxx>
> 
> I reckon we want this irrespective of any user space changes as it fixes
> for existing/old user space on Big Endian. Therefore:
> 
> Acked-by: Phil Sutter <phil@xxxxxx>

Agreed.




[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux