All of lore.kernel.org
 help / color / mirror / Atom feed
From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: Mark Amirkan via B4 Relay
	<devnull+markdamirkan.gmail.com@kernel.org>,
	 Willem de Bruijn <willemdebruijn.kernel@gmail.com>,
	 netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,  Paolo Abeni <pabeni@redhat.com>,
	 Eric Dumazet <edumazet@google.com>,
	 Simon Horman <horms@kernel.org>,
	 Chetan Loke <loke.chetan@gmail.com>,
	 Jakub Kicinski <kuba@kernel.org>,
	 "David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH net] net/packet: avoid truncating TPACKET_V3 private size
Date: Sun, 13 Sep 2026 18:16:42 -0400	[thread overview]
Message-ID: <willemdebruijn.kernel.1288a752aca73@gmail.com> (raw)
In-Reply-To: <20260913-b4-send-packet-private-v1-1-925eab2cd388@gmail.com>

Mark Amirkan via B4 Relay wrote:
> From: Mark Amirkan <markdamirkan@gmail.com>
> 
> tpacket_req3.tp_sizeof_priv is an unsigned int, and packet_set_ring()
> validates the full value against the block size.  init_prb_bdqc() then
> stores it in the unsigned short blk_sizeof_priv field.
> 
> Commit 2b6867c2ce76 ("net/packet: fix overflow in check for priv area
> size") fixed the validation arithmetic, but an accepted value above
> USHRT_MAX still narrows when it is stored.
> 
> For a 131072-byte block, tp_sizeof_priv=65536 is valid.  The narrowing
> makes offset_to_first_pkt 48 instead of 65584, so packet records can be
> placed in the private area that userspace asked the kernel to preserve.
> 
> blk_sizeof_priv is internal state, so widen it to hold the validated
> UAPI value.
> 
> Fixes: f6fb8f100b80 ("af-packet: TPACKET_V3 flexible buffer implementation.")
> Cc: stable@vger.kernel.org
> Assisted-by: Symbolic
> Signed-off-by: Mark Amirkan <markdamirkan@gmail.com>

Reviewed-by: Willem de Bruijn <willemb@google.com>

> ---
>  net/packet/internal.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/packet/internal.h b/net/packet/internal.h
> index b76e645cd7..f5c8cd0eed 100644
> --- a/net/packet/internal.h
> +++ b/net/packet/internal.h
> @@ -21,7 +21,7 @@ struct tpacket_kbdq_core {
>  	unsigned int	hdrlen;
>  	unsigned char	reset_pending_on_curr_blk;
>  	unsigned short	kactive_blk_num;
> -	unsigned short	blk_sizeof_priv;
> +	unsigned int	blk_sizeof_priv;

This could be moved to avoid growing the struct. There is a 4B hole
further down. But it's no big deal for this struct.

      reply	other threads:[~2026-09-13 22:16 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-13 10:31 [PATCH net] net/packet: avoid truncating TPACKET_V3 private size Mark Amirkan via B4 Relay
2026-09-13 10:31 ` Mark Amirkan
2026-09-13 22:16 ` Willem de Bruijn [this message]

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.1288a752aca73@gmail.com \
    --to=willemdebruijn.kernel@gmail.com \
    --cc=davem@davemloft.net \
    --cc=devnull+markdamirkan.gmail.com@kernel.org \
    --cc=edumazet@google.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=loke.chetan@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.