Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp1505227ybm; Thu, 23 May 2019 02:06:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqyQFO+fkwMoTe5+8LYyTRjxe1/jyFrud2BR0CCJsU4kuqqH/YOBJfNJcPSEmEyxbvDoXDvw X-Received: by 2002:a17:90a:8586:: with SMTP id m6mr263381pjn.129.1558602405847; Thu, 23 May 2019 02:06:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558602405; cv=none; d=google.com; s=arc-20160816; b=yszohHl9RGNzttJfXY94nARxOlxNeh2RERQwkWByDcQLg4crtBbrFo8Po7iZeMwH0n j0kU6aR1WAqiuTAttaaL+S85d1EU6pn1lzaK1vqeGWNFa5JF+T5tI+ps0Rl02SPUtmf6 k3pASGFn7hyvDb5Ni7PTBkIEeB0bJ490KltBNhvdCQZP71r3Dcr79pEjINOFUc0igcPG uJVL7lZIdSD/l+jQSxtMAmd36IMFc5hR4Tzhj1JKbrOK2YSZE2dhBWl9sDXkOb4KnmMu 24YD+RfnKxGeNLd3va+FV9EnwAnLOIi56Fi0WtYL/Yc59sTGlcfzUyzvfN5jINz50pZ9 U1dA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=ofKgwrZSPkiDsP4z2r5c5NiHpp9tAA/wXd0x5kJi4H0=; b=OtIotN8kR2u+pSB9h/WtKWKTMf7E6+24aZFn6cJ0zU0GUA3O50ZJOX+aJE37PmQbHu c7DXM7RGXWOvnWKWRo59D28BVnSukjGY3n9XYP+dAuyt4br7m+sXaytWm0E+sw5Jcg/v NVtUQB6gnBo1QC0tRLRtc4Hu93i2lNr71HdZJp3dOB6U9V3AyHdtsxObIqA+zkHBs+6W 500Sncwxd/v4Uu3yLoQw4PnnPQobGGqqWtUAPIRO51qoc8rQmukFkwl/QQpat0HINbR7 0Mz0B1EuuKn4CAeuHV4r5D72MeNV5/esfEPvYC2dPEEd9uuvsxxBtQNMYcq8ZAaYBnuj 2mJQ== 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 f71si27130400pgc.150.2019.05.23.02.06.29; Thu, 23 May 2019 02:06:45 -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 S1730115AbfEWJEh (ORCPT + 99 others); Thu, 23 May 2019 05:04:37 -0400 Received: from foss.arm.com ([217.140.101.70]:40630 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726230AbfEWJEh (ORCPT ); Thu, 23 May 2019 05:04:37 -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 409B2341; Thu, 23 May 2019 02:04:36 -0700 (PDT) Received: from arrakis.emea.arm.com (arrakis.cambridge.arm.com [10.1.196.78]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A78AC3F575; Thu, 23 May 2019 02:04:30 -0700 (PDT) Date: Thu, 23 May 2019 10:04:28 +0100 From: Catalin Marinas To: Evgenii Stepanov Cc: Andrey Konovalov , Linux ARM , Linux Memory Management List , LKML , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, "open list:KERNEL SELFTEST FRAMEWORK" , Vincenzo Frascino , Will Deacon , Mark Rutland , Andrew Morton , Greg Kroah-Hartman , Kees Cook , Yishai Hadas , Felix Kuehling , Alexander Deucher , Christian Koenig , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Luc Van Oostenryck , Dave Martin , Kevin Brodsky , Szabolcs Nagy Subject: Re: [PATCH v15 05/17] arms64: untag user pointers passed to memory syscalls Message-ID: <20190523090427.GA44383@arrakis.emea.arm.com> References: <00eb4c63fefc054e2c8d626e8fedfca11d7c2600.1557160186.git.andreyknvl@google.com> <20190522114910.emlckebwzv2qz42i@mbp> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, May 22, 2019 at 02:16:57PM -0700, Evgenii Stepanov wrote: > On Wed, May 22, 2019 at 4:49 AM Catalin Marinas wrote: > > On Mon, May 06, 2019 at 06:30:51PM +0200, Andrey Konovalov wrote: > > > This patch is a part of a series that extends arm64 kernel ABI to allow to > > > pass tagged user pointers (with the top byte set to something else other > > > than 0x00) as syscall arguments. > > > > > > This patch allows tagged pointers to be passed to the following memory > > > syscalls: brk, get_mempolicy, madvise, mbind, mincore, mlock, mlock2, > > > mmap, mmap_pgoff, mprotect, mremap, msync, munlock, munmap, > > > remap_file_pages, shmat and shmdt. > > > > > > This is done by untagging pointers passed to these syscalls in the > > > prologues of their handlers. > > > > I'll go through them one by one to see if we can tighten the expected > > ABI while having the MTE in mind. > > > > > diff --git a/arch/arm64/kernel/sys.c b/arch/arm64/kernel/sys.c > > > index b44065fb1616..933bb9f3d6ec 100644 > > > --- a/arch/arm64/kernel/sys.c > > > +++ b/arch/arm64/kernel/sys.c > > > @@ -35,10 +35,33 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, > > > { > > > if (offset_in_page(off) != 0) > > > return -EINVAL; > > > - > > > + addr = untagged_addr(addr); > > > return ksys_mmap_pgoff(addr, len, prot, flags, fd, off >> PAGE_SHIFT); > > > } > > > > If user passes a tagged pointer to mmap() and the address is honoured > > (or MAP_FIXED is given), what is the expected return pointer? Does it > > need to be tagged with the value from the hint? > > For HWASan the most convenient would be to use the tag from the hint. > But since in the TBI (not MTE) mode the kernel has no idea what > meaning userspace assigns to pointer tags, perhaps it should not try > to guess, and should return raw (zero-tagged) address instead. Then, just to relax the ABI for hwasan, shall we simply disallow tagged pointers on mmap() arguments? We can leave them in for mremap(old_address), madvise(). > > With MTE, we may want to use this as a request for the default colour of > > the mapped pages (still under discussion). > > I like this - and in that case it would make sense to return the > pointer that can be immediately dereferenced without crashing the > process, i.e. with the matching tag. This came up from the Android investigation work where large memory allocations (using mmap) could be more efficiently pre-tagged by the kernel on page fault. Not sure about the implementation details yet. -- Catalin