All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Marangi <ansuelsmth@gmail.com>
To: Kees Cook <keescook@chromium.org>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>,
	Christian Brauner <brauner@kernel.org>,
	Eric Biederman <ebiederm@xmission.com>,
	Mark Brown <broonie@kernel.org>,
	Dave Martin <Dave.Martin@arm.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	linux-fsdevel@vger.kernel.org, linux-mm@kvack.org,
	linux-kernel@vger.kernel.org, stable@vger.kernel.org
Subject: Re: [PATCH] binfmt_elf: dynamically allocate note.data in parse_elf_properties
Date: Wed, 7 Jun 2023 20:31:58 +0200	[thread overview]
Message-ID: <6480f938.1c0a0220.17a3a.0e1e@mx.google.com> (raw)
In-Reply-To: <202306071417.79F70AC@keescook>

On Wed, Jun 07, 2023 at 02:19:51PM -0700, Kees Cook wrote:
> On Wed, Jun 07, 2023 at 04:42:27PM +0200, Christian Marangi wrote:
> > Dynamically allocate note.data in parse_elf_properties to fix
> > compilation warning on some arch.
> 
> I'd rather avoid dynamic allocation as much as possible in the exec
> path, but we can balance it against how much it may happen.
>

I guess there isn't a good way to handle this other than static global
variables and kmalloc. But check the arch question for additional info
on the case.

> > On some arch note.data exceed the stack limit for a single function and
> > this cause the following compilation warning:
> > fs/binfmt_elf.c: In function 'parse_elf_properties.isra':
> > fs/binfmt_elf.c:821:1: error: the frame size of 1040 bytes is larger than 1024 bytes [-Werror=frame-larger-than=]
> >   821 | }
> >       | ^
> > cc1: all warnings being treated as errors
> 
> Which architectures see this warning?
> 

This is funny. On OpenWRT we are enforcing WERROR and we had FRAME_WARN
hardcoded to 1024. (the option is set to 2048 on 64bit arch)

ARCH_USE_GNU_PROPERTY is set only on arm64 that have a FRAME_WARN set to
2048.

So this was triggered by building arm64 with FRAME_WARN set to 1024.

Now with the configuration of 2048 the stack warn is not triggered, but
I wonder if it may happen to have a 32bit system with
ARCH_USE_GNU_PROPERTY. That would effectively trigger the warning.

So this is effectively a patch that fix a currently not possible
configuration, since:

!IS_ENABLED(CONFIG_ARCH_USE_GNU_PROPERTY) will result in node.data
effectively never allocated by the compiler are the function will return
0 on everything that doesn't have CONFIG_ARCH_USE_GNU_PROPERTY.

> > Fix this by dynamically allocating the array.
> > Update the sizeof of the union to the biggest element allocated.
> 
> How common are these notes? I assume they're very common; I see them
> even in /bin/true:
> 
> $ readelf -lW /bin/true | grep PROP
>   GNU_PROPERTY   0x000338 0x0000000000000338 0x0000000000000338 0x000030 0x000030 R   0x8
> 
> -- 

Is there a way to check if this kmalloc actually cause perf regression?

-- 
	Ansuel

  reply	other threads:[~2023-06-07 21:40 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-07 14:42 [PATCH] binfmt_elf: dynamically allocate note.data in parse_elf_properties Christian Marangi
2023-06-07 21:19 ` Kees Cook
2023-06-07 18:31   ` Christian Marangi [this message]
2023-06-07 23:37     ` Kees Cook
2023-06-12  8:08 ` Eric W. Biederman

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=6480f938.1c0a0220.17a3a.0e1e@mx.google.com \
    --to=ansuelsmth@gmail.com \
    --cc=Dave.Martin@arm.com \
    --cc=brauner@kernel.org \
    --cc=broonie@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=ebiederm@xmission.com \
    --cc=keescook@chromium.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=stable@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /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.