Thread (20 messages) 20 messages, 6 authors, 7d ago

Re: [PATCH] netfilter: TCPMSS: fix dropped packets when MSS option is unaligned

From: David Laight <hidden>
Date: 2026-05-26 09:31:06
Also in: lkml, netfilter-devel, stable

On Tue, 26 May 2026 00:08:15 +0200
Fernando Fernandez Mancera [off-list ref] wrote:
On 5/25/26 11:28 PM, Florian Westphal wrote:
quoted
Kacper Kokot [off-list ref] wrote:  
quoted
Padding TCP options with NOPs is optional, so it is legal to send an
MSS option that is not aligned to a word boundary and therefore not
aligned for checksum calculation. The current TCPMSS target is not
robust to this: when the MSS option is unaligned it produces an
invalid checksum, and the packet is dropped.  
Is this an actual, real world bug?  This code is 20+ years old, all that
this hints at is that they are always aligned in reality?
  
AFAICS, these issues are not present in real environments as MSS option 
is placed at the beginning of the options block making it aligned by 
default usually.

I would say this is more for correctness. I wonder, if we are touching 
this code, we could use the opportunity to make it use 
get_unaligned_be16() instead.
gcc and clang convert x[0] << 8 | x[1] (etc) to the appropriate single
instruction (and maybe byteswap) on cpu that support misaligned accesses.
So there is little to gain from doing it any other way.

-- David
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help