[PATCH v4 2/6] elf: Add a tunable to control use of tagged memory
Siddhesh Poyarekar
siddhesh@gotplt.org
Mon Dec 21 12:42:09 GMT 2020
On 12/19/20 12:59 AM, Richard Earnshaw via Libc-alpha wrote:
>
> Add a new glibc tunable: mem.tagging. This is a decimal constant in
> the range 0-255 but used as a bit-field.
>
> Bit 0 enables use of tagged memory in the malloc family of functions.
> Bit 1 enables precise faulting of tag failure on platforms where this
> can be controlled.
> Other bits are currently unused, but if set will cause memory tag
> checking for the current process to be enabled in the kernel.
> ---
> elf/dl-tunables.list | 9 +++++++++
> manual/tunables.texi | 35 +++++++++++++++++++++++++++++++++++
> 2 files changed, 44 insertions(+)
>
> diff --git a/elf/dl-tunables.list b/elf/dl-tunables.list
> index e1d8225128..4c44ead715 100644
> --- a/elf/dl-tunables.list
> +++ b/elf/dl-tunables.list
> @@ -141,4 +141,13 @@ glibc {
> default: 512
> }
> }
> +
> + mem {
> + tagging {
> + type: INT_32
> + minval: 0
> + maxval: 255
> + security_level: SXID_IGNORE
> + }
> + }
> }
OK.
> diff --git a/manual/tunables.texi b/manual/tunables.texi
> index d72d7a5ec0..1bbdc88281 100644
> --- a/manual/tunables.texi
> +++ b/manual/tunables.texi
> @@ -36,6 +36,8 @@ their own namespace.
> * POSIX Thread Tunables:: Tunables in the POSIX thread subsystem
> * Hardware Capability Tunables:: Tunables that modify the hardware
> capabilities seen by @theglibc{}
> +* Memory Related Tunables:: Tunables that control the use of memory by
> + @theglibc{}.
> @end menu
>
> @node Tunable names
> @@ -484,3 +486,36 @@ instead.
>
> This tunable is specific to i386 and x86-64.
> @end deftp
> +
> +@node Memory Related Tunables
> +@section Memory Related Tunables
> +@cindex memory related tunables
> +
> +@deftp {Tunable namespace} glibc.mem
> +This tunable namespace supports operations that affect the way @theglibc{}
> +and the process manage memory.
> +@end deftp
> +
That's a good description.
> +@deftp Tunable glibc.mem.tagging
> +If the hardware supports memory tagging, this tunable can be used to
> +control the way @theglibc{} uses this feature. At present this is only
> +supported on AArch64 systems with the MTE extention; it is ignored for
> +all other systems.
> +
> +This tunable takes a value between 0 and 255 and acts as a bitmask
> +that enables various capabilities.
> +
> +Bit 0 (the least significant bit) causes the malloc subsystem to allocate
> +tagged memory, with each allocation being assigned a random tag.
> +
> +Bit 1 enables precise faulting mode for tag violations on systems that
> +support deferred tag violation reporting. This may cause programs
> +to run more slowly.
> +
> +Other bits are currently reserved.
> +
> +@Theglibc{} startup code will automatically enable memory tagging
> +support in the kernel if this tunable has any non-zero value.
> +
> +The default value is @samp{0}, which disables all memory tagging.
> +@end deftp
Looks good to me.
Siddhesh
More information about the Libc-alpha
mailing list