* [PATCH AUTOSEL 6.19-5.10] include: uapi: netfilter_bridge.h: Cover for musl libc
@ 2026-02-23 12:35 Sasha Levin
0 siblings, 0 replies; only message in thread
From: Sasha Levin @ 2026-02-23 12:35 UTC (permalink / raw)
To: patches, stable
Cc: Phil Sutter, Alyssa Ross, Florian Westphal, Sasha Levin, pablo,
netfilter-devel, coreteam, linux-kernel
From: Phil Sutter <phil@nwl.cc>
[ Upstream commit 4edd4ba71ce0df015303dba75ea9d20d1a217546 ]
Musl defines its own struct ethhdr and thus defines __UAPI_DEF_ETHHDR to
zero. To avoid struct redefinition errors, user space is therefore
supposed to include netinet/if_ether.h before (or instead of)
linux/if_ether.h. To relieve them from this burden, include the libc
header here if not building for kernel space.
Reported-by: Alyssa Ross <hi@alyssa.is>
Suggested-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
I have enough information to make a thorough analysis.
## Analysis
### 1. Commit Message Analysis
The commit fixes a **userspace build failure** when compiling programs
against musl libc that include `<linux/netfilter_bridge.h>`. Musl
defines its own `struct ethhdr` and sets `__UAPI_DEF_ETHHDR` to zero to
tell kernel UAPI headers not to redefine it. However, this mechanism
only works if musl's `<netinet/if_ether.h>` is included *before* the
kernel's `<linux/if_ether.h>`. Without this fix, including
`<linux/netfilter_bridge.h>` (which transitively includes
`<linux/if_ether.h>`) results in struct redefinition errors.
The commit has a `Reported-by:` tag from Alyssa Ross, indicating a real
user hit this issue.
### 2. Code Change Analysis
The change is minimal - 3 lines added:
```c
#ifndef __KERNEL__
#include <netinet/if_ether.h> /* for __UAPI_DEF_ETHHDR if defined */
#endif
```
This is inserted before the existing `#include <linux/if_ether.h>`, so
that musl's `<netinet/if_ether.h>` sets `__UAPI_DEF_ETHHDR=0` before the
kernel header checks it. The `#ifndef __KERNEL__` guard ensures this
only affects userspace compilation - the kernel build is completely
unaffected.
### 3. Classification
This is a **build fix** for UAPI headers. The stable kernel rules
explicitly allow build fixes ("Fixes for compilation errors or
warnings... These are critical for users who need to build the kernel").
### 4. Scope and Risk Assessment
- **Lines changed**: 3 lines added (plus context from moved lines in the
diff)
- **Files touched**: 1 UAPI header file
- **Risk**: Essentially zero. The added code is guarded by `#ifndef
__KERNEL__`, so it cannot affect kernel compilation or runtime in any
way. It only affects userspace programs including this header.
- **Kernel runtime impact**: None whatsoever
### 5. Precedent
This follows an established pattern used in multiple other UAPI headers:
- `include/uapi/linux/mptcp.h` - includes `<netinet/in.h>` and
`<sys/socket.h>` for the same reason (commit `06e445f740c1a`, which
had a `Fixes:` tag)
- `include/uapi/linux/if.h` - includes `<sys/socket.h>`
- `include/uapi/linux/vm_sockets.h` - includes `<sys/socket.h>`
The original `__UAPI_DEF_ETHHDR` mechanism was added in commit
`6926e041a8920` specifically for musl compatibility.
### 6. User Impact
Users compiling netfilter/ebtables userspace tools (like iptables,
nftables, ebtables) against musl libc are affected. This is particularly
relevant for:
- Alpine Linux and other musl-based distributions
- Embedded systems using musl
- Container environments using musl-based images (e.g., Alpine Docker
images)
Without this fix, these users must manually ensure
`<netinet/if_ether.h>` is included before any kernel netfilter headers,
which is fragile and error-prone.
### 7. Dependencies
None. The patch is completely self-contained. The `__UAPI_DEF_ETHHDR`
mechanism in `include/uapi/linux/if_ether.h` has been present since 2018
(commit `6926e041a8920`), so it exists in all active stable trees.
### Verification
- Verified the current file contents via `Read` of
`include/uapi/linux/netfilter_bridge.h` - confirmed it includes
`<linux/if_ether.h>` which defines `struct ethhdr`
- Verified `include/uapi/linux/if_ether.h` lines 171-182 show the
`__UAPI_DEF_ETHHDR` guard mechanism exists and works by checking the
macro before defining `struct ethhdr`
- Verified via `git log` that the `__UAPI_DEF_ETHHDR` mechanism was
introduced in commit `6926e041a8920` (2018) - present in all stable
trees
- Verified the established pattern via Explore agent: similar musl-
compat fixes exist in `mptcp.h`, `if.h`, `vm_sockets.h`, `ethtool.h`
- Verified the mptcp precedent (`06e445f740c1a`) was a similar fix with
a `Fixes:` tag, confirming this class of fix is considered bug-worthy
- Verified via lore.kernel.org that the patch went through proper review
via the netfilter-devel list and was included in Florian Westphal's
netfilter patch series
- Could NOT verify if the mptcp fix was specifically backported to
stable trees (unverified), but it had a Fixes: tag which would trigger
auto-selection
### Conclusion
This is a textbook build fix for a UAPI header. It:
1. Fixes a real compilation error reported by a real user
2. Is obviously correct - follows an established pattern used in other
headers
3. Is tiny (3 lines) with zero risk to kernel runtime
4. Has no dependencies on other commits
5. Falls squarely within the "build fixes" exception for stable
**YES**
include/uapi/linux/netfilter_bridge.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/uapi/linux/netfilter_bridge.h b/include/uapi/linux/netfilter_bridge.h
index 1610fdbab98df..ad520d3e9df8f 100644
--- a/include/uapi/linux/netfilter_bridge.h
+++ b/include/uapi/linux/netfilter_bridge.h
@@ -5,6 +5,10 @@
/* bridge-specific defines for netfilter.
*/
+#ifndef __KERNEL__
+#include <netinet/if_ether.h> /* for __UAPI_DEF_ETHHDR if defined */
+#endif
+
#include <linux/in.h>
#include <linux/netfilter.h>
#include <linux/if_ether.h>
--
2.51.0
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-02-23 12:35 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-23 12:35 [PATCH AUTOSEL 6.19-5.10] include: uapi: netfilter_bridge.h: Cover for musl libc Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox