From patchwork Fri Dec 18 19:29:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Earnshaw X-Patchwork-Id: 41476 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E894B393BC34; Fri, 18 Dec 2020 19:30:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E894B393BC34 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1608319817; bh=hCX3MYfPAvq08m2TpoVTMwsKTTVWe0hNUl67KqlpoTs=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=Rra93rE/HvP2iNv8y0BsLM5pnEi6+GUKGH6ZErzPF6gg+LY/QmTFBg9fAuQJDGc54 OTu1n2zqocbZFxRjdGsVIzu207XdE7yU93VKPhQ1Owm+x1NrTq3ehlmxl49+wMYvQ2 /ZzVw/kUdk1sjki0FBlDHCt+k1zPspZAYiDcKII4= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id CE4163857004 for ; Fri, 18 Dec 2020 19:30:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org CE4163857004 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 53683106F; Fri, 18 Dec 2020 11:30:11 -0800 (PST) Received: from eagle.buzzard.freeserve.co.uk (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5B6AB3F66E; Fri, 18 Dec 2020 11:30:10 -0800 (PST) To: libc-alpha@sourceware.org Subject: [PATCH v4 2/6] elf: Add a tunable to control use of tagged memory Date: Fri, 18 Dec 2020 19:29:53 +0000 Message-Id: <20201218192957.11035-3-rearnsha@arm.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201218192957.11035-1-rearnsha@arm.com> References: <20201218192957.11035-1-rearnsha@arm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Richard Earnshaw via Libc-alpha From: Richard Earnshaw Reply-To: Richard Earnshaw Cc: Richard Earnshaw Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" 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 + } + } } 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 + +@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