Received: by 2002:ac0:bc90:0:0:0:0:0 with SMTP id a16csp583437img; Mon, 18 Mar 2019 09:37:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqw45cL12Xi4253NnMs8O7XwOrar/P8SWhiHfNCIA2DZaPMM+YQRdUS2cpkgd1dBhfUYx1C7 X-Received: by 2002:a17:902:1c9:: with SMTP id b67mr20190357plb.176.1552927075115; Mon, 18 Mar 2019 09:37:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552927075; cv=none; d=google.com; s=arc-20160816; b=eQfC4PTuq/YEKLkspuL5S7/G6qIeqnC2Vi8twAdiP5D2rljE4TDcHp7KJCzqeM/cAe RE7U5veBiqHn+W/xR1Wis6UKL7Kl81+6cfB23/tMAbEjhb+XIXqCNqEXuRfA3mTrdzCb f2fffjYkLvmn4rb/HQuJHLKqcWMIpmKWsYgJTx08JyFKogpFNjpmZF274uKsQUrk8pNw zU3YG0bgA50/ofU3EjpLq/Lf2J2IX6MJzY1DzK7pyHVF/mTBqjoOJoPFKBWmlI+6GqmJ cyq5gkQWoGFxh4XzGFt+37V8dtSrs668RaEA8O4Fix80jiU/ebgUMWiA3MRipiVPhdpW vmfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=XEELYYF6lc/hWetNLA+zrjJi6XxuwPk+tQQR+ZM7sY8=; b=jrt0JwPvt9IDpF1McZOHYzdb9Imf0cN4mbxkyZqrpKlzA8CJkKWSXOuOOIroHqkvJk rG5r8kuuXZLqJdWaa92OUj/JL80GwUt3rpGGTaPDFeOTBIOxsL5ALept/tLwQ2T+yADL XS0R/O7F/c9bAWss+vbxrE3olUbz6KE+w2Ni4h3It438/TZhb7Uw4lNpSoiQGK96ZpKd Yuf2E83jjMWSKDxDRbso16sydTSAD9/v1LdNRIrnhmT8A2MgHHyvOPCDqfwttMs+4Q8M 1PER8S/ogYbt2EdPIOq+GGf7VJHx9GRNHd7OWl60unlKNC07yYnaJZXd+6dsGRsp2cEQ 6fFw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l7si9443428pff.162.2019.03.18.09.37.40; Mon, 18 Mar 2019 09:37:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727834AbfCRQgN (ORCPT + 99 others); Mon, 18 Mar 2019 12:36:13 -0400 Received: from foss.arm.com ([217.140.101.70]:37352 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726806AbfCRQgM (ORCPT ); Mon, 18 Mar 2019 12:36:12 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EEC7B174E; Mon, 18 Mar 2019 09:36:11 -0700 (PDT) Received: from e119884-lin.cambridge.arm.com (e119884-lin.cambridge.arm.com [10.1.196.72]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C9F083F614; Mon, 18 Mar 2019 09:36:05 -0700 (PDT) From: Vincenzo Frascino To: linux-arm-kernel@lists.infradead.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Alexander Viro , Alexei Starovoitov , Andrew Morton , Andrey Konovalov , Arnaldo Carvalho de Melo , Branislav Rankov , Catalin Marinas , Chintan Pandya , Daniel Borkmann , Dave Martin , "David S. Miller" , Dmitry Vyukov , Eric Dumazet , Evgeniy Stepanov , Graeme Barnes , Greg Kroah-Hartman , Ingo Molnar , Jacob Bramley , Kate Stewart , Kees Cook , Kevin Brodsky , "Kirill A . Shutemov" , Kostya Serebryany , Lee Smith , Luc Van Oostenryck , Mark Rutland , Peter Zijlstra , Ramana Radhakrishnan , Robin Murphy , Ruben Ayrapetyan , Shuah Khan , Steven Rostedt , Szabolcs Nagy , Will Deacon Subject: [PATCH v2 3/4] arm64: Relax Documentation/arm64/tagged-pointers.txt Date: Mon, 18 Mar 2019 16:35:32 +0000 Message-Id: <20190318163533.26838-4-vincenzo.frascino@arm.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190318163533.26838-1-vincenzo.frascino@arm.com> References: <20190318163533.26838-1-vincenzo.frascino@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On arm64 the TCR_EL1.TBI0 bit has been always enabled hence the userspace (EL0) is allowed to set a non-zero value in the top byte but the resulting pointers are not allowed at the user-kernel syscall ABI boundary. With the relaxed ABI proposed in this set, it is now possible to pass tagged pointers to the syscalls, when these pointers are in memory ranges obtained by an anonymous (MAP_ANONYMOUS) mmap() or sbrk(). Relax the requirements described in tagged-pointers.txt to be compliant with the behaviours guaranteed by the ABI deriving from the introduction of the ARM64_AT_FLAGS_SYSCALL_TBI flag. Cc: Catalin Marinas Cc: Will Deacon CC: Andrey Konovalov Signed-off-by: Vincenzo Frascino --- Documentation/arm64/tagged-pointers.txt | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/Documentation/arm64/tagged-pointers.txt b/Documentation/arm64/tagged-pointers.txt index a25a99e82bb1..df27188b9433 100644 --- a/Documentation/arm64/tagged-pointers.txt +++ b/Documentation/arm64/tagged-pointers.txt @@ -18,7 +18,8 @@ Passing tagged addresses to the kernel -------------------------------------- All interpretation of userspace memory addresses by the kernel assumes -an address tag of 0x00. +an address tag of 0x00, unless the ARM64_AT_FLAGS_SYSCALL_TBI flag is +set by the kernel. This includes, but is not limited to, addresses found in: @@ -31,18 +32,23 @@ This includes, but is not limited to, addresses found in: - the frame pointer (x29) and frame records, e.g. when interpreting them to generate a backtrace or call graph. -Using non-zero address tags in any of these locations may result in an -error code being returned, a (fatal) signal being raised, or other modes -of failure. +Using non-zero address tags in any of these locations when the +ARM64_AT_FLAGS_SYSCALL_TBI flag is not set by the kernel, may result in +an error code being returned, a (fatal) signal being raised, or other +modes of failure. -For these reasons, passing non-zero address tags to the kernel via -system calls is forbidden, and using a non-zero address tag for sp is -strongly discouraged. +For these reasons, when the flag is not set, passing non-zero address +tags to the kernel via system calls is forbidden, and using a non-zero +address tag for sp is strongly discouraged. Programs maintaining a frame pointer and frame records that use non-zero address tags may suffer impaired or inaccurate debug and profiling visibility. +A definition of the meaning of ARM64_AT_FLAGS_SYSCALL_TBI and of the +guarantees that the ABI provides when the flag is set by the kernel can +be found in: Documentation/arm64/elf_at_flags.txt. + Preserving tags --------------- @@ -57,6 +63,9 @@ be preserved. The architecture prevents the use of a tagged PC, so the upper byte will be set to a sign-extension of bit 55 on exception return. +This behaviours are preserved even when the ARM64_AT_FLAGS_SYSCALL_TBI flag +is set by the kernel. + Other considerations -------------------- -- 2.21.0