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 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>

Thanks, Phil




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

  Powered by Linux