All of lore.kernel.org
 help / color / mirror / Atom feed
From: Catalin Marinas <catalin.marinas@arm.com>
To: Will Deacon <will@kernel.org>
Cc: Kees Cook <keescook@chromium.org>,
	broonie@kernel.org, linux-arm-kernel@lists.infradead.org,
	jeremy.linton@arm.com, hjl.tools@gmail.com,
	libc-alpha@sourceware.org, szabolcs.nagy@arm.com,
	yu-cheng.yu@intel.com, ebiederm@xmission.com,
	linux-arch@vger.kernel.org
Subject: Re: [PATCH v13 0/2] arm64: Enable BTI for the executable as well as the interpreter
Date: Wed, 20 Apr 2022 10:57:30 +0100	[thread overview]
Message-ID: <Yl/ZCvPB2Qx98+OG@arm.com> (raw)
In-Reply-To: <20220420093612.GB6954@willie-the-truck>

On Wed, Apr 20, 2022 at 10:36:13AM +0100, Will Deacon wrote:
> On Tue, Apr 19, 2022 at 10:33:06PM -0700, Kees Cook wrote:
> > On Tue, 19 Apr 2022 11:51:54 +0100, Mark Brown wrote:
> > > Deployments of BTI on arm64 have run into issues interacting with
> > > systemd's MemoryDenyWriteExecute feature.  Currently for dynamically
> > > linked executables the kernel will only handle architecture specific
> > > properties like BTI for the interpreter, the expectation is that the
> > > interpreter will then handle any properties on the main executable.
> > > For BTI this means remapping the executable segments PROT_EXEC |
> > > PROT_BTI.
> > > 
> > > [...]
> > 
> > Applied to for-next/execve, thanks!
> > 
> > [1/2] elf: Allow architectures to parse properties on the main executable
> >       https://git.kernel.org/kees/c/b2f2553c8e89
> > [2/2] arm64: Enable BTI for main executable as well as the interpreter
> >       https://git.kernel.org/kees/c/b65c760600e2
> 
> Kees, please can you drop this series while Catalin's alternative solution
> is under discussion (his Reviewed-by preceded the other patches)?
> 
> https://lore.kernel.org/r/20220413134946.2732468-1-catalin.marinas@arm.com
> 
> Both series expose new behaviours to userspace and we don't need both.

