Netdev List
 help / color / mirror / Atom feed
From: Kees Cook <kees@kernel.org>
To: Alexander Lobakin <aleksander.lobakin@intel.com>
Cc: Breno Leitao <leitao@debian.org>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>,
	horms@kernel.org, linux-hardening@vger.kernel.org,
	Przemek Kitszel <przemyslaw.kitszel@intel.com>,
	Jiri Pirko <jiri@resnulli.us>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Lorenzo Bianconi <lorenzo@kernel.org>,
	Johannes Berg <johannes.berg@intel.com>,
	"open list:NETWORKING [GENERAL]" <netdev@vger.kernel.org>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH net-next v3] netdevice: define and allocate &net_device _properly_
Date: Wed, 10 Jul 2024 09:29:46 -0700	[thread overview]
Message-ID: <202407100927.3CA9DE888A@keescook> (raw)
In-Reply-To: <0664910d-026d-49b8-8b70-a5c881888761@intel.com>

On Wed, Jul 10, 2024 at 04:01:35PM +0200, Alexander Lobakin wrote:
> From: Breno Leitao <leitao@debian.org>
> Date: Wed, 10 Jul 2024 04:30:28 -0700
> 
> > From: Alexander Lobakin <aleksander.lobakin@intel.com>
> > 
> > In fact, this structure contains a flexible array at the end, but
> > historically its size, alignment etc., is calculated manually.
> > There are several instances of the structure embedded into other
> > structures, but also there's ongoing effort to remove them and we
> > could in the meantime declare &net_device properly.
> > Declare the array explicitly, use struct_size() and store the array
> > size inside the structure, so that __counted_by() can be applied.
> > Don't use PTR_ALIGN(), as SLUB itself tries its best to ensure the
> > allocated buffer is aligned to what the user expects.
> > Also, change its alignment from %NETDEV_ALIGN to the cacheline size
> > as per several suggestions on the netdev ML.
> > 
> > bloat-o-meter for vmlinux:
> > 
> > free_netdev                                  445     440      -5
> > netdev_freemem                                24       -     -24
> > alloc_netdev_mqs                            1481    1450     -31
> > 
> > On x86_64 with several NICs of different vendors, I was never able to
> > get a &net_device pointer not aligned to the cacheline size after the
> > change.
> > 
> > Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com>
> > Signed-off-by: Breno Leitao <leitao@debian.org>
> > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
> > Reviewed-by: Eric Dumazet <edumazet@google.com>
> > Reviewed-by: Kees Cook <kees@kernel.org>
> 
> You did a great job converting embedded &net_devices, thanks a lot!
> 
> I hope SLUB won't return you a non-cacheline-aligned pointer after that
> you removed SMP_CACHE_ALIGN(sizeof_priv), right?

Currently the slab will do power-of-2 alignment (i.e. aligned to the
bucket size), so this should be fine. In the future I'm trying to make
the slab more aware of the required alignments so that it can still
provide needed alignment without having to do maximal (power-of-2)
alignments.

-- 
Kees Cook

  reply	other threads:[~2024-07-10 16:29 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-10 11:30 [PATCH net-next v3] netdevice: define and allocate &net_device _properly_ Breno Leitao
2024-07-10 13:44 ` Simon Horman
2024-07-10 14:01 ` Alexander Lobakin
2024-07-10 16:29   ` Kees Cook [this message]
2024-07-12  1:20 ` patchwork-bot+netdevbpf

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=202407100927.3CA9DE888A@keescook \
    --to=kees@kernel.org \
    --cc=aleksander.lobakin@intel.com \
    --cc=bigeasy@linutronix.de \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gustavoars@kernel.org \
    --cc=horms@kernel.org \
    --cc=jiri@resnulli.us \
    --cc=johannes.berg@intel.com \
    --cc=kuba@kernel.org \
    --cc=leitao@debian.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lorenzo@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=przemyslaw.kitszel@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox