[PATCH v1 4/4] arm64/mte: Add userspace interface for enabling asymmetric mode

Evgenii Stepanov eugenis at google.com
Wed Mar 2 10:44:31 PST 2022


On Wed, Mar 2, 2022 at 5:10 AM Mark Brown <broonie at kernel.org> wrote:
>
> On Wed, Mar 02, 2022 at 11:44:53AM +0000, Catalin Marinas wrote:
> > On Tue, Mar 01, 2022 at 04:52:01PM -0800, Evgenii Stepanov wrote:
>
> > > Extending PR_MTE_TCF_MASK seems bad for backward compatibility. User
> > > code may do "flags =& ~PR_MTE_TCF_MASK" to disable MTE; when compiled
> > > against an old version of the header this would fail to remove the ASYMM
> > > bit.
>
> > But if the app is compiled against an old version, it wouldn't set
> > MTE_CTRL_TCF_ASYMM either as it doesn't have the definition.

Libraries within a single process can be built against different
header versions. In our case, this is libc vs the app: we expect to
set all 3 mode bits when an app asks for "async" to enable the
mte_tcf_preferred logic. Even if the app is built against an older NDK
and unaware of the Asymm mode existence!

This is more of a theoretical concern at this point. Android provides
a better interface to disable MTE (mallopt) which applies to all
threads at once, and also disables tagging logic in the heap
allocator, but we can not prevent an app from shooting itself in the
foot with a raw prctl.



More information about the linux-arm-kernel mailing list