I agree. Even though the patches have my reviewed-by, I think we should
postpone them until we figure out a better W^X solution that does not
affect BTI (and if we can't, we revisit these patches).

Arguably, the two approaches are complementary but the way this series
turned out is for the BTI on main executable to be default off. I have a
worry that the feature won't get used, so we just carry unnecessary code
in the kernel. Jeremy also found this approach less than ideal:

https://lore.kernel.org/r/59fc8a58-5013-606b-f544-8277cda18e50@arm.com

-- 
Catalin

WARNING: multiple messages have this Message-ID (diff)
From: Catalin Marinas <catalin.marinas@arm.com>
To: Will Deacon <will@kernel.org>
Cc: Kees Cook <keescook@chromium.org>,
	broonie@kernel.org, linux-arm-kernel@lists.infradead.org,
	jeremy.linton@arm.com, hjl.tools@gmail.com,
	libc-alpha@sourceware.org, szabolcs.nagy@arm.com,
	yu-cheng.yu@intel.com, ebiederm@xmission.com,
	linux-arch@vger.kernel.org
Subject: Re: [PATCH v13 0/2] arm64: Enable BTI for the executable as well as the interpreter
Date: Wed, 20 Apr 2022 10:57:30 +0100	[thread overview]
Message-ID: <Yl/ZCvPB2Qx98+OG@arm.com> (raw)
In-Reply-To: <20220420093612.GB6954@willie-the-truck>

On Wed, Apr 20, 2022 at 10:36:13AM +0100, Will Deacon wrote:
> On Tue, Apr 19, 2022 at 10:33:06PM -0700, Kees Cook wrote:
> > On Tue, 19 Apr 2022 11:51:54 +0100, Mark Brown wrote:
> > > Deployments of BTI on arm64 have run into issues interacting with
> > > systemd's MemoryDenyWriteExecute feature.  Currently for dynamically
> > > linked executables the kernel will only handle architecture specific
> > > properties like BTI for the interpreter, the expectation is that the
> > > interpreter will then handle any properties on the main executable.
> > > For BTI this means remapping the executable segments PROT_EXEC |
> > > PROT_BTI.
> > > 
> > > [...]
> > 
> > Applied to for-next/execve, thanks!
> > 
> > [1/2] elf: Allow architectures to parse properties on the main executable
> >       https://git.kernel.org/kees/c/b2f2553c8e89
> > [2/2] arm64: Enable BTI for main executable as well as the interpreter
> >       https://git.kernel.org/kees/c/b65c760600e2
> 
> Kees, please can you drop this series while Catalin's alternative solution
> is under discussion (his Reviewed-by preceded the other patches)?
> 
> https://lore.kernel.org/r/20220413134946.2732468-1-catalin.marinas@arm.com
> 
> Both series expose new behaviours to userspace and we don't need both.

I agree. Even though the patches have my reviewed-by, I think we should
postpone them until we figure out a better W^X solution that does not
affect BTI (and if we can't, we revisit these patches).

Arguably, the two approaches are complementary but the way this series
turned out is for the BTI on main executable to be default off. I have a
worry that the feature won't get used, so we just carry unnecessary code
in the kernel. Jeremy also found this approach less than ideal:

https://lore.kernel.org/r/59fc8a58-5013-606b-f544-8277cda18e50@arm.com

-- 
Catalin

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2022-04-20  9:57 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-19 10:51 [PATCH v13 0/2] arm64: Enable BTI for the executable as well as the interpreter Mark Brown
2022-04-19 10:51 ` Mark Brown
2022-04-19 10:51 ` [PATCH v13 1/2] elf: Allow architectures to parse properties on the main executable Mark Brown
2022-04-19 10:51   ` Mark Brown
2022-04-20 16:51   ` Kees Cook
2022-04-20 16:51     ` Kees Cook
2022-04-19 10:51 ` [PATCH v13 2/2] arm64: Enable BTI for main executable as well as the interpreter Mark Brown
2022-04-19 10:51   ` Mark Brown
2022-04-20  5:33 ` [PATCH v13 0/2] arm64: Enable BTI for the " Kees Cook
2022-04-20  5:33   ` Kees Cook
2022-04-20  9:36   ` Will Deacon
2022-04-20  9:36     ` Will Deacon
2022-04-20  9:57     ` Catalin Marinas [this message]
2022-04-20  9:57       ` Catalin Marinas
2022-04-20 11:57       ` Mark Brown
2022-04-20 11:57         ` Mark Brown
2022-04-20 13:39         ` Jeremy Linton
2022-04-20 13:39           ` Jeremy Linton
2022-04-20 16:51           ` Kees Cook
2022-04-20 16:51             ` Kees Cook
2022-04-21  9:34           ` Catalin Marinas
2022-04-21  9:34             ` Catalin Marinas
2022-04-21 15:52             ` Jeremy Linton
2022-04-21 15:52               ` Jeremy Linton
2022-04-21 17:58               ` Mark Brown
2022-04-21 17:58                 ` Mark Brown
2022-04-20 16:48     ` Kees Cook
2022-04-20 16:48       ` Kees Cook
2022-04-20 16:51   ` Kees Cook
2022-04-20 16:51     ` Kees Cook

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=Yl/ZCvPB2Qx98+OG@arm.com \
    --to=catalin.marinas@arm.com \
    --cc=broonie@kernel.org \
    --cc=ebiederm@xmission.com \
    --cc=hjl.tools@gmail.com \
    --cc=jeremy.linton@arm.com \
    --cc=keescook@chromium.org \
    --cc=libc-alpha@sourceware.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=szabolcs.nagy@arm.com \
    --cc=will@kernel.org \
    --cc=yu-cheng.yu@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 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.