[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