diff options
| author | Fernando Fernandez Mancera <fmancera@suse.de> | 2026-10-04 03:41:43 +0200 |
|---|---|---|
| committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2026-10-18 02:34:59 +0200 |
| commit | 540aab0e415d12b29f8a94fe5bb31c6dced24fd6 (patch) | |
| tree | 4467d406a85f34a6107302977d89788d7481a30c | |
| parent | a3217c51a3171cf53bed17f962798368f2786bdc (diff) | |
netfilter: nft_exthdr: remove redundant op parsing in tcp_set_init
The nft_exthdr_tcp_set_init() function is exclusively used for TCP
options. Therefore, parsing the NFTA_EXTHDR_OP attribute from user
space is redundant, as the operation type must always be
NFT_EXTHDR_OP_TCPOPT.
Remove the unnecessary netlink attribute parsing and hardcode priv->op
to NFT_EXTHDR_OP_TCPOPT, which simplifies the code and reduces the
object size.
./scripts/bloat-o-meter exthdr_before.o exthdr_after.o
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-54 (-54)
Function old new delta
nft_exthdr_tcp_set_init 412 358 -54
Total: Before=6581, After=6527, chg -0.82%
Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
| -rw-r--r-- | net/netfilter/nft_exthdr.c | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/net/netfilter/nft_exthdr.c b/net/netfilter/nft_exthdr.c index 8abf8e8145ce..3492426dccf7 100644 --- a/net/netfilter/nft_exthdr.c +++ b/net/netfilter/nft_exthdr.c @@ -551,7 +551,7 @@ static int nft_exthdr_tcp_set_init(const struct nft_ctx *ctx, const struct nlattr * const tb[]) { struct nft_exthdr *priv = nft_expr_priv(expr); - u32 offset, len, flags = 0, op = NFT_EXTHDR_OP_IPV6; + u32 offset, len, flags = 0; int err; if (!tb[NFTA_EXTHDR_SREG] || @@ -581,15 +581,11 @@ static int nft_exthdr_tcp_set_init(const struct nft_ctx *ctx, return -EOPNOTSUPP; } - err = nft_parse_u32_check(tb[NFTA_EXTHDR_OP], U8_MAX, &op); - if (err < 0) - return err; - priv->type = nla_get_u8(tb[NFTA_EXTHDR_TYPE]); priv->offset = offset; priv->len = len; priv->flags = flags; - priv->op = op; + priv->op = NFT_EXTHDR_OP_TCPOPT; return nft_parse_register_load(ctx, tb[NFTA_EXTHDR_SREG], &priv->sreg, priv->len); |
