From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Anton Danilov <littlesmilingcloud@gmail.com>, netdev@vger.kernel.org
Cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
Jason Wang <jasowangio@gmail.com>,
Andrew Lunn <andrew+netdev@lunn.ch>,
"David S . Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>,
Paolo Abeni <pabeni@redhat.com>,
Simon Horman <horms@kernel.org>,
Ido Schimmel <idosch@nvidia.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next] tun: use pskb_may_pull_reason() and remove SKB_DROP_REASON_HDR_TRUNC
Date: Thu, 01 Oct 2026 15:00:37 -0400 [thread overview]
Message-ID: <willemdebruijn.kernel.3b99b3605b4c1@gmail.com> (raw)
In-Reply-To: <20261001093925.3529772-1-littlesmilingcloud@gmail.com>
Anton Danilov wrote:
> tun_get_user() is the only user of SKB_DROP_REASON_HDR_TRUNC. It sets
> it when pskb_may_pull() fails to pull the Ethernet header of a frame
> written to a TAP device.
>
> pskb_may_pull_reason() reports why the pull failed: PKT_TOO_SMALL if
> the packet is shorter than requested, NOMEM if pulling the data into
> the linear area fails. Use it for the Ethernet header pull in
> tun_get_user() and remove the now unused SKB_DROP_REASON_HDR_TRUNC.
>
> After a successful pull drop_reason is SKB_NOT_DROPPED_YET. The path
> that later finds the queue detached has no reason of its own and relied
> on the SKB_DROP_REASON_NOT_SPECIFIED initializer. Fall back to
> SKB_DROP_REASON_NOT_SPECIFIED at the free_skb label, as vxlan_rcv()
> does, so that this path, and any later one without a reason of its own,
> keeps reporting it.
>
> The error returned to user space does not change.
>
> Suggested-by: Ido Schimmel <idosch@nvidia.com>
> Link: https://lore.kernel.org/netdev/20260923145931.GA2859441@shredder/
> Assisted-by: LLM
> Signed-off-by: Anton Danilov <littlesmilingcloud@gmail.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
>
> ---
> drivers/net/tun.c | 5 +++--
> include/net/dropreason-core.h | 7 -------
> 2 files changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/tun.c b/drivers/net/tun.c
> index 5a302709a68a..758956f93979 100644
> --- a/drivers/net/tun.c
> +++ b/drivers/net/tun.c
> @@ -1932,9 +1932,9 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,
> skb->dev = tun->dev;
> break;
> case IFF_TAP:
> - if (!pskb_may_pull(skb, ETH_HLEN)) {
> + drop_reason = pskb_may_pull_reason(skb, ETH_HLEN);
Should we update the skb_may_pull in the above IFF_TUN similarly?
> + if (drop_reason) {
> err = -ENOMEM;
> - drop_reason = SKB_DROP_REASON_HDR_TRUNC;
> goto drop;
> }
> skb->protocol = eth_type_trans(skb, tun->dev);
> @@ -2062,6 +2062,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,
> dev_core_stats_rx_dropped_inc(tun->dev);
>
> free_skb:
> + drop_reason = drop_reason ?: SKB_DROP_REASON_NOT_SPECIFIED;
> if (!IS_ERR_OR_NULL(skb))
> kfree_skb_reason(skb, drop_reason);
>
> diff --git a/include/net/dropreason-core.h b/include/net/dropreason-core.h
> index 12f909651591..47b44a29daab 100644
> --- a/include/net/dropreason-core.h
> +++ b/include/net/dropreason-core.h
> @@ -82,7 +82,6 @@
> FN(DEV_READY) \
> FN(FULL_RING) \
> FN(NOMEM) \
> - FN(HDR_TRUNC) \
> FN(TAP_FILTER) \
> FN(TAP_TXFILTER) \
> FN(ICMP_CSUM) \
> @@ -427,12 +426,6 @@ enum skb_drop_reason {
> SKB_DROP_REASON_FULL_RING,
> /** @SKB_DROP_REASON_NOMEM: error due to OOM */
> SKB_DROP_REASON_NOMEM,
> - /**
> - * @SKB_DROP_REASON_HDR_TRUNC: failed to trunc/extract the header from
> - * networking data, e.g., failed to pull the protocol header from
> - * frags via pskb_may_pull()
> - */
> - SKB_DROP_REASON_HDR_TRUNC,
> /**
> * @SKB_DROP_REASON_TAP_FILTER: dropped by (ebpf) filter directly attached
> * to tun/tap, e.g., via TUNSETFILTEREBPF
> --
> 2.47.3
>
next prev parent reply other threads:[~2026-10-01 19:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 9:39 [PATCH net-next] tun: use pskb_may_pull_reason() and remove SKB_DROP_REASON_HDR_TRUNC Anton Danilov
2026-10-01 17:24 ` Ido Schimmel
2026-10-01 19:00 ` Willem de Bruijn [this message]
2026-10-03 13:21 ` Anton Danilov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=willemdebruijn.kernel.3b99b3605b4c1@gmail.com \
--to=willemdebruijn.kernel@gmail.com \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=jasowangio@gmail.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=littlesmilingcloud@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.