From patchwork Mon Jun 3 16:55:03 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973257 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8C35F6C5 for ; Mon, 3 Jun 2019 16:55:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7964227CEA for ; Mon, 3 Jun 2019 16:55:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6CB7E285ED; Mon, 3 Jun 2019 16:55:30 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 02B7127CEA for ; Mon, 3 Jun 2019 16:55:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C89216B000D; Mon, 3 Jun 2019 12:55:27 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id BEAAB6B0266; Mon, 3 Jun 2019 12:55:27 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C8DD6B0269; Mon, 3 Jun 2019 12:55:27 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-yw1-f69.google.com (mail-yw1-f69.google.com [209.85.161.69]) by kanga.kvack.org (Postfix) with ESMTP id 75C916B000D for ; Mon, 3 Jun 2019 12:55:27 -0400 (EDT) Received: by mail-yw1-f69.google.com with SMTP id q188so17290308ywc.15 for ; Mon, 03 Jun 2019 09:55:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=BzAJ0+9x2pcfr7Do5TUN53ZGOyHm87DfwLwwZIYymzc=; b=BZzU61zpW3R1WMgBYK78uuRGUz/pnko0bMplfqY6xsgVAN2BeSH7afHee/jLg67oIJ WXUodbMi7ntAgC/geqKDBBZPaQSd77cNV58IZNSfp0KTHsKw77uF7xyc7mIddvJX4Cjy CY6ZRXVkLepz1n78f6MN9Vll1kg5pXLWrTfC2N1Htomb8E33tX5cNOPEk9UJ9vzj2LMy nxHmrKxkudOQRqGlbTgaIDzdYvovhl365klWi+MGVyoiB+bJvpX0oJtocU5HjaI50S4k 5vZNDZ+WARQqW7MCwxzXV7WPfqMRWLw3gRpXdiWeLTRjiU31oosSlCRAhSzw4wbaePMN qOmA== X-Gm-Message-State: APjAAAW1btjgM+AQuOex8tjhufLleG/4FaWrTKHYHnowJSdyez6Q71nM 2vypng1p554OFwFNbmHytozH0emm07Qdqeh4iT8n/bePXBEfp5X0R/dO8vufRoMcnSLkri2OJZg LrICodso90u37mEnT/WDTiM/ESNStzi0NEAt3dH/bjvoXol0PV+QiQK0pG0lfQGqr2w== X-Received: by 2002:a81:550c:: with SMTP id j12mr13911883ywb.503.1559580927196; Mon, 03 Jun 2019 09:55:27 -0700 (PDT) X-Received: by 2002:a81:550c:: with SMTP id j12mr13911870ywb.503.1559580926684; Mon, 03 Jun 2019 09:55:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580926; cv=none; d=google.com; s=arc-20160816; b=GBDnIANTHbeWAmjSebOkLwfSPexT5ahURVpL5H/64tdCCiYZY9P0tqVpURuPKLWcGq zT/Eg3xFxtFFNhrUSmhUqaYuVPJFQ9OQQEZ9lU0S0cccAPbqKKShCFdMWG79MJDVE+D3 Wi4PBFPC8WNVlr7/BKqpblXweeJa1j5WaWJl2VOuePrjPzG5k3VcHZVASDkI7OZYOfQC sVfR7Ta7TRL52tTp5jFikmAU9LnPZBtCatQAKe151fCP2oFziRSTXRlxrDVE4o6hxpS5 4OOhyQoj9UyKM1RdIIUvUCnIRmGolSVNJFndB2mOX3yPQYgzZNsNLp5KOzkq/aLn1qcI 3ckg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=BzAJ0+9x2pcfr7Do5TUN53ZGOyHm87DfwLwwZIYymzc=; b=rE451iZS3chl+PwKaYSwxDIefDbx5mHUDcLivyHk2KrMtZZ2oPmJuwaApKGbb4pfln yZs2sEOq8emxpwyPv8sCpw4fmp4zFPp5dQr8YYlvT/UD/l67ax2X/XfYYCdYNriELC7l aFTKaB7/e1PbHNyHEirI/2Z64zIq0IbafmHhplQgJYEdcEp5hpa9DOkAfzt9pN2KSS9/ MRzgjL+uzi1+9IHPFCjHlK/m/T2Lquzh0pFinMGwntSTBcsxMbyH1UxECbLsGX/oyRtc qF++17/Ai2aCCDB4C2AU1y5XiiVj87tzeyZhtCHuvvGbZOrfjL6HDbaDUWICIvxHANBS 98WA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Gd3MS7x4; spf=pass (google.com: domain of 3_ld1xaokcgmboesfzlowmhpphmf.dpnmjovy-nnlwbdl.psh@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3_lD1XAoKCGMBOESFZLOWMHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id 184sor6842332ybf.146.2019.06.03.09.55.26 for (Google Transport Security); Mon, 03 Jun 2019 09:55:26 -0700 (PDT) Received-SPF: pass (google.com: domain of 3_ld1xaokcgmboesfzlowmhpphmf.dpnmjovy-nnlwbdl.psh@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Gd3MS7x4; spf=pass (google.com: domain of 3_ld1xaokcgmboesfzlowmhpphmf.dpnmjovy-nnlwbdl.psh@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3_lD1XAoKCGMBOESFZLOWMHPPHMF.DPNMJOVY-NNLWBDL.PSH@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=BzAJ0+9x2pcfr7Do5TUN53ZGOyHm87DfwLwwZIYymzc=; b=Gd3MS7x4gwNqCAsuebDb+LQXe1ROUCAjzPqIs7DNAteGO+I/k2kuk/JUQDg2yytLs0 mAnj4aXyNOLD53bou+rnAjAI+DoFCDM6597Xb+r9d5tHdnUBLOhHUJdZUvwspRQQklB/ nVb9mJ+RVgKXuTmdk46XK6MPO9GX2CvoeDiI4JmSZych6aS7p7s1LkUgQ8IFSJW5YLx/ IwfItaZEAlz+YxcxGixqEutWhh0H0I+YiPlFdGJFMPEbbW0iVK8sXmL/5Dzp9W2t8wq7 Jn42agr19zJj2QbOHan385htTUuPv+QknbBnCycF9d956GlhodbETKPupW6IU9maR3WJ cryQ== X-Google-Smtp-Source: APXvYqw8qo6YCAA2LDG0hCmceBSOfUoHZIsTSjRJKNeADMAk1c3BAJX7XTjP1o6wTWUARrevZDffoxW7ORioylDq X-Received: by 2002:a25:4445:: with SMTP id r66mr13094125yba.55.1559580926346; Mon, 03 Jun 2019 09:55:26 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:03 +0200 In-Reply-To: Message-Id: <097bc300a5c6554ca6fd1886421bb2e0adb03420.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 01/16] uaccess: add untagged_addr definition for other arches From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP To allow arm64 syscalls to accept tagged pointers from userspace, we must untag them when they are passed to the kernel. Since untagging is done in generic parts of the kernel, the untagged_addr macro needs to be defined for all architectures. Define it as a noop for architectures other than arm64. Acked-by: Catalin Marinas Reviewed-by: Khalid Aziz Signed-off-by: Andrey Konovalov --- include/linux/mm.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/linux/mm.h b/include/linux/mm.h index 0e8834ac32b7..949d43e9c0b6 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -99,6 +99,10 @@ extern int mmap_rnd_compat_bits __read_mostly; #include #include +#ifndef untagged_addr +#define untagged_addr(addr) (addr) +#endif + #ifndef __pa_symbol #define __pa_symbol(x) __pa(RELOC_HIDE((unsigned long)(x), 0)) #endif From patchwork Mon Jun 3 16:55:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973263 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 46AEC6C5 for ; Mon, 3 Jun 2019 16:55:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 305BA27CEA for ; Mon, 3 Jun 2019 16:55:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 23F9E285ED; Mon, 3 Jun 2019 16:55:33 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9E4D027CEA for ; Mon, 3 Jun 2019 16:55:32 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4224F6B0266; Mon, 3 Jun 2019 12:55:31 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3ABE86B0269; Mon, 3 Jun 2019 12:55:31 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 227596B026B; Mon, 3 Jun 2019 12:55:31 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by kanga.kvack.org (Postfix) with ESMTP id ECE986B0266 for ; Mon, 3 Jun 2019 12:55:30 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id z8so8120278qti.1 for ; Mon, 03 Jun 2019 09:55:30 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=TMNTkBlmDGgOOZrctIfCYuVqOYCJYB+OoUZL57F6fkg=; b=heYPyJYhUKRc/j88IgMwgVlo5pIHX74nFPht8M4p89wLKhmsJmZQwa+SrayI1y1+aH 4DICV9QMZ+ALciqGi4HvEFKzW1u8lNqBID0b09Wse1E3g2yU3jYEjdY/x3SGuLZtwNqz 74saEDZIKa0QP2SCC2XKIdwu4LXsBGWAz7cettPyLfPLo2Krc8w3Q3IFV5bTnWB+SjXa QqFxV4fkNPXvPFCtdhF6F8H+3TkM5doEwST2lbb/OIWGFbZVWwZJ0Rnp8NupyYMTSyLq SwZcVb1/0eFU9a/TORSRqehtPX3xk65R5UsTe7GjKB/VxYJSfnXFlVJ9gjpEW114SrLZ IADQ== X-Gm-Message-State: APjAAAWuOZ7wWmv1FI01ZL8nkFmDpty1U9iEKHOgmnheVGWw0JWbFsqR fBl41jtvde/Om+SIwDAZRHZyJZ80JAEK7UEJZTRakCxJV5elIT83aRGfr0MIQgFHFUHgjbrOFjZ UDfTdzf+KQewn4JFsqA3Us6Rp7jO+acy636aBgYOlMhdCejqINuKbmlEkzrC9cTLOjQ== X-Received: by 2002:ac8:156:: with SMTP id f22mr6832572qtg.58.1559580930626; Mon, 03 Jun 2019 09:55:30 -0700 (PDT) X-Received: by 2002:ac8:156:: with SMTP id f22mr6832535qtg.58.1559580930088; Mon, 03 Jun 2019 09:55:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580930; cv=none; d=google.com; s=arc-20160816; b=paZiWRhMnDIzmZSOph5ZF0qien+yIFoA04/a9pRawtqJ1V0MWE5zFBkLkqA7Kn4mpS //XgVHP4ZIo+Ys0UAYSLH+Rl6NwMZQwtpD61AS933nEYQ8sXFIsHVtAQuRYdP8m3spy+ 0DbHoqmfKcptE4VmF2tbaWvModsVZISM5Q0Z1TBVIvwM6CCNtsyYVHYPy6KlfMwVaUxO 9VBllnfPDQLe6SCdSY9PjBOB9/Oo+KVgthLUBovTF/19jBPnX1w3zQnOejpnGuS75+sy 6GJVtHcRgWG7+yP8TOD+EDm2gtXyBLKTLtgDyrpiyr3UmCFrH/aSPY/Sf3WpkUNNL8nr sZaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=TMNTkBlmDGgOOZrctIfCYuVqOYCJYB+OoUZL57F6fkg=; b=FNt2presVFvBMoN9s+VM2ZEmDxCg3b2/wrQXZ9ZQEtvMtHo4QwFEl0vgiAKuwms+cL a1nx+a5IPBq5mANlmfb3OMeFMsm+FoUoaibLU84MeSeSg/ru/ys1OMCGd2rv9fQBgu70 V2lEFpnSWJCgn3idNgKf7pRpD9WaZxyjc8msRcBMRbIwLQHyU9EewcFi/V7EA0GikVm+ NWawR1OR6qw5zfDbzCTncqKWoKgQ3PdkCCFrGAiH1BXOfoJUCy+7VSzFJPd3dQoL9A/l gHxg5qTFP5cQLlP8y1ULKSYrqGVEqVNOMYuTl9oJfg1El9xxxgsnCosvhXid2gkBoZcr WJEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="KWmY1/MT"; spf=pass (google.com: domain of 3avh1xaokcgyerhvicorzpksskpi.gsqpmryb-qqozego.svk@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3AVH1XAoKCGYERHVIcORZPKSSKPI.GSQPMRYb-QQOZEGO.SVK@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id e34sor1732830qva.31.2019.06.03.09.55.30 for (Google Transport Security); Mon, 03 Jun 2019 09:55:30 -0700 (PDT) Received-SPF: pass (google.com: domain of 3avh1xaokcgyerhvicorzpksskpi.gsqpmryb-qqozego.svk@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="KWmY1/MT"; spf=pass (google.com: domain of 3avh1xaokcgyerhvicorzpksskpi.gsqpmryb-qqozego.svk@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3AVH1XAoKCGYERHVIcORZPKSSKPI.GSQPMRYb-QQOZEGO.SVK@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=TMNTkBlmDGgOOZrctIfCYuVqOYCJYB+OoUZL57F6fkg=; b=KWmY1/MTf2lCSA8LP774r8p0/RElUafoWRXpiTV5M0FssBvd2DR+JnorkPH/h4Y5+f yR9XiiiNdq2i4QfOjofZ58b2UAQfK20Q+cucasNJuK58SVUF0twT9Bg5tEaVarSUnpM0 CkXfb2ETfWkZvMjhhmX2MfDgGW4xKH4IotNUPi45ZU95oK+BdGaJ73sBg/cX0kzx4m8b MubK1pKIg9ehFkgM51KidZa6DmQaV4zELWE1kuJ9QUfecA/WQ31VKLS+QtHdLvI4uobs geOOZXZ26xHTUKbG4mCrjgzhEEUQSTlmmrjiggpRSIEqoJXM210SSB6rrtJIQUmyJUQs 1hHw== X-Google-Smtp-Source: APXvYqyPiXiZoks5Ggp2WbCYXPXwRsXJyBinTtF4q2J+DeL6YZqEYLLUcsyCdMKT9rkSKMCpecR3goEaERoY/ZM9 X-Received: by 2002:a0c:d013:: with SMTP id u19mr1987564qvg.136.1559580929777; Mon, 03 Jun 2019 09:55:29 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:04 +0200 In-Reply-To: Message-Id: <4327b260fb17c4776a1e3c844f388e4948cfb747.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 02/16] arm64: untag user pointers in access_ok and __uaccess_mask_ptr From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. copy_from_user (and a few other similar functions) are used to copy data from user memory into the kernel memory or vice versa. Since a user can provided a tagged pointer to one of the syscalls that use copy_from_user, we need to correctly handle such pointers. Do this by untagging user pointers in access_ok and in __uaccess_mask_ptr, before performing access validity checks. Note, that this patch only temporarily untags the pointers to perform the checks, but then passes them as is into the kernel internals. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook Signed-off-by: Catalin Marinas --- arch/arm64/include/asm/uaccess.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h index e5d5f31c6d36..9164ecb5feca 100644 --- a/arch/arm64/include/asm/uaccess.h +++ b/arch/arm64/include/asm/uaccess.h @@ -94,7 +94,7 @@ static inline unsigned long __range_ok(const void __user *addr, unsigned long si return ret; } -#define access_ok(addr, size) __range_ok(addr, size) +#define access_ok(addr, size) __range_ok(untagged_addr(addr), size) #define user_addr_max get_fs #define _ASM_EXTABLE(from, to) \ @@ -226,7 +226,8 @@ static inline void uaccess_enable_not_uao(void) /* * Sanitise a uaccess pointer such that it becomes NULL if above the - * current addr_limit. + * current addr_limit. In case the pointer is tagged (has the top byte set), + * untag the pointer before checking. */ #define uaccess_mask_ptr(ptr) (__typeof__(ptr))__uaccess_mask_ptr(ptr) static inline void __user *__uaccess_mask_ptr(const void __user *ptr) @@ -234,10 +235,11 @@ static inline void __user *__uaccess_mask_ptr(const void __user *ptr) void __user *safe_ptr; asm volatile( - " bics xzr, %1, %2\n" + " bics xzr, %3, %2\n" " csel %0, %1, xzr, eq\n" : "=&r" (safe_ptr) - : "r" (ptr), "r" (current_thread_info()->addr_limit) + : "r" (ptr), "r" (current_thread_info()->addr_limit), + "r" (untagged_addr(ptr)) : "cc"); csdb(); From patchwork Mon Jun 3 16:55:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973267 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 01C4814E5 for ; Mon, 3 Jun 2019 16:55:37 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E34E627CEA for ; Mon, 3 Jun 2019 16:55:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D5F76285ED; Mon, 3 Jun 2019 16:55:36 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 626CF27CEA for ; Mon, 3 Jun 2019 16:55:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DE6F06B0269; Mon, 3 Jun 2019 12:55:34 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D4C686B026B; Mon, 3 Jun 2019 12:55:34 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B753B6B026C; Mon, 3 Jun 2019 12:55:34 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi1-f197.google.com (mail-oi1-f197.google.com [209.85.167.197]) by kanga.kvack.org (Postfix) with ESMTP id 8D9026B0269 for ; Mon, 3 Jun 2019 12:55:34 -0400 (EDT) Received: by mail-oi1-f197.google.com with SMTP id l12so5437508oii.10 for ; Mon, 03 Jun 2019 09:55:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=20y1HOjqXQjYCoZ3FMKXhe3A/P2l0vyHswuOkJrBoHc=; b=MkT8ci+2Cw6+uCgpUoHeYz4nagZ1hcl7Q/mMswC7D2Ty+nYL0UFKvqxdMNC/rSagmT zVyOMBfw0gv4B2UhPqxBegK03uZmxmM2IYnwi9BODeV7XZtR1c8RC4i6H+HTCbTUwU9l Q6/h30DDuhJgMNrwNekrdK5YAfVegnh2qxQ/4uKErhWbGLCFyyC6Zkql2zGIqlCd6ih8 Ji9akUx0Ilus7y/q734/hFvZkdJfHtLHDNSXUpXP8wUSXC7aFSiLqucZtxDSd2fmFwzb BDCQgZuB4wqTzypeQt+2JGHRL73Y/IFROAvji3r5npjWUyBdLgFK0kq+muX5UwQ7MHzj FZWw== X-Gm-Message-State: APjAAAV560QLBwBGqpNX2qAw9qU7dQyFbExu5LiSvxr91/osAzG9coka dRcEsJ6rOORx8uG01d3YLlZI89fBXTCG4TLQUYFws7dA0NCqZ83bGAKFkGgPriUAGy1x1UrmyjZ HAxsUHkQAeVB9tdhglBdFOagDzr1hKZvJs0+FK3sHQctwhf72wH870cO0ZTIXH3NXcg== X-Received: by 2002:a9d:6d8d:: with SMTP id x13mr1836499otp.6.1559580934128; Mon, 03 Jun 2019 09:55:34 -0700 (PDT) X-Received: by 2002:a9d:6d8d:: with SMTP id x13mr1836469otp.6.1559580933575; Mon, 03 Jun 2019 09:55:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580933; cv=none; d=google.com; s=arc-20160816; b=ZAkGf+NK6MbPIvWiq6XwGFbkYbtkPtXJk2T/tJ/pJ8AXqJhqzvold5bjZPYzrS7sYl IDp0eFhSZrEDRlSUkoH5yBxz3i4DuxMA/8rhd0ZeM2ND/jGQyp8PN/HvSl8MjRFf4DQk POJtb9le1nezXN84nZkll2rLZuPDrL17+HwpuekwvKYHD2F7VUoSnDC4ZmqGkeMmDg3+ +B2pjxoQDfx+Ku612i95sBDQ+rOnKsD9qh8lrccMamXJAOnj702Uz2V2qt41OymSfrh9 as/VhMr3QjIJRFhcHjIQ3aR8VLER6LxDatz3aKmMbfVimO8sWcQH27pIFcLzQ66yZhXK f/0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=20y1HOjqXQjYCoZ3FMKXhe3A/P2l0vyHswuOkJrBoHc=; b=fzTJW/VjDoHvRc0Hnc0yylgQ00tZrJLCB8d6jh1pILsRwrSdFWQ2MTuotxd7HVMeTW fXdyTSJQc6tjPnv0j46xiyBBReuB/aGXe5OwPMSgooOpeFyUbznBcTHLIoWNEIutcH6Q 4kwK2W6H3x4v7rTARdGJJL/YVEWAUDfPKAxN1yODEkS8Ub9ZaRFVpXyLJTva7QgNBFX+ ppZgENL+zSNjP07ORDcHknq2PhVbpn/XDvFor3+byK+XnAEnPh4XiZz2Xlp9TxNvgIek 3Q8yZM0T0THag6nCe2vwm3ZXLPBPKWMrj3T4zv8Df/MAtcMvwG+zFT+3KaxPnUSU52yr nUCw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=LglK5GIU; spf=pass (google.com: domain of 3bvh1xaokcgoivlzmgsvdtowwotm.kwutqvcf-uusdiks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3BVH1XAoKCGoIVLZMgSVdTOWWOTM.KWUTQVcf-UUSdIKS.WZO@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id n13sor1067139otf.39.2019.06.03.09.55.33 for (Google Transport Security); Mon, 03 Jun 2019 09:55:33 -0700 (PDT) Received-SPF: pass (google.com: domain of 3bvh1xaokcgoivlzmgsvdtowwotm.kwutqvcf-uusdiks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=LglK5GIU; spf=pass (google.com: domain of 3bvh1xaokcgoivlzmgsvdtowwotm.kwutqvcf-uusdiks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3BVH1XAoKCGoIVLZMgSVdTOWWOTM.KWUTQVcf-UUSdIKS.WZO@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=20y1HOjqXQjYCoZ3FMKXhe3A/P2l0vyHswuOkJrBoHc=; b=LglK5GIUUx/pUH7d33srSrOdoxDJcf6k8RPUUYHzql61oC+wNFESJd5PKVtebHfEHg K4rjnwnmDpgmbEhEStseFjNPEkvS+OI72qtgGhLpDEtxWhTvC3aTgCw5FcWPqu/H8YrI EsZSEg5fuJNLUqDTf1Y4yx6ojgmyvktu2GiIy1cCbapuFQIW/4LxM06f8+NqNbEgrvNM UWcCXb3C0eM0WuvLRS+mPfo8NHHpXEwFgU2WjcbOUcfYUWB+71yFOhi1U1i0mgtvoovy MA4D4byZDDLHTtN4PLwPL3K21wgXq++wadXcb7ohaA0PX/0lh5439vbzfphRZaAPKsSb Z6iw== X-Google-Smtp-Source: APXvYqzHKkB2rM9PXXWgsahc+U06gQo0dW3SgxcQRqFmx6XqPzOJDdvsIYpt6xPWzmKaja2zBdl1velx+1PVZjyJ X-Received: by 2002:a9d:62d5:: with SMTP id z21mr1888837otk.202.1559580933129; Mon, 03 Jun 2019 09:55:33 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:05 +0200 In-Reply-To: Message-Id: <14f17ef1902aa4f07a39f96879394e718a1f5dc1.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 03/16] lib, arm64: untag user pointers in strn*_user From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. strncpy_from_user and strnlen_user accept user addresses as arguments, and do not go through the same path as copy_from_user and others, so here we need to handle the case of tagged user addresses separately. Untag user pointers passed to these functions. Note, that this patch only temporarily untags the pointers to perform validity checks, but then uses them as is to perform user memory accesses. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov Acked-by: Kees Cook Reviewed-by: Khalid Aziz --- lib/strncpy_from_user.c | 3 ++- lib/strnlen_user.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/strncpy_from_user.c b/lib/strncpy_from_user.c index 023ba9f3b99f..dccb95af6003 100644 --- a/lib/strncpy_from_user.c +++ b/lib/strncpy_from_user.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -108,7 +109,7 @@ long strncpy_from_user(char *dst, const char __user *src, long count) return 0; max_addr = user_addr_max(); - src_addr = (unsigned long)src; + src_addr = (unsigned long)untagged_addr(src); if (likely(src_addr < max_addr)) { unsigned long max = max_addr - src_addr; long retval; diff --git a/lib/strnlen_user.c b/lib/strnlen_user.c index 7f2db3fe311f..28ff554a1be8 100644 --- a/lib/strnlen_user.c +++ b/lib/strnlen_user.c @@ -2,6 +2,7 @@ #include #include #include +#include #include @@ -109,7 +110,7 @@ long strnlen_user(const char __user *str, long count) return 0; max_addr = user_addr_max(); - src_addr = (unsigned long)str; + src_addr = (unsigned long)untagged_addr(str); if (likely(src_addr < max_addr)) { unsigned long max = max_addr - src_addr; long retval; From patchwork Mon Jun 3 16:55:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973273 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 108BA14E5 for ; Mon, 3 Jun 2019 16:55:40 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F111727CEA for ; Mon, 3 Jun 2019 16:55:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E06DB285ED; Mon, 3 Jun 2019 16:55:39 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6DD7027CEA for ; Mon, 3 Jun 2019 16:55:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C11F66B026B; Mon, 3 Jun 2019 12:55:37 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B9D866B026C; Mon, 3 Jun 2019 12:55:37 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A3C386B026D; Mon, 3 Jun 2019 12:55:37 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by kanga.kvack.org (Postfix) with ESMTP id 7A16D6B026B for ; Mon, 3 Jun 2019 12:55:37 -0400 (EDT) Received: by mail-qt1-f199.google.com with SMTP id w41so8084999qth.20 for ; Mon, 03 Jun 2019 09:55:37 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=luHVeQDtsejNe05MbpEHIJ5FAOspLsm1rW4+f3IOXdc=; b=enZ4DGD1OQO9omrg+lVYT4v5VgVH/ty/zmg9CtPmtkWMuMB7WKzwzyZdNAimIrGCSf h35oZcvwg2Q7cW2SlBeT08yoTjBXBVu3YG3m+3iSPOPbofftTOEE4lX0pH/lPSEHQ0QU fKS5s6Cohsvh8ah3khQtPL5nbaZoxn9hUpvip7MeDUzstmV+QIolEM6FhKkIcrXS8aqk kyiBUjgidRw5ZJPjXs3ZWiyCgKQFCyQOZ5UxwvCeBQY8e4HlOI460gAQLK84sBzdmtXj HM+7bWHW2vvwCMCxIXZCDn6k+rulOleJ3zME+i5Q03Xuak0AbabSottt0y7MEy0vuzdT ZyLQ== X-Gm-Message-State: APjAAAUBIXhRxdE3pCIBLOQBksIBT/tphSAf5Oi9o97mJ4wfwocavEMC p08eiLTJttbVsnRzbr5mmzZjUl+eniSIipUfqINjyaa/9M92nl7viJ9WzqUzkstAO5GSBEelHxu uBlBHR8w3YbJEtVNHBhgORA+hcWs4YwNaKwYSty4iNvLeL4UrWWdApDNUpXQHAGpCUA== X-Received: by 2002:a0c:b0c7:: with SMTP id p7mr22229664qvc.246.1559580937201; Mon, 03 Jun 2019 09:55:37 -0700 (PDT) X-Received: by 2002:a0c:b0c7:: with SMTP id p7mr22229627qvc.246.1559580936692; Mon, 03 Jun 2019 09:55:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580936; cv=none; d=google.com; s=arc-20160816; b=TyFv0fBkV7/74EwB1zsKuo61W0yaN9fZu+OrWOgEH0a62uNOTA1LAONP9gm7vqZaM9 B5qCHvlFcVCRW/rYZjy0PsQQT/YULk4dByVrtcNJ7bCJyef6sQ5K9ntHkWcL+95ZNseW 5xfcOjyh3Nb2lQEjXABUP3o2aYqw6ENkJwJQSg0PiPG1LSvBpqITdX5pb+yhl3fziYr9 vvM8YSMJ1ZhM2MvNCPVEnnLy3BdhSJxHMLTrqn6IkvLThZB6JyxbXY1GUzBfGLV70+yV DG78f7vOo9U8WN5KbugUsfL3cKWY+WRnmMt76Doc8EP2EvYK6TBBPlRoJdI6gIbgsftR YApw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=luHVeQDtsejNe05MbpEHIJ5FAOspLsm1rW4+f3IOXdc=; b=p6NSGM1T8/Qa5pCkwkmHvgUVSOtmK0ejNaQNW7guQoUdHjMCgZVz5SJaXUjp6rYmIP npvo4X0kLHJI4xL0EylH9eUPRv4od5JjtfPRGbj/qu3Cqq9YCb9lTRIi5NFY+GSDaQl6 0LxKkH0qwbyGTjf+vD8qkdEujdHTl+zZQAnp2kZvv44w4dTEH9urjZfSl6H4pJhFUjMF psC2VelHNIfQ6tezFiEo2KgxvYS6F3KfdwDy//EqtoRa+6g7bnPQ0poqvIl/JLX+W3lY n6CcK9sfReNRGokSPWFMSTKT4wNN4j0aq4CL8u9z/IF1dJrG79uO6Hg2HJwlglpl1jeq lzfw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ew82e7Nz; spf=pass (google.com: domain of 3cfh1xaokcg0lyocpjvygwrzzrwp.nzxwtyfi-xxvglnv.zcr@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3CFH1XAoKCG0LYOcPjVYgWRZZRWP.NZXWTYfi-XXVgLNV.ZcR@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id u17sor1680981qvm.7.2019.06.03.09.55.36 for (Google Transport Security); Mon, 03 Jun 2019 09:55:36 -0700 (PDT) Received-SPF: pass (google.com: domain of 3cfh1xaokcg0lyocpjvygwrzzrwp.nzxwtyfi-xxvglnv.zcr@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ew82e7Nz; spf=pass (google.com: domain of 3cfh1xaokcg0lyocpjvygwrzzrwp.nzxwtyfi-xxvglnv.zcr@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3CFH1XAoKCG0LYOcPjVYgWRZZRWP.NZXWTYfi-XXVgLNV.ZcR@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=luHVeQDtsejNe05MbpEHIJ5FAOspLsm1rW4+f3IOXdc=; b=ew82e7NzIq+8fpVjdyGeAl2NjSKK4p0nGZ5QsTZKvqtsLjuuAXvE063KXb+pD0cHy3 33+cPut/htgPr27GTzwOcJ20GBX2Ux9NssttTzwHChq9HvO45Yd1WsNH+qMaKhyQDDTc D+9zMoo5SrYePAGdOkXZXmMQhF2t0ypsOVpok1EOYB7sNktF/Rh9uldB40uKjOJapI1g axLdF69gRV4YSFbj/UQdIsHxS2aGe/kJaiIGVBIH5qRmQS2qsSWYGny0rQfE2+NQmVfF bjXTeOgusRer2Jz6pFuYk/PEgndLJQ02z9T1gNTKOM3uuFHRlwHl2aCc1w3EkCHnhf6g ZiTA== X-Google-Smtp-Source: APXvYqxWajnT2+NV3xTud3R56ZNhfS6I5UrUDe55n3y1jJe3OWUToUGKN+BmVqJ0YCPX/M4xXQWJhyPq+bf/72n5 X-Received: by 2002:a0c:ad23:: with SMTP id u32mr3896810qvc.39.1559580936412; Mon, 03 Jun 2019 09:55:36 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:06 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 04/16] mm: untag user pointers in do_pages_move From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. do_pages_move() is used in the implementation of the move_pages syscall. Untag user pointers in this function. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook --- mm/migrate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/migrate.c b/mm/migrate.c index f2ecc2855a12..3930bb6fa656 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1617,6 +1617,7 @@ static int do_pages_move(struct mm_struct *mm, nodemask_t task_nodes, if (get_user(node, nodes + i)) goto out_flush; addr = (unsigned long)p; + addr = untagged_addr(addr); err = -ENODEV; if (node < 0 || node >= MAX_NUMNODES) From patchwork Mon Jun 3 16:55:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973277 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id EE40D6C5 for ; Mon, 3 Jun 2019 16:55:43 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D94D827CEA for ; Mon, 3 Jun 2019 16:55:43 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CBDE7285ED; Mon, 3 Jun 2019 16:55:43 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 40E6327CEA for ; Mon, 3 Jun 2019 16:55:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A15BB6B026C; Mon, 3 Jun 2019 12:55:41 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 99FAF6B026D; Mon, 3 Jun 2019 12:55:41 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 81D256B026E; Mon, 3 Jun 2019 12:55:41 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-yw1-f71.google.com (mail-yw1-f71.google.com [209.85.161.71]) by kanga.kvack.org (Postfix) with ESMTP id 51EF96B026C for ; Mon, 3 Jun 2019 12:55:41 -0400 (EDT) Received: by mail-yw1-f71.google.com with SMTP id l184so13377157ywe.10 for ; Mon, 03 Jun 2019 09:55:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ai2S3fD+fr3rvCBmSGFiSuVAfjaa7sExxiTSFFYH1Fc=; b=GT/pzVVDrSG9mrDmJ7TwIIYbpdSFuSUkV2v38Mj+gWay3DadgXOLIbaGmtWIozrp8v UtYerLrUDbr91ZI6qwGVQV9NI9AeVn1Snv2vHbYlXvBVYLka8jkEU6mCijjOwNvc8Cd0 zuaJlssKjeh75Zg2AHfd6u7k2qh16z+eGs7kSCBsdFZBpnpfszGrv5hpOUjLbYLUqfpG P3cc5EVi6FsGj813VrnnxwecrlP07G8EbiVYj0t9TxTabB3H6rjnY1sXvma1iD7Ho+Cq 8DZTjFl0YpJDj2b+tandu+nPBMB55o3T4LNl7MsU+YktyDT4quq1Brd1XmU7q47b3YOG L7VQ== X-Gm-Message-State: APjAAAXEHNvttzQWLNJWqocvuYTiCkeogOOu801GMrd8aSKsOcAfbvXh //BII86dj1CRA5z6NXatrIPy+NYhgajTDe6S6kGCxoeruaRnsLl4q8agnqihZwAerGkkG4D3Z5w C0KTTV2taP44fpUXjyFGwp5NgOer1cuO/PPRONSYhInLQYBxSHJXxg0PC2iNT7Y8jcA== X-Received: by 2002:a81:5cd6:: with SMTP id q205mr13543304ywb.13.1559580941079; Mon, 03 Jun 2019 09:55:41 -0700 (PDT) X-Received: by 2002:a81:5cd6:: with SMTP id q205mr13543260ywb.13.1559580940103; Mon, 03 Jun 2019 09:55:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580940; cv=none; d=google.com; s=arc-20160816; b=YMLVaZ8wFqO1rbbm/Gb9eHC6Icsvtfc6WY4rEZeTp9djamhdHf5TOa2K63rR+rAVj7 zMGXqWja9nJ1zq9YjsM5o6ENCiY/ujydhl6mgm8b7ffYd468mE6w4P1Y8Su/wQQk/48R Lk/qjZkNit6GGNY89SyyiOb1KWbscV1ssD77QIyB+hv9w47aVj3gIey2qTzaB/CYC8HI XFAr3kUbheEWWpRka+k7D2TzQ6IBDrVAo7Rl7m4HfojB5/ycvpTf2eiPg9DIW8pqP3oh /UrI9LuP4zaEXo4s8S15xd427KrIY1X6ebS+/gGvQY/CjUVRPVWAA+MohktLPdptH/yt TZkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=ai2S3fD+fr3rvCBmSGFiSuVAfjaa7sExxiTSFFYH1Fc=; b=rgD85U/79oJn+kDB0FBVm2dNyTB+fLJIxA2EDCPFtLs9RKH4PBVgOGsmR2wGjd9plU k14TqUNIvchu/+kKt3BoiXSC+GQ+AYoF2jSUaeVgbww5US8g7l/uZkwJl7tWPt3AHJ8D fPfhOgPUlOoyaUmfwo5ulTrFqgSut7DbB77R3g2kixOpGL5c2lQ4p28r0CHzg7lf5JHU us+VALgs3RBfqBBNAttKaDwrXp7sRlMDJA8L1CUJUxrx//aK0xGW6D/UMn8N1X7m7kRo Fa9AqWh0ZzA5wu7KPVNx0A6FNoTSBiny08TU6uZvGIk6d6bbpiln9x/AkEa/j23j/yDv S5jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=IhwpzfJq; spf=pass (google.com: domain of 3c1h1xaokchaobrfsmybjzuccuzs.qcazwbil-aayjoqy.cfu@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3C1H1XAoKCHAObRfSmYbjZUccUZS.QcaZWbil-aaYjOQY.cfU@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id 65sor6512069ybg.46.2019.06.03.09.55.40 for (Google Transport Security); Mon, 03 Jun 2019 09:55:40 -0700 (PDT) Received-SPF: pass (google.com: domain of 3c1h1xaokchaobrfsmybjzuccuzs.qcazwbil-aayjoqy.cfu@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=IhwpzfJq; spf=pass (google.com: domain of 3c1h1xaokchaobrfsmybjzuccuzs.qcazwbil-aayjoqy.cfu@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3C1H1XAoKCHAObRfSmYbjZUccUZS.QcaZWbil-aaYjOQY.cfU@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=ai2S3fD+fr3rvCBmSGFiSuVAfjaa7sExxiTSFFYH1Fc=; b=IhwpzfJqwE3DvUc/g2ohuoF7FRDSV+OKLdbdm3aHJhyQC5R8qffzGm3GUGDEK5mLGU HwRFraAw3ADQD0MAJJ3addDW9VF2xcSR/1cU+MqYWb30fZYz6OI+lqi9l0mvrBzJRKlx 9Jf/vJ7t9tP8BgDAD/yBWpZTteEGqZVu6BQfOgaOZ55GquSpR/7KRV6XVaghO9dlfSJI nnlViXK79lK70wRQBUW327/n/PMH7XujjWiQLfV9EFwKMzG6uOgMIpIPl3C2s4DgbvSu MCtmUckwctT1sQWlCUv7u3dxJmI+R7ltNLatQs+ATRBm1UQXWv9Bi0Pz/MXuzZkI0IoN 5eSw== X-Google-Smtp-Source: APXvYqyU8lBI93nJuhlJYUnIY7lf1oCA3Bdyf6XCo68IA8G3gKcVv3P8yXxzoFzeAZRqfZIBiTZMwuBdZZXNUsQZ X-Received: by 2002:a25:bfcf:: with SMTP id q15mr11764130ybm.453.1559580939725; Mon, 03 Jun 2019 09:55:39 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:07 +0200 In-Reply-To: Message-Id: <045a94326401693e015bf80c444a4d946a5c68ed.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 05/16] arm64: untag user pointers passed to memory syscalls From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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: get_mempolicy, madvise, mbind, mincore, mlock, mlock2, mprotect, mremap, msync, munlock. Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook Reviewed-by: Catalin Marinas --- mm/madvise.c | 2 ++ mm/mempolicy.c | 3 +++ mm/mincore.c | 2 ++ mm/mlock.c | 4 ++++ mm/mprotect.c | 2 ++ mm/mremap.c | 2 ++ mm/msync.c | 2 ++ 7 files changed, 17 insertions(+) diff --git a/mm/madvise.c b/mm/madvise.c index 628022e674a7..39b82f8a698f 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -810,6 +810,8 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) size_t len; struct blk_plug plug; + start = untagged_addr(start); + if (!madvise_behavior_valid(behavior)) return error; diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 01600d80ae01..78e0a88b2680 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1360,6 +1360,7 @@ static long kernel_mbind(unsigned long start, unsigned long len, int err; unsigned short mode_flags; + start = untagged_addr(start); mode_flags = mode & MPOL_MODE_FLAGS; mode &= ~MPOL_MODE_FLAGS; if (mode >= MPOL_MAX) @@ -1517,6 +1518,8 @@ static int kernel_get_mempolicy(int __user *policy, int uninitialized_var(pval); nodemask_t nodes; + addr = untagged_addr(addr); + if (nmask != NULL && maxnode < nr_node_ids) return -EINVAL; diff --git a/mm/mincore.c b/mm/mincore.c index c3f058bd0faf..64c322ed845c 100644 --- a/mm/mincore.c +++ b/mm/mincore.c @@ -249,6 +249,8 @@ SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len, unsigned long pages; unsigned char *tmp; + start = untagged_addr(start); + /* Check the start address: needs to be page-aligned.. */ if (start & ~PAGE_MASK) return -EINVAL; diff --git a/mm/mlock.c b/mm/mlock.c index 080f3b36415b..e82609eaa428 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -674,6 +674,8 @@ static __must_check int do_mlock(unsigned long start, size_t len, vm_flags_t fla unsigned long lock_limit; int error = -ENOMEM; + start = untagged_addr(start); + if (!can_do_mlock()) return -EPERM; @@ -735,6 +737,8 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) { int ret; + start = untagged_addr(start); + len = PAGE_ALIGN(len + (offset_in_page(start))); start &= PAGE_MASK; diff --git a/mm/mprotect.c b/mm/mprotect.c index bf38dfbbb4b4..19f981b733bc 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -465,6 +465,8 @@ static int do_mprotect_pkey(unsigned long start, size_t len, const bool rier = (current->personality & READ_IMPLIES_EXEC) && (prot & PROT_READ); + start = untagged_addr(start); + prot &= ~(PROT_GROWSDOWN|PROT_GROWSUP); if (grows == (PROT_GROWSDOWN|PROT_GROWSUP)) /* can't be both */ return -EINVAL; diff --git a/mm/mremap.c b/mm/mremap.c index fc241d23cd97..1d98281f7204 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -606,6 +606,8 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, LIST_HEAD(uf_unmap_early); LIST_HEAD(uf_unmap); + addr = untagged_addr(addr); + if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) return ret; diff --git a/mm/msync.c b/mm/msync.c index ef30a429623a..c3bd3e75f687 100644 --- a/mm/msync.c +++ b/mm/msync.c @@ -37,6 +37,8 @@ SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags) int unmapped_error = 0; int error = -EINVAL; + start = untagged_addr(start); + if (flags & ~(MS_ASYNC | MS_INVALIDATE | MS_SYNC)) goto out; if (offset_in_page(start)) From patchwork Mon Jun 3 16:55:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973281 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A9BDB14E5 for ; Mon, 3 Jun 2019 16:55:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 94AD12873A for ; Mon, 3 Jun 2019 16:55:46 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 87E7728741; Mon, 3 Jun 2019 16:55:46 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1BDA62873A for ; Mon, 3 Jun 2019 16:55:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6BB726B026D; Mon, 3 Jun 2019 12:55:44 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 6454D6B026E; Mon, 3 Jun 2019 12:55:44 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4E81F6B026F; Mon, 3 Jun 2019 12:55:44 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by kanga.kvack.org (Postfix) with ESMTP id 204996B026D for ; Mon, 3 Jun 2019 12:55:44 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id 37so8093618qtc.7 for ; Mon, 03 Jun 2019 09:55:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=8pgHCk5wEiyaTFCxwJKfncM1f+2WF9g+TqLFqNfWufQ=; b=c4CPXdq0RNhg1puIv09xLqmHoakkNciK39a3s9cwF1YeGGAyNhMTO7emNZSiwngvtu yUnlHK8ordTe0D4QeDvoFYjxA8va52izrUJzXGRR0KkU9ki7VT1+EJIrm7Cn0fc+BIPd uPL7YeK3XQ+RsUf77o+Iq7kJEkFRAfdJ/qGUEszxSIm8slosZIpizER3y+MqgGTQEYTN o6m1v9hpTf0FpMZ5trs/V0q7kyunZD3AeJ8iSwPWId5iUuIHjeEFvqAr1Veih2NNYNcH psNOL6MbvJLnE4/8X5Gu/dsJBWde1S7N8semMyV5YF3+K5Am5tByXKf6hMxl9EcxRKXa WKhA== X-Gm-Message-State: APjAAAUUAyaQs1mBgoEZxfOQlfKAGJ3rW2rIFnI5Umnhz60ceRv3xrF2 HRNysoM0s2AEBpshePl1gcYqW31hOkxmLVhwYQa0DGw50F/mhzOcKJvJ/ftvw4Fwaqsd3p2xSFr QGVYtbEOm3+ZiPYeznd8Vh55vCfzwTBT8FC/tnraAkLj2GgOLkvQwtnIu3f/rkoaLkw== X-Received: by 2002:ac8:124c:: with SMTP id g12mr11477513qtj.57.1559580943870; Mon, 03 Jun 2019 09:55:43 -0700 (PDT) X-Received: by 2002:ac8:124c:: with SMTP id g12mr11477473qtj.57.1559580943228; Mon, 03 Jun 2019 09:55:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580943; cv=none; d=google.com; s=arc-20160816; b=DGZbfKQ0zJrM2C4IporOa5apF6wG/iVQARhAsGS1KPJEsm5i/EkhtuEvummtbnrvw0 dYYX3PFsFa1mI53kRo3oSVLcQHv7XoXmJYcwdNJ0irv9A/5PTZ5iQIivkuTj0BKbLSp0 ue7kqmF2XDhh6JVFu2GrrT1aChn2UuvXXmSKwHczb8XAss4SDLSRK5j36uqSHnvLeXED Q+d5JFqNHMLvuuTK2//Zm8G6tqMUUYNreK6vMHGfOB2csPvfJq9v7eCdpJBsceSdE2J1 SPwg03XI1tHKP4onz+VMdbo1hoaSI6qzHD2fsRCsTFlWpBtUNa8yQNf0t69Arb1eurGS 8z/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=8pgHCk5wEiyaTFCxwJKfncM1f+2WF9g+TqLFqNfWufQ=; b=JfyGK5nf2kgK6ZyLoeBb+g0E243xSjA7GUDcQyc6ZOBf4MVBq02eQ3FukHvY+FHKo6 vlrZ6uPbIhUCdbbH2+9IBA8xGjdfCfWXj1Gi/KnBg7CBTgAKcINMnkfNWCYzjVKvic2S cfeQn4nJK604gkcnNKJIOzEyhiTZFo7chdMlv3WhqS3R6DnrtcqEqcXubVSwCMtXGgVf Hj2ejiG+7qOlTKUdt93fZUb49YbNAt1Y6dT6+hnTUxEozqFe+VntA/T+EuZUOzpn5H3q ItFJurWWocuFVAzsFJ6ZxFbasOK4TYha2obYu8Z59BmLUsXD3Hxbbagc8Of7jnLg0LjH WR0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=eM3yvxS7; spf=pass (google.com: domain of 3dlh1xaokchmreuivpbemcxffxcv.tfdczelo-ddbmrtb.fix@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3DlH1XAoKCHMReUiVpbemcXffXcV.TfdcZelo-ddbmRTb.fiX@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id t10sor1716917qvm.12.2019.06.03.09.55.43 for (Google Transport Security); Mon, 03 Jun 2019 09:55:43 -0700 (PDT) Received-SPF: pass (google.com: domain of 3dlh1xaokchmreuivpbemcxffxcv.tfdczelo-ddbmrtb.fix@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=eM3yvxS7; spf=pass (google.com: domain of 3dlh1xaokchmreuivpbemcxffxcv.tfdczelo-ddbmrtb.fix@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3DlH1XAoKCHMReUiVpbemcXffXcV.TfdcZelo-ddbmRTb.fiX@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=8pgHCk5wEiyaTFCxwJKfncM1f+2WF9g+TqLFqNfWufQ=; b=eM3yvxS7rzZ2nnFYrRtwMpVwIimBA7OeBVGUKG05qqQOYpi+Zis4iOHoCqOn+3sjDh 2SabES8eFCAsnon36EZg8qxjmj+CW/08eSPui+O8M8q9qj9EihXzk/kg7mFnv1ofmO2L 6gdrPpvdTVeWEXirSohkSFcGd3CTquZjzaE1d3uIrVhOjCiqBdkigRuAKI8/ID1Mi6ud zk8tRRsd3G4px7QGEmRqWs1oq4KZBZQ84TPIW2/PRqcP/P9TeozrBt0HPw3seUNx6jqU wgzokqzg3Z9TB08A/q6k7ggwnJy6GtgW83uc4Qh4qCVWwdITo0WCqdd0x9WCtndSuvUL /u8A== X-Google-Smtp-Source: APXvYqyNatgo8rHVRn4VlhemarHIUF3AdcvyBy1EVpeL8RHKUhqmEsOqMc7TMbe6ArCDJ95BM6gVWf7qKnPTt9YN X-Received: by 2002:a0c:9233:: with SMTP id a48mr6236042qva.66.1559580942841; Mon, 03 Jun 2019 09:55:42 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:08 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 06/16] mm, arm64: untag user pointers in mm/gup.c From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. mm/gup.c provides a kernel interface that accepts user addresses and manipulates user pages directly (for example get_user_pages, that is used by the futex syscall). Since a user can provided tagged addresses, we need to handle this case. Add untagging to gup.c functions that use user addresses for vma lookups. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook --- mm/gup.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/gup.c b/mm/gup.c index ddde097cf9e4..c37df3d455a2 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -802,6 +802,8 @@ static long __get_user_pages(struct task_struct *tsk, struct mm_struct *mm, if (!nr_pages) return 0; + start = untagged_addr(start); + VM_BUG_ON(!!pages != !!(gup_flags & FOLL_GET)); /* @@ -964,6 +966,8 @@ int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm, struct vm_area_struct *vma; vm_fault_t ret, major = 0; + address = untagged_addr(address); + if (unlocked) fault_flags |= FAULT_FLAG_ALLOW_RETRY; From patchwork Mon Jun 3 16:55:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973285 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id A81A315E6 for ; Mon, 3 Jun 2019 16:55:49 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 94AB52873A for ; Mon, 3 Jun 2019 16:55:49 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8850F28741; Mon, 3 Jun 2019 16:55:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1D86A2873A for ; Mon, 3 Jun 2019 16:55:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7804E6B026E; Mon, 3 Jun 2019 12:55:47 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 6E09E6B026F; Mon, 3 Jun 2019 12:55:47 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5ABA56B0270; Mon, 3 Jun 2019 12:55:47 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by kanga.kvack.org (Postfix) with ESMTP id 268556B026E for ; Mon, 3 Jun 2019 12:55:47 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id c48so8101776qta.19 for ; Mon, 03 Jun 2019 09:55:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=/k2k5Ar8aCCQf+9D9Tu+JwXv9rH7AXQNa2sn1Y51ZQ4=; b=VErLUUU6FckLEzlTmTUnpaC6VTTSvAzaiAmEA0W3ZT/r8BMvDCpw04+pv9nXxCpM6L DSz3NbepXLLePsIrl5MXS7YfNOt0p+rZanfW0Kg52p52Q0Rq41XGLNaJDMvq/zDmNY9g g934UsGnN4b//g0LR4jOeq+pC9YT5FlWyvRUhApC1vWm1ME/imxOuiefodLPacAFxZbE wVhlWsiEHVHbh+lQuNnN//Dfs14LLhiWkB/AtEOlsqqdLgWCqrNvtgGq/A/yInArBOK5 bvYfFpr8h73Q9YdxmnjqZ2e08ZxnZRoiQj9jcf++Rs7VKcBP/+T508kj37bTJp6mUZEz 0qlA== X-Gm-Message-State: APjAAAU9/mfrtpkVBVYXram6HitC+24PE1LrRQJ0nDVdt/JIRJtjGS56 AKeIsfqAKwvyvYV0GdU+EMRqa+XD0wIkBfbb7Z9Q4TYfWKUlffOa9Duv/z2uXQGdHzIAiTNuR2B W0sp+L9T9amL3r1HnFGXV0F6GI2k8wTYaYjNueyRh8s0NpXFxBdL7rSJj46lcXwjLZQ== X-Received: by 2002:ac8:16ac:: with SMTP id r41mr24250433qtj.346.1559580946855; Mon, 03 Jun 2019 09:55:46 -0700 (PDT) X-Received: by 2002:ac8:16ac:: with SMTP id r41mr24250393qtj.346.1559580946354; Mon, 03 Jun 2019 09:55:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580946; cv=none; d=google.com; s=arc-20160816; b=obTGQ6VY4CePBySlovjZRk2NNHNGfs1nHCGhgmXK9frzWtyBvQi6wRD7G7PUsZb/y+ 5WBKmAmYecaqZn9w/PovHtosWzTP94kNdEFxzyazvu/yxaGMhzigSY9MfeffpU/0BHs1 3HMGorls1ycjZTPYz2ZWOu8icr3E+WlMPJeT34C9YAAh24YUljzLp5uhp79SzhI0EYNI OqMF5KimACGOfSG76ClLIk39CTmKp2QmtoeNB2UFJ54GTJH4Bhhy0zO62YJVsL2HwNMM buwFp4x9Nh0T0U4WAQNAL2GmULW/MDaPeT8lcp+DcOB7GCen529Je7AndvWBM7xvA92e URwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=/k2k5Ar8aCCQf+9D9Tu+JwXv9rH7AXQNa2sn1Y51ZQ4=; b=A5nGC3/ek2qSQlvyvRXzQbFKN1wgb/jqDUbW8Bc4WiwSdHYFcHn5mVb+8QKiMsWamu foTbHYF/sVU6j/UFkAzNyHhkcWw5jwv0hiyUCg7h3OdBCy9dFWC/iZwAwqHElEsqObh8 b0WWK5WBmcMwyH2nbs73tE28f53B3Mv7TJzi2NKbDYiXhl0jZII79QXpBqziC2inu2sN 5CK1RnpXVvCIunMtOqWyPYAVgYGKOHbO8IBzD5id8faar6PlZhz+45EyE+8kduXustGX dcYrh3YJm8SkemcYfaRP/ZZ+56IY7LaM0K5JX0KVMyCiKB2kAOW7b2RX63x22gdf6CTy 7vVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=MjNLlQZl; spf=pass (google.com: domain of 3elh1xaokchcviymztfiqgbjjbgz.xjhgdips-hhfqvxf.jmb@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3ElH1XAoKCHcViYmZtfiqgbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id x27sor1714161qvf.38.2019.06.03.09.55.46 for (Google Transport Security); Mon, 03 Jun 2019 09:55:46 -0700 (PDT) Received-SPF: pass (google.com: domain of 3elh1xaokchcviymztfiqgbjjbgz.xjhgdips-hhfqvxf.jmb@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=MjNLlQZl; spf=pass (google.com: domain of 3elh1xaokchcviymztfiqgbjjbgz.xjhgdips-hhfqvxf.jmb@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3ElH1XAoKCHcViYmZtfiqgbjjbgZ.Xjhgdips-hhfqVXf.jmb@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=/k2k5Ar8aCCQf+9D9Tu+JwXv9rH7AXQNa2sn1Y51ZQ4=; b=MjNLlQZlNit0qhAOpvEzanta6aMm/HnKYesq3iqhkQTbbVYKucWsuURNV/pZ0fdIgr 1ylaKkgQteB/frXQLyR10kOE8zU+ZyRD8TpKfDcQZGCnFFNsjXxOEavz8cj17GKJRCyB J2x5kMGyd9MMKiWAlK7ocfm8aGFbZzr0Rdh98fVFvwjIhfiuVXpvvAuYt2OnDM/XCpZC VWufB4qSPQOsK3r33NC8xnn++nCnsO734V+hLJqo/vulWZ1igyxoTiVpIzF6BQyRc9HL xirXgN3vt5YoqdUqHeQ92rql4obffE5Q5C/gZo+mx+uqLs8kG3FDDu05FA2VnYDjJKl9 Kwrg== X-Google-Smtp-Source: APXvYqwZjlBwbqsUyeG8rZrRtMFJQ4x0s68oHB37CApZiK1GoR+JjJPXBY4ob8DyF+o+kojgj7/dpioneK7jLRPa X-Received: by 2002:a0c:b5c5:: with SMTP id o5mr3845483qvf.6.1559580946056; Mon, 03 Jun 2019 09:55:46 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:09 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 07/16] mm, arm64: untag user pointers in get_vaddr_frames From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. get_vaddr_frames uses provided user pointers for vma lookups, which can only by done with untagged pointers. Instead of locating and changing all callers of this function, perform untagging in it. Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook Acked-by: Catalin Marinas --- mm/frame_vector.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mm/frame_vector.c b/mm/frame_vector.c index c64dca6e27c2..c431ca81dad5 100644 --- a/mm/frame_vector.c +++ b/mm/frame_vector.c @@ -46,6 +46,8 @@ int get_vaddr_frames(unsigned long start, unsigned int nr_frames, if (WARN_ON_ONCE(nr_frames > vec->nr_allocated)) nr_frames = vec->nr_allocated; + start = untagged_addr(start); + down_read(&mm->mmap_sem); locked = 1; vma = find_vma_intersection(mm, start, start + 1); From patchwork Mon Jun 3 16:55:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973291 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 97E2314E5 for ; Mon, 3 Jun 2019 16:55:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 850E22873A for ; Mon, 3 Jun 2019 16:55:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 78F3B28741; Mon, 3 Jun 2019 16:55:53 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0970A2873A for ; Mon, 3 Jun 2019 16:55:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 624586B026F; Mon, 3 Jun 2019 12:55:51 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 581B46B0270; Mon, 3 Jun 2019 12:55:51 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 3FB526B0271; Mon, 3 Jun 2019 12:55:51 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ot1-f72.google.com (mail-ot1-f72.google.com [209.85.210.72]) by kanga.kvack.org (Postfix) with ESMTP id 16A586B026F for ; Mon, 3 Jun 2019 12:55:51 -0400 (EDT) Received: by mail-ot1-f72.google.com with SMTP id b64so6122383otc.3 for ; Mon, 03 Jun 2019 09:55:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ZBmZ0AJkpI6Le2BTudY9LfSDHiJInTNRilsGVrjkAC4=; b=WBDbfIHuyjlKe9ZVujlTxntZ/G50jjVanPZIeYF7xCe2crBuuOQpnurw9I3bpzHUHa Mgsnj2tGwWKCdyXHVW86xVvgk0gEDVAQt3QokbgJ6HehMTZtx7MEnYeLX+Rg0a1ICudg 9RVcREhQRaNmyvURsMhvgy8aPIlHx21DZFrVnm+Ovi5Vrqx2GiHEdEizisvbwWbGIzZe zPGZDjqsuK9VwaH6k5UuAl2RlEf6GLDYpA0z31GRBtyW2flc/QSYORQ+l71OU20iZAsf WES+LHr9TdM3czhGFlSAIhwYp9nvZXd4+/IA50xsmajNN8Dw4e/R/bTGBDiaw3jcXzgp /Qyw== X-Gm-Message-State: APjAAAUg8qB+uLLT3gnrNOO3T8HTmsX8MyYAui8ZX0Kxar05Z8GHWDfJ enxUZFxsNLm8qvVepdJsjNgmWq4/vij6ovl8ifDJnsSa8RLXD9gNdpY7jVbIRx+PtElRw3MQSy0 dJzdDOu1u7t4f24t7zdgQBMxAwC06TyDuAH8YIxugVnQ2fFgY5dUU7eG5klmr9uYp1g== X-Received: by 2002:a9d:7147:: with SMTP id y7mr215130otj.152.1559580950755; Mon, 03 Jun 2019 09:55:50 -0700 (PDT) X-Received: by 2002:a9d:7147:: with SMTP id y7mr215100otj.152.1559580950153; Mon, 03 Jun 2019 09:55:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580950; cv=none; d=google.com; s=arc-20160816; b=Q8pFjxEIzaB3tu5v7rdwbfC5gc1oP1P5NATXOBLeLxTwHru4zB3Z0EfC5fsTH22jvy SOi/rmeMmLPwaiDiJl81UKj+8RHyUmSuu7ZhiPoQ92z5qqxktrev8NbTecekv2DH+5aX k7BzfPB5b7jDa55CKBixfwABS9FGbhm5hqjJbVyTMs9zrE2eLBeO5iCwypElFfBO11SF euNrBjDXCOIyMnM88oVS4Yerz4uBn2kvAFTK3I7q0mRb4zoFGFMjRUf8BHDiEAZVfIHQ CX8uj9uy7+LkzfdTRrovIoK8U3MYXTELlMGpVdGc5Tg8WazLUZCDXYrFp065C/FbAHut iikA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=ZBmZ0AJkpI6Le2BTudY9LfSDHiJInTNRilsGVrjkAC4=; b=ZxiHVX4AOvvUh9eZdNoq9aOtH6DrL8PTZN/OVeqA8pQ1m+KJBujNy+p6rmm3TE/R4X Zbpqctt60IzhqW54qW7U0CmKXF3V691p7TWWRZYfTzY/jvTpnLga8FpWp7dgoCf2e4G9 E6OLH1Tvbe4HaYkgX+FO+Ojyo+RglnSE0uYYwMNavwh6ZBMi2JKuVxPMVNGCOksSMCJq zA6jg6Wx6gJb69dKuZXPN+OZKoIQQ3YzMjicQc3NRCvqy0RLhhW5B7kV8pQsPOFr5pW1 4+T9DZcBj9YmpDIxMuM2aTZdeiDP3JAFHnXeQjdBtUI/Rb9iEagNqnPkvaD2j3nCfY0b glWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=URpy1zkC; spf=pass (google.com: domain of 3fvh1xaokchoylbpcwiltjemmejc.amkjglsv-kkityai.mpe@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3FVH1XAoKCHoYlbpcwiltjemmejc.amkjglsv-kkitYai.mpe@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id d10sor5724388oih.81.2019.06.03.09.55.50 for (Google Transport Security); Mon, 03 Jun 2019 09:55:50 -0700 (PDT) Received-SPF: pass (google.com: domain of 3fvh1xaokchoylbpcwiltjemmejc.amkjglsv-kkityai.mpe@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=URpy1zkC; spf=pass (google.com: domain of 3fvh1xaokchoylbpcwiltjemmejc.amkjglsv-kkityai.mpe@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3FVH1XAoKCHoYlbpcwiltjemmejc.amkjglsv-kkitYai.mpe@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=ZBmZ0AJkpI6Le2BTudY9LfSDHiJInTNRilsGVrjkAC4=; b=URpy1zkCsiHDZT4QO7sl51daLEh3EGQ+QBRWhBXCE891aX0bBPmoAKSOA31jx1eR/L lVC6wRB0VJkhYxePvRUt+LMH36W5FFHQFgoa3GPev4OVYVi3rHZ7c3DIf31iffj+WRWq O/UwDncv5Fut/rLbuSahvZjC3AOwYT8i5PrP8W6A3ApbgszBZnpxe6Ijm9sVziVKebM1 iMXDrWTNGRgrpGSzVkD4uXSftJythbi88SDUBif5NioLplX3HzpUrRyFyzSWH4dNAKRr WMIQ2F6id96lYcVo97o9s2zuDCTDHymNEv75yNnQamJ6cKIMShowZNQgGMTsd3D7DLBr FGuQ== X-Google-Smtp-Source: APXvYqy+jD2zPLosNFGdbJ9ezUNMRGpcmbF5VcOnmGNGlPs/hbYWUHg1PJfAxR5NSiop2ABNMtv5Bkf3tC6COzAd X-Received: by 2002:aca:4c3:: with SMTP id 186mr1626180oie.12.1559580949610; Mon, 03 Jun 2019 09:55:49 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:10 +0200 In-Reply-To: Message-Id: <51f44a12c4e81c9edea8dcd268f820f5d1fad87c.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 08/16] fs, arm64: untag user pointers in copy_mount_options From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. In copy_mount_options a user address is being subtracted from TASK_SIZE. If the address is lower than TASK_SIZE, the size is calculated to not allow the exact_copy_from_user() call to cross TASK_SIZE boundary. However if the address is tagged, then the size will be calculated incorrectly. Untag the address before subtracting. Reviewed-by: Catalin Marinas Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook --- fs/namespace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/namespace.c b/fs/namespace.c index b26778bdc236..2e85712a19ed 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2993,7 +2993,7 @@ void *copy_mount_options(const void __user * data) * the remainder of the page. */ /* copy_from_user cannot cross TASK_SIZE ! */ - size = TASK_SIZE - (unsigned long)data; + size = TASK_SIZE - (unsigned long)untagged_addr(data); if (size > PAGE_SIZE) size = PAGE_SIZE; From patchwork Mon Jun 3 16:55:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973299 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 8327D1880 for ; Mon, 3 Jun 2019 16:55:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6927F28684 for ; Mon, 3 Jun 2019 16:55:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5D2E52873A; Mon, 3 Jun 2019 16:55:57 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D4F7D2873C for ; Mon, 3 Jun 2019 16:55:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DE73F6B0270; Mon, 3 Jun 2019 12:55:54 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D721C6B0271; Mon, 3 Jun 2019 12:55:54 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BEA886B0272; Mon, 3 Jun 2019 12:55:54 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by kanga.kvack.org (Postfix) with ESMTP id 953FC6B0270 for ; Mon, 3 Jun 2019 12:55:54 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id 97so8085979qtb.16 for ; Mon, 03 Jun 2019 09:55:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=V8W9/R1INxLH8IpjzMBaweiOjVPk4ghaGGjHQk6nF0Q=; b=VasU/gcF5+i0wWIOAgSv/rVqIP6Qv93vY6OSYelSHMOHi+YJf07SG7Ajt63j6tyiPa yKYRa7vOtU05eXX0jvBo/0ySndBxSHfBcssRBbIPt3Sthlx6h/NRLaU2E791OVu8IryK gHwyT/nBlrQAGAcKCTYdQeaWyZDYYx7eA5o8wMblT/3XpNqEsX5PmleqJ0nuALmlDRCS oBxSCUhIZwAVYJIn47EtNmprLQQegOZEfLQVX0mWs7Ycko46OXxVp2fDGFK5nvGoj0u1 /FRbh48JUaHfJ5GmQM/LzEGTwDEsvBNjnzhQugRbs9DCAbnOs4ImC9ir85lo3OamvwV3 YU+g== X-Gm-Message-State: APjAAAWWgNc/ORC2GAYA2wmjZXH4oaPNgbh3f+kmqGg7QgK9MsXT5u8J go+WgjTztXLtTE5nMAKENrqNBy7+8LPAGS+H+vvDBkXQ/D5Yw/pO0RRAb3otZqpRABNKsW1Woek S6CbX4G4E6jZlk0x95VwG8D9tdFXZgYI1uLIp9AYEua7aLaOsfnXdQAlrlneoVA1fbQ== X-Received: by 2002:a05:620a:1497:: with SMTP id w23mr23083733qkj.49.1559580954304; Mon, 03 Jun 2019 09:55:54 -0700 (PDT) X-Received: by 2002:a05:620a:1497:: with SMTP id w23mr23083712qkj.49.1559580953741; Mon, 03 Jun 2019 09:55:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580953; cv=none; d=google.com; s=arc-20160816; b=ltSpArDGJ/xv3eQhXKYWCmizoAvOAhi5USXdkugs1n9zdJ0tjIgBCYXR3yVcdxkgs8 gQrnP+3lL6MQJnCEWh68d8VGXpf6Hb0v1eX/PLGbDZGOBXoEtuid/MgKRKlfXkfBogFa mEUiaBfB8FyHe522DedR9N2LLCbzqQcUSimiyYSDx/hywSDEz4R7WGg7bFpSWt4gNHD0 ff0MBOME0kwxlqUK3y2JkUSijrEtgHOrCQESGgSb5TDTYhW7QeV3KSbgX21cubsWXpmw vh5OqhGHpXtqJ1CY9VK/v+O2XKFfL3l4/ukczeENQ03NGlgnpQs+uOctu1PzAae8ZAFg gnQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=V8W9/R1INxLH8IpjzMBaweiOjVPk4ghaGGjHQk6nF0Q=; b=qehjLtt7SYjpLaUApewpKJUmFxGCNMxLIR7aXrmWjnnl+bYaSaLNl3RORTZ+DkRwID w07MY37v/ir5AkLzJEDCbAgKlLmHSaAd2+RwK6e3n9RA4MxgElrRm0MA4pFQSVPx5VGv 1IerXwDq9FF6XqAwm1fMF5NJX5rxsvcHGDIoDphgMy8tiw+t0iEqZ8ceijIcFMZVSgfz Ek2psC1NtehL5B/a/fW2wD3+pyD/9hohGQLJSlvRUiavxbdb63YV6vzNPJEpcCSpCJQ4 994e+1DM/7Dm2kQMzlgWexSy7FY/kibV1ByjkTqJqCbsmZSJ9vDSpTP6Hmy6724OfHqf e/0w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Ic80Nhco; spf=pass (google.com: domain of 3gvh1xaokch4cpftg0mpxniqqing.eqonkpwz-oomxcem.qti@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3GVH1XAoKCH4cpftg0mpxniqqing.eqonkpwz-oomxcem.qti@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id d68sor1298848qkb.62.2019.06.03.09.55.53 for (Google Transport Security); Mon, 03 Jun 2019 09:55:53 -0700 (PDT) Received-SPF: pass (google.com: domain of 3gvh1xaokch4cpftg0mpxniqqing.eqonkpwz-oomxcem.qti@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Ic80Nhco; spf=pass (google.com: domain of 3gvh1xaokch4cpftg0mpxniqqing.eqonkpwz-oomxcem.qti@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3GVH1XAoKCH4cpftg0mpxniqqing.eqonkpwz-oomxcem.qti@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=V8W9/R1INxLH8IpjzMBaweiOjVPk4ghaGGjHQk6nF0Q=; b=Ic80Nhco3iRVjaadOA8+znksGsevCWKjr0xS5FrfRT68EY2GjH7FNqxQ/S059IWRME Uk1bw3K6alaW8N/9Rs9bh2+EZh8EcVJH3cxi1ame2GYHVGzkN7Qz1H1smlWX23XCNo3x XPf9GSBwjp2Wlg5+Uj+WrIp+Jk7K9IWrhUgFda1FHXXV316C7cTRBKd5zQOn+A1+5Aft F1iszJDrA1FKS5eHvaL17A52p/3BNscmam9+VyXB7pU/EsAF/YnBaqcEkTUbGMZM4HOi O4Y2Ewn60j/2WNgR2OxufWSoY1qQbeSPNPwvgeO0aN1frIK5bxzhsw5VzJiPVQL++TeN 2Fgw== X-Google-Smtp-Source: APXvYqxbJDGUw94i6RNaa88fy33raOhr5MIqE66YRUj/nWlTewQjYqVQIrvYFblxs7ri2FDDMOtmRTjTXzyL1IBV X-Received: by 2002:a37:6782:: with SMTP id b124mr6422877qkc.242.1559580953075; Mon, 03 Jun 2019 09:55:53 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:11 +0200 In-Reply-To: Message-Id: <7d6fef00d7daf647b5069101da8cf5a202da75b0.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 09/16] fs, arm64: untag user pointers in fs/userfaultfd.c From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. userfaultfd code use provided user pointers for vma lookups, which can only by done with untagged pointers. Untag user pointers in validate_range(). Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook Reviewed-by: Catalin Marinas --- fs/userfaultfd.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index 3b30301c90ec..24d68c3b5ee2 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -1263,21 +1263,23 @@ static __always_inline void wake_userfault(struct userfaultfd_ctx *ctx, } static __always_inline int validate_range(struct mm_struct *mm, - __u64 start, __u64 len) + __u64 *start, __u64 len) { __u64 task_size = mm->task_size; - if (start & ~PAGE_MASK) + *start = untagged_addr(*start); + + if (*start & ~PAGE_MASK) return -EINVAL; if (len & ~PAGE_MASK) return -EINVAL; if (!len) return -EINVAL; - if (start < mmap_min_addr) + if (*start < mmap_min_addr) return -EINVAL; - if (start >= task_size) + if (*start >= task_size) return -EINVAL; - if (len > task_size - start) + if (len > task_size - *start) return -EINVAL; return 0; } @@ -1327,7 +1329,7 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx, goto out; } - ret = validate_range(mm, uffdio_register.range.start, + ret = validate_range(mm, &uffdio_register.range.start, uffdio_register.range.len); if (ret) goto out; @@ -1516,7 +1518,7 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, if (copy_from_user(&uffdio_unregister, buf, sizeof(uffdio_unregister))) goto out; - ret = validate_range(mm, uffdio_unregister.start, + ret = validate_range(mm, &uffdio_unregister.start, uffdio_unregister.len); if (ret) goto out; @@ -1667,7 +1669,7 @@ static int userfaultfd_wake(struct userfaultfd_ctx *ctx, if (copy_from_user(&uffdio_wake, buf, sizeof(uffdio_wake))) goto out; - ret = validate_range(ctx->mm, uffdio_wake.start, uffdio_wake.len); + ret = validate_range(ctx->mm, &uffdio_wake.start, uffdio_wake.len); if (ret) goto out; @@ -1707,7 +1709,7 @@ static int userfaultfd_copy(struct userfaultfd_ctx *ctx, sizeof(uffdio_copy)-sizeof(__s64))) goto out; - ret = validate_range(ctx->mm, uffdio_copy.dst, uffdio_copy.len); + ret = validate_range(ctx->mm, &uffdio_copy.dst, uffdio_copy.len); if (ret) goto out; /* @@ -1763,7 +1765,7 @@ static int userfaultfd_zeropage(struct userfaultfd_ctx *ctx, sizeof(uffdio_zeropage)-sizeof(__s64))) goto out; - ret = validate_range(ctx->mm, uffdio_zeropage.range.start, + ret = validate_range(ctx->mm, &uffdio_zeropage.range.start, uffdio_zeropage.range.len); if (ret) goto out; From patchwork Mon Jun 3 16:55:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973303 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7E8C014E5 for ; Mon, 3 Jun 2019 16:56:00 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 68BFB2873A for ; Mon, 3 Jun 2019 16:56:00 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5B27C28684; Mon, 3 Jun 2019 16:56:00 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D6E7028684 for ; Mon, 3 Jun 2019 16:55:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B4F2E6B0271; Mon, 3 Jun 2019 12:55:57 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id A8D0C6B0272; Mon, 3 Jun 2019 12:55:57 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 842ED6B0273; Mon, 3 Jun 2019 12:55:57 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by kanga.kvack.org (Postfix) with ESMTP id 5A1E86B0271 for ; Mon, 3 Jun 2019 12:55:57 -0400 (EDT) Received: by mail-qt1-f199.google.com with SMTP id q13so4406349qtj.15 for ; Mon, 03 Jun 2019 09:55:57 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=QTQ4ZZ+1ONHvx3iNcSe/c62gqBzIbuX20WtdiRnopfw=; b=i1EtFGXOBObOD0zp7mAq9c3cfQqtlWfV0Phs+Zj5ommmvi+vibpelVFbD6Pc+aqozE CT69oZA5/jClUyCeH/IyhDeuGZ8o/IKEVQHr6srZBbOC7/Jikh1ua4VO6TabDK/3A7OK M9mXfEP7a/dm9Hnxn/nSKV23teLhngEutIsFS5x8gxssU6R/PLvScfXHbEMPgPiCJxcN NUa/b/BO6BqEc3nlRPUfk1FehhcyAlIyNHwoqOvqGhz3b8Xm6Qk67/JYgg4jgo0e09wV gTf57Pkyzf0mpx7XAwIRDDph6Q9Su250qz/euXTEpv7Sh5NQpyn6oROujWR8MBrMgH/s o2iQ== X-Gm-Message-State: APjAAAU7D1YqB0RxMwKG9B6yT6me73F20TMz7AQW9dMnvtaYFQ1Qj1Kv MH55KFjYMNudseOhCCrtYCXWADXysoIQ2jvlUFG6uefQsidjcb2u/vOcqtwzaSLcMLI58jyEbpO mR6pT1TnQVAoIwskxNjOSNKksze44Wq6T/ieFBlw599RyolDsLSqBomSlwnYsjDcKmQ== X-Received: by 2002:a37:de06:: with SMTP id h6mr3880633qkj.322.1559580957085; Mon, 03 Jun 2019 09:55:57 -0700 (PDT) X-Received: by 2002:a37:de06:: with SMTP id h6mr3880593qkj.322.1559580956572; Mon, 03 Jun 2019 09:55:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580956; cv=none; d=google.com; s=arc-20160816; b=m7SInABm/1KHhE0NLbrIJBvLtPpY1cx/PqyI9zxHlAIqKKoDFxOHTIDx2LQ+fxaM9Q 5iufnzWSDrFR2nePkIYPQKZEdD1yzTEBm79zmd1DDqGT5q556RABORe/cE4wnX94wq3q O+eZt+7xyYEz9hGW2Z1T3n+YzLY0arbEf8cuAwQ6NRK88QuwPB0nKFj6I1DZ15MvZDFB TFHJxtt00bs+umTQgF9oGVRGp033ju9oIZdxmUcIHCalKSWYUGqbMARkISx3RFuWFWeA 5ZSarbWmimft00raox6qANW9hNRZp9xg4uQGHffkm7ID2eozsAa7n35Qdul6wuDPYyCZ o2cQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=QTQ4ZZ+1ONHvx3iNcSe/c62gqBzIbuX20WtdiRnopfw=; b=kmM2rahryE4zeLtsos3cp5DStK5wRQonI91rlBoC4KPJLYL9h4XNUY0xt/ekVckjEc j/FFCzduPyYN7rDRYU1QSMf3hfGJkgW6BgJm9HloLJdaeq6HK+1bDJyYWA8CAS1nXv8s 9XaVulbWqokOwn+QPWL/cwk7XGC1WI4/O31gG16MhTh/8WcaV0SuID2eUrjeU2vCEMxx f39nmFAM3SPiBtNwQuy4I3qDm8QXZLVvUSHURCTo2zuXcGNGCaznNn3liCiv1RUMy+u8 eyRaZ/1uemxcO+1XFylC1fSMss580DIZYd32HgFsUkQFtZPcYYgJAr1b8kKVrWX14Jrc qGOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Iulw2LDX; spf=pass (google.com: domain of 3hfh1xaokciefsiwj3ps0qlttlqj.htrqnsz2-rrp0fhp.twl@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3HFH1XAoKCIEfsiwj3ps0qlttlqj.htrqnsz2-rrp0fhp.twl@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id w8sor1276048qkf.56.2019.06.03.09.55.56 for (Google Transport Security); Mon, 03 Jun 2019 09:55:56 -0700 (PDT) Received-SPF: pass (google.com: domain of 3hfh1xaokciefsiwj3ps0qlttlqj.htrqnsz2-rrp0fhp.twl@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=Iulw2LDX; spf=pass (google.com: domain of 3hfh1xaokciefsiwj3ps0qlttlqj.htrqnsz2-rrp0fhp.twl@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3HFH1XAoKCIEfsiwj3ps0qlttlqj.htrqnsz2-rrp0fhp.twl@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=QTQ4ZZ+1ONHvx3iNcSe/c62gqBzIbuX20WtdiRnopfw=; b=Iulw2LDXuMXrguiNT2nc8pImmlAd9SEaHxzy+PIXZoC7Ry1861+IgSJT7msXK0lxjW Stlg9JACJI0q7DDqW7dFD1lXLlRa2BWigOxwo5Vw8cFe6qNirKkII0FhPNgtUk9+cp1T aHJGoLoDr4Q8979Fk7TFLPwhp9/TzWuYwglUurKj3rFU9GpRJ5xL6D7/jxXgMSu4llum hXs/FNVkTTazIDAfHhBMirRaAiVUM4CzdwvnR1yvQzgHmFdNai1A63k4wvi7etXyFGuo QDD/dhSJypo/bxB/7BkdNMWk1BD1fsQcPpD2mwu3O8zxH9SkplM6OKzkYqDvbWZfOgAq 9GzA== X-Google-Smtp-Source: APXvYqynCi8uC9mwY5hf72ttWfEiYBsQ+6wl0nvKi3Uj+AQb+Ufw5GSOsuV9qYkE0ai47XUYEZWA+IZ0Az+FoQAg X-Received: by 2002:a37:8002:: with SMTP id b2mr23304828qkd.289.1559580956267; Mon, 03 Jun 2019 09:55:56 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:12 +0200 In-Reply-To: Message-Id: <47d4e95b61013933ffe4f0be8832d03179d94b27.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 10/16] drm/amdgpu, arm64: untag user pointers From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov , Kuehling@google.com X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. In amdgpu_gem_userptr_ioctl() and amdgpu_amdkfd_gpuvm.c/init_user_pages() an MMU notifier is set up with a (tagged) userspace pointer. The untagged address should be used so that MMU notifiers for the untagged address get correctly matched up with the right BO. This patch untag user pointers in amdgpu_gem_userptr_ioctl() for the GEM case and in amdgpu_amdkfd_gpuvm_ alloc_memory_of_gpu() for the KFD case. This also makes sure that an untagged pointer is passed to amdgpu_ttm_tt_get_user_pages(), which uses it for vma lookups. Suggested-by: Kuehling, Felix Acked-by: Felix Kuehling Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index a6e5184d436c..5d476e9bbc43 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -1108,7 +1108,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu( alloc_flags = 0; if (!offset || !*offset) return -EINVAL; - user_addr = *offset; + user_addr = untagged_addr(*offset); } else if (flags & ALLOC_MEM_FLAGS_DOORBELL) { domain = AMDGPU_GEM_DOMAIN_GTT; alloc_domain = AMDGPU_GEM_DOMAIN_CPU; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index d4fcf5475464..e91df1407618 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -287,6 +287,8 @@ int amdgpu_gem_userptr_ioctl(struct drm_device *dev, void *data, uint32_t handle; int r; + args->addr = untagged_addr(args->addr); + if (offset_in_page(args->addr | args->size)) return -EINVAL; From patchwork Mon Jun 3 16:55:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973309 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 06BF36C5 for ; Mon, 3 Jun 2019 16:56:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E86AE28684 for ; Mon, 3 Jun 2019 16:56:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB5752873C; Mon, 3 Jun 2019 16:56:03 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6E62828684 for ; Mon, 3 Jun 2019 16:56:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 818F56B0272; Mon, 3 Jun 2019 12:56:01 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 7A2F26B0273; Mon, 3 Jun 2019 12:56:01 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 647086B0274; Mon, 3 Jun 2019 12:56:01 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-oi1-f198.google.com (mail-oi1-f198.google.com [209.85.167.198]) by kanga.kvack.org (Postfix) with ESMTP id 2BF116B0272 for ; Mon, 3 Jun 2019 12:56:01 -0400 (EDT) Received: by mail-oi1-f198.google.com with SMTP id v13so5428438oie.12 for ; Mon, 03 Jun 2019 09:56:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=J9pRn7M3NANi3nsm6t0U9rkGUXnmKvJ1SqswIr7oBNs=; b=d+dWFILoYn7kjDYFhxsZn+HsQZQNLcb8S2Dm6A6ynOufDJRcHi+bIcMUo19uONiyo7 p9k98y3q2IeowKTvji+/InU3xE913PySDzYTI6rHUFBOz5awMmo4JLoroh9vhECKWVL3 qoJxnbOAZopUh1zSFPXNRUL4wqb6tyW8lCTuk1TU3lr0BBArljcB7qxt7IkPadQsX1B8 zKypQNM9ZdQLYTSkOehZ3IPtOmTdd8+Eu7eEe8EBMfUbCZiIxJjQtb4vaFdZPqLMbFLT 0H0gSbD6agN/i6SZAS0hUZpg//CPtPAr9tG/T+PM1XchYTgviNYNL00tBu754Pt4OCjX qBMA== X-Gm-Message-State: APjAAAUnWCsdDRN8CVIyDsKVC3Id1Gn5kipHz8u+3vT9vJ7a0+GUwa/k Bc9OlU80Qjkl/Kj23nKzRUyF7A2fCm5LXX6Q6yCkUJfwkW7iCtUCImzlVlorAv1IKg6Z2Tw9Svb yDxiItTbOCIo24ePU0iqn3hcVoDBziG4xDVsf1IW0s724u1TpjWPFdKCuBgCFa4MmlQ== X-Received: by 2002:aca:4e89:: with SMTP id c131mr142003oib.57.1559580960720; Mon, 03 Jun 2019 09:56:00 -0700 (PDT) X-Received: by 2002:aca:4e89:: with SMTP id c131mr141973oib.57.1559580960099; Mon, 03 Jun 2019 09:56:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580960; cv=none; d=google.com; s=arc-20160816; b=G0Q54c0AESo8jB3kOlRAuku73VVEeo5wAiZ/B/VDs9ParIuf4fb4YtwNi02cayD9K3 iPhpdccosoAH+gz3jlC8UTKAo64YCO2oSNoiB3yBnoysx2lpD+j5FA/uiZ6PIX/W+Ar+ 8Hp5+PYxUTndHWPRa99wa0FyjVszZyQ0/GKlDVWUm+vG30haKrQhvAyjEb7mfC0MQOU6 kwJ8MX0/KLdlYry5ycvx+dK/RJI5MfcgID2Pw7KIcBVGaeP3iKSakXY9AUOJDJ/22vqB TyCLLeX77nZfQA582lnt8xd+Vb6jIQSCQ3dBSjCIN9IAFsNZc064QzDjICseU7b3fjBG EfRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=J9pRn7M3NANi3nsm6t0U9rkGUXnmKvJ1SqswIr7oBNs=; b=lAmW+wrxeOD5szPhlD2epT7qzZ6q7YAf8lam4DGXh9mK6ataEsS58Pg5JH3izI84G8 8+QyQLpfdcRXtudFguhCVwKX1V17PRQnp9ZWDINf48xC+sQUmy5zkDJkplWowDAeRAK+ bexZw/4x56OZgZFxZO011WpeuMMF6UQlQjfe7BVj/XqKdYJcao+hKcVVNgJjq6dSD2ic gYVS0p1IjmviFEpCpvVpEKKrRLNhHh1p67vTiwunzArblcsZgAWHENxG1RT5/rdyV4E6 EJzC2e5OoQYLxbclATxon61S+zThiYlG+9TDGse+EDd7H7eR8ykS7PP+uxmYhONLjOZl hB8w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=uyCC5R6P; spf=pass (google.com: domain of 3h1h1xaokciqivlzm6sv3towwotm.kwutqv25-uus3iks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3H1H1XAoKCIQivlzm6sv3towwotm.kwutqv25-uus3iks.wzo@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id m2sor911696oih.174.2019.06.03.09.56.00 for (Google Transport Security); Mon, 03 Jun 2019 09:56:00 -0700 (PDT) Received-SPF: pass (google.com: domain of 3h1h1xaokciqivlzm6sv3towwotm.kwutqv25-uus3iks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=uyCC5R6P; spf=pass (google.com: domain of 3h1h1xaokciqivlzm6sv3towwotm.kwutqv25-uus3iks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3H1H1XAoKCIQivlzm6sv3towwotm.kwutqv25-uus3iks.wzo@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=J9pRn7M3NANi3nsm6t0U9rkGUXnmKvJ1SqswIr7oBNs=; b=uyCC5R6PocJkucx1jg/Ao87LrvuuxuIBF6MJgtDNhRfSLGfd93TT+616KNBdU1kmQ0 AgUDtRxuemeCNPWARnIzmKXOHJHBg+nlDVnGcRWa1zFo9sO/boLQmVSMKTOceUEyeuWg mQemhEJH0YpA4zNTW5udZ12GKI5bnl80kC7VZlC60TPzrs4d4KpnJ4TkMFczujBnqjPI s1PIMD6Bv9mJiTZ+Ezsulw1mODRNfzAxvwpKccvPVlqp//q9tEM3ODpqGbBulPCkTHr1 l2f+hVLNHUHhV92giHpjab5jQ7AF27XvPV9Duk2JrwjNtkOIOBAX18N6EpfDx4AK8S9m dKQg== X-Google-Smtp-Source: APXvYqxkxhXEjx8ehUwO+4U+/PSwW95cfpd51BrO1CGROW1JbuARWLoPLbgzmMBGokFlEw6Kw7ByzaocLX6whXWc X-Received: by 2002:aca:4341:: with SMTP id q62mr1665112oia.140.1559580959661; Mon, 03 Jun 2019 09:55:59 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:13 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 11/16] drm/radeon, arm64: untag user pointers in radeon_gem_userptr_ioctl From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov , Kuehling@google.com X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. In radeon_gem_userptr_ioctl() an MMU notifier is set up with a (tagged) userspace pointer. The untagged address should be used so that MMU notifiers for the untagged address get correctly matched up with the right BO. This funcation also calls radeon_ttm_tt_pin_userptr(), which uses provided user pointers for vma lookups, which can only by done with untagged pointers. This patch untags user pointers in radeon_gem_userptr_ioctl(). Suggested-by: Kuehling, Felix Acked-by: Felix Kuehling Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/radeon/radeon_gem.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c index 44617dec8183..90eb78fb5eb2 100644 --- a/drivers/gpu/drm/radeon/radeon_gem.c +++ b/drivers/gpu/drm/radeon/radeon_gem.c @@ -291,6 +291,8 @@ int radeon_gem_userptr_ioctl(struct drm_device *dev, void *data, uint32_t handle; int r; + args->addr = untagged_addr(args->addr); + if (offset_in_page(args->addr | args->size)) return -EINVAL; From patchwork Mon Jun 3 16:55:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973313 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1682115E6 for ; Mon, 3 Jun 2019 16:56:08 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 030C528684 for ; Mon, 3 Jun 2019 16:56:08 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E9D162873C; Mon, 3 Jun 2019 16:56:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B4EA52873A for ; Mon, 3 Jun 2019 16:56:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A181E6B0273; Mon, 3 Jun 2019 12:56:04 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 9C6EC6B0274; Mon, 3 Jun 2019 12:56:04 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 844156B0275; Mon, 3 Jun 2019 12:56:04 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by kanga.kvack.org (Postfix) with ESMTP id 565B06B0273 for ; Mon, 3 Jun 2019 12:56:04 -0400 (EDT) Received: by mail-qt1-f198.google.com with SMTP id a18so5980993qtj.18 for ; Mon, 03 Jun 2019 09:56:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=EspxEupGJGiWEDXD9P4jjgWKmcXH74NzvYIbJ/AWgMI=; b=NoM8oGHpXv6f2v+gbnGWs8vqKEJunmzw460cLohLRNTttl2BVFBXOxpKrSLcfVjUf0 qCcxQbpCLGW2CueN/ddjepAgSvZ/VDs4qGnyt2jcdbfI8vgiw92hEDRHVs6lR56Tj25U 291Y32Z3i5v3kC5Ug2i1cZhmZzeZNVy2YKNR2ljduiOwkdpVNR9g+m7CRs6KPLTICCzQ Hel6crsFE9SdFJYxBMNFK/kHZDrtotnkkU/MqgkrAtJ42gvuAsISWKAq9N2rm7n8bVWS DIDvdE4e1gLox6SsFCXstBNMWzsNMfByatqhXB9l5AMP7ITYbHAa4ISdB3STlh6EaR42 VBeg== X-Gm-Message-State: APjAAAVDLXip6vxZrDkjA/zrrHgvlqmZ2E/OmfTDVXKqPvq4uMbMaC9k jHNe1UyU8XktpkDv2EKRt8pgz5jtRTSfijTqTZbSSh0+72XXTwINLwMw9s2f3G8xVaEGn8nVO7p tavq2TAftXXppY5e3cSq1D7JZc/Ar0Vc+9rk0suWweilRvj7grutSBFU3wnyvcK2htg== X-Received: by 2002:a0c:b929:: with SMTP id u41mr22918219qvf.50.1559580964059; Mon, 03 Jun 2019 09:56:04 -0700 (PDT) X-Received: by 2002:a0c:b929:: with SMTP id u41mr22918180qvf.50.1559580963540; Mon, 03 Jun 2019 09:56:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580963; cv=none; d=google.com; s=arc-20160816; b=SZ5SbGvAufYFmj3GwMlrRNG+oZIQ1Ulsbl4lp3xdr+jf88vW6mBB8+SSBV1fhDfXfe 9rSY72HYodjCTPz2EyQ4rfUyviD6UeH5XQI2ES18MMOpVe0pL/I1HhdD9GbLvFMKkX7p ttJBaEwC4J8hle5lXi+1tDXLdicjlgtJILdBAx0j3j+r+xqaACpBdAc25ppL04ot5+JW +VQaiQXOOxnKHrirB/1HR/KFwoImdPqaG10WNkcc+NS0HMDoz85l5ycwHFMRC3h4Lcd5 +B1FSanAnnLk0FBmU920hYX2pp86rBoiQQ8Mj0YpQSIlwtikTavsaXLvgpd08lx0Bl2f z+2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=EspxEupGJGiWEDXD9P4jjgWKmcXH74NzvYIbJ/AWgMI=; b=q0hbZjxMomRWuiKeOQdhP3Rj1+keyiWZl6WhLgiUy10c9w+r3Kq4az0MCj0LSM4+X1 z7WzlLVJntz9+fmWzSy4EPH9poNLhwO0HcHifYtEevswKpYVI8QBYeQLWkXTRdoSa1/T ee0F1HNYvltQdx+it1BUnyaLpQYKyZxMoFXUgX6UvWOBWiRaACKSS8xxxMgSdozZ6+d+ MDPIpVS0uqI91fKGT1CXgHzjQAmjPHhq1BsLMGETGbTRyjXS93xRQtg1BxyXiIWfDF+b 2iPp+Zx4Lu83ERhgVF4KbTGduKkK58jLkuRFDCvcopjQsiWwmKGjotzdg2EKa4dsbxz2 PZ/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=TJVcn1cL; spf=pass (google.com: domain of 3i1h1xaokcigmzp3qawz7xs00sxq.o0yxuz69-yyw7mow.03s@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3I1H1XAoKCIgmzp3qAwz7xs00sxq.o0yxuz69-yyw7mow.03s@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id w14sor1718257qvf.57.2019.06.03.09.56.03 for (Google Transport Security); Mon, 03 Jun 2019 09:56:03 -0700 (PDT) Received-SPF: pass (google.com: domain of 3i1h1xaokcigmzp3qawz7xs00sxq.o0yxuz69-yyw7mow.03s@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=TJVcn1cL; spf=pass (google.com: domain of 3i1h1xaokcigmzp3qawz7xs00sxq.o0yxuz69-yyw7mow.03s@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3I1H1XAoKCIgmzp3qAwz7xs00sxq.o0yxuz69-yyw7mow.03s@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=EspxEupGJGiWEDXD9P4jjgWKmcXH74NzvYIbJ/AWgMI=; b=TJVcn1cLKwrCDqfOoDXp30a4H6TaXBKiwiHjDAdwongHK/bKzo02AftS+NOLHZV2qk uaXFTsh7OP9kK6tBgKChXJ2KBusgSI13ByE5QAJT4opcCyHzVAEN7KnoiqvVvgIk9UeZ thbX5DYw+Ya/O9Bt8a5AL4KNqAUsZ4B4hEfnsQKdt+gJFBe02e/Gllpw40I3Eh8jjzXh yX2E6mPgl8q0tFyhEApdfs/i0GKdcLnrmq2mOZHSQm727N+W9pKIuuH8ohRLmjbmQDTf QCPeVpMCsS5AlW/faffrLj+KIOBAFryuyM2XhBVLl0qrMu2w3WMArdINiV+/WP+bh/um j3qg== X-Google-Smtp-Source: APXvYqyTJQX58jIU+0IdRLMyhel9C9SXAf29MqpC57OIYMzhYLqjfoH2DhcsbA5oBHVd1rJqiIiEUBwjKZJxchdB X-Received: by 2002:a0c:be87:: with SMTP id n7mr3853859qvi.65.1559580963191; Mon, 03 Jun 2019 09:56:03 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:14 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 12/16] IB, arm64: untag user pointers in ib_uverbs_(re)reg_mr() From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. ib_uverbs_(re)reg_mr() use provided user pointers for vma lookups (through e.g. mlx4_get_umem_mr()), which can only by done with untagged pointers. Untag user pointers in these functions. Signed-off-by: Andrey Konovalov --- drivers/infiniband/core/uverbs_cmd.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c index 5a3a1780ceea..f88ee733e617 100644 --- a/drivers/infiniband/core/uverbs_cmd.c +++ b/drivers/infiniband/core/uverbs_cmd.c @@ -709,6 +709,8 @@ static int ib_uverbs_reg_mr(struct uverbs_attr_bundle *attrs) if (ret) return ret; + cmd.start = untagged_addr(cmd.start); + if ((cmd.start & ~PAGE_MASK) != (cmd.hca_va & ~PAGE_MASK)) return -EINVAL; @@ -791,6 +793,8 @@ static int ib_uverbs_rereg_mr(struct uverbs_attr_bundle *attrs) if (ret) return ret; + cmd.start = untagged_addr(cmd.start); + if (cmd.flags & ~IB_MR_REREG_SUPPORTED || !cmd.flags) return -EINVAL; From patchwork Mon Jun 3 16:55:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973319 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 0B8051880 for ; Mon, 3 Jun 2019 16:56:11 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EAA9028684 for ; Mon, 3 Jun 2019 16:56:10 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DDD4428741; Mon, 3 Jun 2019 16:56:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 6B2FA28684 for ; Mon, 3 Jun 2019 16:56:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 33B416B0274; Mon, 3 Jun 2019 12:56:08 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 29D666B0276; Mon, 3 Jun 2019 12:56:08 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0D3B06B0274; Mon, 3 Jun 2019 12:56:08 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-vk1-f197.google.com (mail-vk1-f197.google.com [209.85.221.197]) by kanga.kvack.org (Postfix) with ESMTP id DC8856B0274 for ; Mon, 3 Jun 2019 12:56:07 -0400 (EDT) Received: by mail-vk1-f197.google.com with SMTP id q13so4520824vke.2 for ; Mon, 03 Jun 2019 09:56:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Y8tRh8UuVncP1ncRA8ZfIPgOhX9+nAfsBu2vnbYNOEE=; b=ub2ThZ4tTms3Gs7+ByaS7+yYNvKw0YI6wvLZTQPwidp1XQN5FQi4k0YO3UmQIr+ILL BBJgX+zFqNN37TDPodydr6UyRwKvTBAMqLyIHSBaNBhUjh5ff5TkQDIAa4jriLT8TZig gaWqMyGclKP/SNrMyCC7F7aCdpG0pk9a5+WTO9wTjK/Rq/JszPLn4jLWTBOOqexoXg22 y7UdySt/Xaw7moLEtQw+yqotHV704oBlX03/UAHIyDyNthIJ15RLJRouVXdKPXraMfWw 1PYMTUUNnNWHHysNGg4cjoGb9ox/kMQDZe4gNWw90DI6w5z0SQxpS7Ufoh7dNijLKx4s 4H1w== X-Gm-Message-State: APjAAAUPWokmZInH3a9vEfLNgXqr57ntoDl07lfAoPDrX+TDRyEYxgz/ QRo1+ZyVvuzCLPaNUyhcFa6g/vnb/nxLB/GobW5jrhUT6GowMiU0OP4Cc2NOSSLvUaFSv1bbYyt M+gPxPubt34BsOLmSVtNAMAIgNxHXKb2CyJlSrNkfO7g6wMHZwP7mroVZQj91hSbmVA== X-Received: by 2002:a1f:be51:: with SMTP id o78mr2671125vkf.66.1559580967419; Mon, 03 Jun 2019 09:56:07 -0700 (PDT) X-Received: by 2002:a1f:be51:: with SMTP id o78mr2671103vkf.66.1559580966772; Mon, 03 Jun 2019 09:56:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580966; cv=none; d=google.com; s=arc-20160816; b=vafUckVMf7j837GlAl3a+/4iVJZKAwYKsoncfaepKV4NVWuXsos8nYCzsj0ZkxPoHK GIV3hyfkGG1A0Q+t25QApOQlHKgGxT9WSElReE8thdG1MAuTSNEVbFHXBsEK5DK6sxjt RsjZxgJ1bdNZmiA1Iz1jzhEJiCLgzMtavV+Da6yKS3MtlFKTpy0JjTkVd/mQiYHi6sNs UuyXlMVWw+yC3ASgiS3WwKF4pN2Boj8wLGedp6nI+cPdU43Q+S22+AkwB7JvAH9kdeOW Pxz1LpfKRqnCX5JOVpGCdVPvuQyWwM7nHFVjfLucP18Ef08AMOgt4dyQ26cDU2My/26O /WIA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=Y8tRh8UuVncP1ncRA8ZfIPgOhX9+nAfsBu2vnbYNOEE=; b=QeTsKHTiqDMuRfRV2q862tMQL7UJcDxqKVZ02XkEFq/ws+vo8hdhfvK+MdC3QwifQG dEmqsKn6i/sbnfZZQo77hpnysxwyNnHn4ANnStgBuR9Wz/359xaf8ii4fHMGQp0/Yw84 qwyQ1JX8Hdsud+inySrLBHsMo4Q4yDE8OuOIgqp7F5Y5NkEr71ovZuN4KSTPNbkrWo/l K+QnahUMyu+UEFaGep50iLW9nMAdWbpC9guXYSSHIjky/WjekHFFn4cMWwsBsPWrBkAU X7/P99AwBnlsU0awk2EoE/Wd+UGmepi0vdxa1M0qTpBVZ4SnEIO9GRsPcaa/2kFVNHLh xvVg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=eFK1jtlE; spf=pass (google.com: domain of 3jlh1xaokcisp2s6tdz2a0v33v0t.r310x29c-11zaprz.36v@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3JlH1XAoKCIsp2s6tDz2A0v33v0t.r310x29C-11zAprz.36v@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id w18sor1222590uaq.45.2019.06.03.09.56.06 for (Google Transport Security); Mon, 03 Jun 2019 09:56:06 -0700 (PDT) Received-SPF: pass (google.com: domain of 3jlh1xaokcisp2s6tdz2a0v33v0t.r310x29c-11zaprz.36v@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=eFK1jtlE; spf=pass (google.com: domain of 3jlh1xaokcisp2s6tdz2a0v33v0t.r310x29c-11zaprz.36v@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3JlH1XAoKCIsp2s6tDz2A0v33v0t.r310x29C-11zAprz.36v@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=Y8tRh8UuVncP1ncRA8ZfIPgOhX9+nAfsBu2vnbYNOEE=; b=eFK1jtlEFrS3m2V50O3J5bSuSe+f8SF2oOEJcYGOiFDh2Xi4MGaW9nDUncCGVcGUyN tYL5ptbIsLBKOxSfh5JEibNl8mgQflxa8qzQZCZGbKOMu+ue4btTZbmvk6Kxh+WcG+Wv fn/kF4y9wQfMzaBiS9+LkicOpt8tKnLL/K7iTnBUbTxgKs5dHlS/ncUSuv8GobYsG6Cu 6qM+L38/9FABz5BxD3BPgItX9XL5QdXg0jsVIbHzcM5qVU0wJRygy73ep5mkhIvjeckb fTT0sIEfasP+T2Y6+uUP2P0imGCc2+QNF2QVC0kVT6BdFDtQ0zPTYlADXVtguKUh5EC4 AB9A== X-Google-Smtp-Source: APXvYqzz/ntPC10OZ0frdLABrSNi7hvZ/ytx4Ex3aaENCq428cafLYJMM+5BmbKZZkSR6QrCbMGhJA3iBNJvNJC5 X-Received: by 2002:a9f:25c6:: with SMTP id 64mr157298uaf.36.1559580966349; Mon, 03 Jun 2019 09:56:06 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:15 +0200 In-Reply-To: Message-Id: <31821f3538ddacb7e57e0248e86a3d28f9789d2f.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 13/16] media/v4l2-core, arm64: untag user pointers in videobuf_dma_contig_user_get From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov , Mauro Carvalho Chehab X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. videobuf_dma_contig_user_get() uses provided user pointers for vma lookups, which can only by done with untagged pointers. Untag the pointers in this function. Acked-by: Mauro Carvalho Chehab Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook --- drivers/media/v4l2-core/videobuf-dma-contig.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/media/v4l2-core/videobuf-dma-contig.c b/drivers/media/v4l2-core/videobuf-dma-contig.c index e1bf50df4c70..8a1ddd146b17 100644 --- a/drivers/media/v4l2-core/videobuf-dma-contig.c +++ b/drivers/media/v4l2-core/videobuf-dma-contig.c @@ -160,6 +160,7 @@ static void videobuf_dma_contig_user_put(struct videobuf_dma_contig_memory *mem) static int videobuf_dma_contig_user_get(struct videobuf_dma_contig_memory *mem, struct videobuf_buffer *vb) { + unsigned long untagged_baddr = untagged_addr(vb->baddr); struct mm_struct *mm = current->mm; struct vm_area_struct *vma; unsigned long prev_pfn, this_pfn; @@ -167,22 +168,22 @@ static int videobuf_dma_contig_user_get(struct videobuf_dma_contig_memory *mem, unsigned int offset; int ret; - offset = vb->baddr & ~PAGE_MASK; + offset = untagged_baddr & ~PAGE_MASK; mem->size = PAGE_ALIGN(vb->size + offset); ret = -EINVAL; down_read(&mm->mmap_sem); - vma = find_vma(mm, vb->baddr); + vma = find_vma(mm, untagged_baddr); if (!vma) goto out_up; - if ((vb->baddr + mem->size) > vma->vm_end) + if ((untagged_baddr + mem->size) > vma->vm_end) goto out_up; pages_done = 0; prev_pfn = 0; /* kill warning */ - user_address = vb->baddr; + user_address = untagged_baddr; while (pages_done < (mem->size >> PAGE_SHIFT)) { ret = follow_pfn(vma, user_address, &this_pfn); From patchwork Mon Jun 3 16:55:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973323 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1A7186C5 for ; Mon, 3 Jun 2019 16:56:14 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0667128684 for ; Mon, 3 Jun 2019 16:56:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id ED9462873C; Mon, 3 Jun 2019 16:56:13 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 84CE028684 for ; Mon, 3 Jun 2019 16:56:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 29BF56B0275; Mon, 3 Jun 2019 12:56:11 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 226246B0276; Mon, 3 Jun 2019 12:56:11 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 09F1D6B0277; Mon, 3 Jun 2019 12:56:11 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-ot1-f72.google.com (mail-ot1-f72.google.com [209.85.210.72]) by kanga.kvack.org (Postfix) with ESMTP id D5AF56B0275 for ; Mon, 3 Jun 2019 12:56:10 -0400 (EDT) Received: by mail-ot1-f72.google.com with SMTP id j19so9208525otq.12 for ; Mon, 03 Jun 2019 09:56:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=UdKHGBZnbXnYOdacGwXVLbo2mp7I3OpbNnEy2rn9dE0=; b=Z8hKcOImb/WfVstYincDNqx1U1gTKiggpCLLIyqhe3CbIRg9Aweh3PkEkL68kQw9+a c2Oy81pdV82TeVxLAe63Ttmu21QSr4ScppyZ8+6vCxXExq4Sc8mqyT2AtEEZiu/xOz4G UrA+thG9KKOkvX7frSoIUK3fv8qgxxCRNVdrUURduFFJFX15wZ4yVFIWsdMW/tuYrOJ5 +S99Wc5LPjZqobxr4JdYlUVhqRdzh0NPhXHunxJjvbOP5cRg4XKqolAabQTrfSafxw3X nX+DnlZACxNhkXwYHXPwivRXFQLkTASDSBEX/LIuDRTlVMQVQ/wqfjfWBU4V32A2gFbN AIvA== X-Gm-Message-State: APjAAAVU7TBeHxEyCrOmdDu62tZLyy3ll+/XncgcfUvwBZp7HsS/Prbw onOUh2Y3i7o3dj3zE3un7zGrAxvnWE7Syp/UOTqTk0JRErV/w4XqogLzVZ06wQifu2OMKljlNXX N8fy0RV1mlmKpak1KdGH5h6kujejCDanEQNVs4oROeT7+cb04+8HLq2QS5xMX1Z0oDQ== X-Received: by 2002:a9d:6499:: with SMTP id g25mr1853188otl.184.1559580970586; Mon, 03 Jun 2019 09:56:10 -0700 (PDT) X-Received: by 2002:a9d:6499:: with SMTP id g25mr1853164otl.184.1559580970082; Mon, 03 Jun 2019 09:56:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580970; cv=none; d=google.com; s=arc-20160816; b=QmA9pR3kmAn8C/ORnY9L0dBv6TVYtfG8rryPdXThFWHDY4PPd2Q9iKcX1fHTc+Kn9Y xgUW840CdDYYt/fLtcLPUeMNQHHf140dzF6Fy11aU3onzZJUphdqV8d5Eb2zUiiFIEzh AFGsLfmQy/3emO6l1dJXgTS86MKS7GljOAVvsP2wWTylOxi7MWcfxlea/U2+eidYWtZw KTvv1Nw29UN+nFKMTfEHdNOKEK1TSUuYAjrxaJukMXGwh2ICMNKRrF6P3uOEEYuNaYXj CFi7znPGkGS0ygk6N0W366mCJ/bD8BimAfUkOvlY07zUAU7WLEHaflu8hYO/nW0HW5q7 lzPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=UdKHGBZnbXnYOdacGwXVLbo2mp7I3OpbNnEy2rn9dE0=; b=wBPbMAJ8h+kx0PjBdI6NCH1k8lnZrQR4lNDzfCZnm3WemLiNjvqkr6DM07ua565ED/ pobuU0RnZkrMt9wptoG1knbJ/lGD+dWGF3QjFK4WGd68fWz8SUr2/XOVST7U8hiNxmqI a0kTZdJPxX687UtK2YNuTd8AGodqTYPswJEfaUh4mmqqFQzdYfGR4fqD9mk730QCfFHq DrcECqQyqoCbP+NML7UkP1Tkb/HXoxjHnO2AyZnZOpYdze1YhxYTxyf+cjT/w/lMbo1q 3F3evZ0Ilto0pwKoRMF16SMyNeyNkb6zajXeqNUVHMiv14crFwpAr7OUYxc2R+B0JAoN nEFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="aMwQlO/u"; spf=pass (google.com: domain of 3kvh1xaokci4s5v9wg25d3y66y3w.u64305cf-442dsu2.69y@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3KVH1XAoKCI4s5v9wG25D3y66y3w.u64305CF-442Dsu2.69y@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id x21sor1076601otq.43.2019.06.03.09.56.10 for (Google Transport Security); Mon, 03 Jun 2019 09:56:10 -0700 (PDT) Received-SPF: pass (google.com: domain of 3kvh1xaokci4s5v9wg25d3y66y3w.u64305cf-442dsu2.69y@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="aMwQlO/u"; spf=pass (google.com: domain of 3kvh1xaokci4s5v9wg25d3y66y3w.u64305cf-442dsu2.69y@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3KVH1XAoKCI4s5v9wG25D3y66y3w.u64305CF-442Dsu2.69y@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=UdKHGBZnbXnYOdacGwXVLbo2mp7I3OpbNnEy2rn9dE0=; b=aMwQlO/uqKNquhxQCaOybakc925QpZfJO8wh15xEZQIyCg72vlDGXrUg/ROAuoQDUD yCBHc/elg2gmmBaFllCt7o9fko/cMYEXNqMBN5Ib8jP974H6cgrFWFCLBOtmTziaRGQQ SwI/Xt1vXIDm1HuVmNbFHcArxU2bsmwx6xs/PbNEoDywCtOeBm47QoZ+wae08e7pzq/K a7mRKG2GqnFCVji4AY+94HQ5eVsYgsMp8E/PA4r/OPS0psFqvjDQbyz4YEbR/PgBj2Aq 436HnabGuSm3Rvtg2LN9VhA8Rs2mRcn4xgL77EZC0LMuRu0EvZQAUUg9zFkbP9a8AWHr YN2w== X-Google-Smtp-Source: APXvYqxMjN/4yHR2ThXEEFJeDuxNxY18SC+MmNXgYJ7rlNGji/L0sGyo9f6aEs2c6lSgFUC7mMKDb3c6mMlyiMDt X-Received: by 2002:a9d:4109:: with SMTP id o9mr1768838ote.353.1559580969728; Mon, 03 Jun 2019 09:56:09 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:16 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 14/16] tee, arm64: untag user pointers in tee_shm_register From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. tee_shm_register()->optee_shm_unregister()->check_mem_type() uses provided user pointers for vma lookups (via __check_mem_type()), which can only by done with untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov Acked-by: Jens Wiklander Reviewed-by: Kees Cook --- drivers/tee/tee_shm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c index 49fd7312e2aa..96945f4cefb8 100644 --- a/drivers/tee/tee_shm.c +++ b/drivers/tee/tee_shm.c @@ -263,6 +263,7 @@ struct tee_shm *tee_shm_register(struct tee_context *ctx, unsigned long addr, shm->teedev = teedev; shm->ctx = ctx; shm->id = -1; + addr = untagged_addr(addr); start = rounddown(addr, PAGE_SIZE); shm->offset = addr - start; shm->size = length; From patchwork Mon Jun 3 16:55:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973329 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 59B716C5 for ; Mon, 3 Jun 2019 16:56:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 413B528684 for ; Mon, 3 Jun 2019 16:56:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 33D222873C; Mon, 3 Jun 2019 16:56:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A6F872873A for ; Mon, 3 Jun 2019 16:56:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3B1176B0277; Mon, 3 Jun 2019 12:56:14 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 35DB66B0278; Mon, 3 Jun 2019 12:56:14 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2022F6B0279; Mon, 3 Jun 2019 12:56:14 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by kanga.kvack.org (Postfix) with ESMTP id DB1FE6B0277 for ; Mon, 3 Jun 2019 12:56:13 -0400 (EDT) Received: by mail-qt1-f200.google.com with SMTP id c54so8088261qtc.14 for ; Mon, 03 Jun 2019 09:56:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=i5cRHHCicMsppSSBbFWeJPgqhQ8FMrYjuCKfr4hxLgs=; b=npPbK+KvitGD39XFjYKO5VvSPYvG0KRGdjJeQTVUHx4YFv00FLFOO91/WP9xwsITel /TYpUmAqNVT+H1wA5h43SF90AaprbOMiauzAxTyAeIlVKf6jeTtj2rOiu9VFkyuNZRDm rYvxo06NZ1AI08y5p8drh8Kpk160FByZDc4jNCNDiV+TSvoAZON202eT893EKMS0KFRg +iWu2rI3th0eRgdbNlE6DMr6K9637mcHG2PWlH81BLV55ZM/0v3aO+4fEqMkMZcSI9wO BIul03P+MDZa3Eikj64BRkOqcc7p7hYGqVyfsmPcyPYdUIwxvAjMJDpRnrEWZaQScNN1 8qdA== X-Gm-Message-State: APjAAAXnVRU92GVBEcZfN5Cje+tOIMnNFI4K7rj6EqJSGapvfvUfTMAr L7iDYsGAiWj2vFockFPh546/74Hl3paHGsblghO1oEbujqRc4qje0DZppH8J3mAy8HmDtoTjCl2 DCgiUyDhFjl2evVGmJBVvXyU27ul1D1clKBI3D9YhBg28kyjbTlj02+dmyn1j2+XOxQ== X-Received: by 2002:a0c:ae54:: with SMTP id z20mr8780884qvc.227.1559580973630; Mon, 03 Jun 2019 09:56:13 -0700 (PDT) X-Received: by 2002:a0c:ae54:: with SMTP id z20mr8780852qvc.227.1559580973196; Mon, 03 Jun 2019 09:56:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580973; cv=none; d=google.com; s=arc-20160816; b=M8eR0R/YPNvYUluBn5Pyl3RT4LAO0dUqLFT2H2f+k2yyT/0kvgEEp3muJYdTD8da5G KKwSjY9Fm7VEUMkLUZspotYmwkZ7bo3lGceycIdqsCp2u/ipW5ljHvS0p/A7hVjMqLq0 CzAcltjhUSO8yD+VUI+iKwhEd0lG/kOSRjpuJmr97YxVNdYri7iTsV7weos07stIRlCh XIh0+GkRWJu90gka4hF4DMuuIGnA+2M7qp+iYcUczTL+LmqSjA59t3fDgcGqTf/Y9q+s /ASq1f1MbCsoLnofig51zdDCDSgE2EYLaRayZYJwi8RmCnrtNsXYcDjFkEhMHEd9pHgT DCfw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=i5cRHHCicMsppSSBbFWeJPgqhQ8FMrYjuCKfr4hxLgs=; b=S3pYEZCrmDj6hoAMRObtOSdx4kYYnk0j4A3RzWk5PifJav6wz8Tn5Rhg2Hh6ABWJzu j9fMyRvVt08JXrwlGDbm0Ou1SlJ2vGd7tqdRHjHOYxIm+8l254bl9QLcb42JDZWPZ8Gy r+sge6dSyuyjcyRjNvkWoIMD6rghouaqeEupL2QqbzLco2c+AxFney+pA4DdyfNVtgex m2nosrZtoct1vTEgzTWE02M4dDCnhoBry1ZkwWPFyXj8W08JrR0U06OqyJqVbTJBE/xP BJlO+kx/NdUwHifQCyXhx98X0UoYqY1DraTmPJExuqEe4oGXJ+6LVLx1Y92AvHIXBwGn yAWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=sT3L0ZTG; spf=pass (google.com: domain of 3lfh1xaokcjev8yczj58g619916z.x97638fi-775gvx5.9c1@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3LFH1XAoKCJEv8yCzJ58G619916z.x97638FI-775Gvx5.9C1@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id u39sor2788947qte.45.2019.06.03.09.56.13 for (Google Transport Security); Mon, 03 Jun 2019 09:56:13 -0700 (PDT) Received-SPF: pass (google.com: domain of 3lfh1xaokcjev8yczj58g619916z.x97638fi-775gvx5.9c1@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=sT3L0ZTG; spf=pass (google.com: domain of 3lfh1xaokcjev8yczj58g619916z.x97638fi-775gvx5.9c1@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3LFH1XAoKCJEv8yCzJ58G619916z.x97638FI-775Gvx5.9C1@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=i5cRHHCicMsppSSBbFWeJPgqhQ8FMrYjuCKfr4hxLgs=; b=sT3L0ZTGkrRVM9BsAKw3Is1YEd5yvotnvZZfNxBe7skB1Imy3yNX3RzPcWZ3L4hBJj Ir4PWq35E8DDBUgoDYzLkuASMa2VdGiH7s1U8yAi9EYUyTsOvvYIL5k/dOIxx+s0hJjp ivARA7eJCU7WpCZIyl+ggUCauMPneV4kiO9mITdC3bmCRoqBY9+znI9pjppaD8UIqueE q8SkWjwj6UsZy3S43cNZjsMLUMGx3YCtYO4jYJeCvlUuA0j/KAAmJ8e05Wl5fyvRzmAY H4Wc9GjlHrhbudDD44rVO5eJTf6U73Fu89LC7maXdjap9rfTt5/4PxbL/ZJXa8oMOVpN Mbbw== X-Google-Smtp-Source: APXvYqxlndJ8+4ezg3WqxZgwPuj7croHV+8pOSI6UJilulRqZobP0HRc/RuNHVT76apRYIt7gunvINxeeY21hcHq X-Received: by 2002:ac8:2817:: with SMTP id 23mr23534732qtq.174.1559580972876; Mon, 03 Jun 2019 09:56:12 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:17 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 15/16] vfio/type1, arm64: untag user pointers in vaddr_get_pfn From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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. vaddr_get_pfn() uses provided user pointers for vma lookups, which can only by done with untagged pointers. Untag user pointers in this function. Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook Reviewed-by: Catalin Marinas --- drivers/vfio/vfio_iommu_type1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c index 3ddc375e7063..528e39a1c2dd 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -384,6 +384,8 @@ static int vaddr_get_pfn(struct mm_struct *mm, unsigned long vaddr, down_read(&mm->mmap_sem); + vaddr = untagged_addr(vaddr); + vma = find_vma_intersection(mm, vaddr, vaddr + 1); if (vma && vma->vm_flags & VM_PFNMAP) { From patchwork Mon Jun 3 16:55:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10973331 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 96DAA6C5 for ; Mon, 3 Jun 2019 16:56:20 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 835EC28684 for ; Mon, 3 Jun 2019 16:56:20 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7746A28741; Mon, 3 Jun 2019 16:56:20 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, USER_IN_DEF_DKIM_WL autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D43FE28684 for ; Mon, 3 Jun 2019 16:56:19 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CAF306B0279; Mon, 3 Jun 2019 12:56:17 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C12AF6B027A; Mon, 3 Jun 2019 12:56:17 -0400 (EDT) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A8C126B027B; Mon, 3 Jun 2019 12:56:17 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by kanga.kvack.org (Postfix) with ESMTP id 717D76B0279 for ; Mon, 3 Jun 2019 12:56:17 -0400 (EDT) Received: by mail-qk1-f200.google.com with SMTP id y190so965572qkc.21 for ; Mon, 03 Jun 2019 09:56:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:dkim-signature:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=v9MzlIb7HY1yKtXIqdaDnLUOCgnoLYityVGh+V+FCFI=; b=CjlVJyzJnxIGF3+8FMLZSR2r9lxRCQUXpn4cnnNhN0w4fkU5v/FcKZnmiHkgwYCDAA 7tQNLGqAaIY2eTO6Q3UiaxpbVefBfC568ZHfu4pBHp1hw2kcivfU/MRbdZnaGHoKmF4W VZ1X54IGV46PwZtRipbG6JCWYy2MGTzdEkgwFZqYHuoy0pSPJ3UWR0x6fOwbFUFJuYtz 6BxTGb5TsV70NC8pODTHP9zZk/SoME5hM7P6+91SJfQpC/Z9zvoenJn8QCtTptu7efZR hiCqVIETbMvOlTn9an5M4sPl8xqh4EQG63Q9HWRkoodUE9izOTbnowryMNlKQn1kes76 gkcg== X-Gm-Message-State: APjAAAVIB7sMigB45fI6rAGjlvQCoUmiLsVJPw6aoI5IngBYZFMuDRit BSTfApXgWyXOcAk1YAeM3tQZ2SXcjlVXdGlBq95SfFsBjrWXGV9eVR0rXCnOeHNJ1xgTCpRFVTm OsV4Xj4yiZoZ6W6WXnR+4ocQBzzEBEq+Xo8RweJmcNv87Lva9Y5SBLek0J3dAJ7AB8w== X-Received: by 2002:a0c:afaa:: with SMTP id s39mr22633051qvc.117.1559580977191; Mon, 03 Jun 2019 09:56:17 -0700 (PDT) X-Received: by 2002:a0c:afaa:: with SMTP id s39mr22633006qvc.117.1559580976562; Mon, 03 Jun 2019 09:56:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559580976; cv=none; d=google.com; s=arc-20160816; b=Ba/kwPc3imNZDRNiZlrlZ+fCy8B8JiLFwjod1KDbxKg5CT6qdn5wOIgp634LT4WQRw G1uchv+cIFS0Ox61vTXx0wVelk7r12pVlhzLhVv8h/XjhWI5IsOlN1WbJHcJXEeOgEOI T66MhKE08YKKB9djRTHgZvlsat0JWWO04uXw+q+CJvP2PagaVqiyUVvsfZITUXxgTmAc M110+Yx3ksUMMNUXQtlipF1VHLyZEphz+qLrbxGGqDNQQ0jVixSXTz47aNj3oWkKhHNx P4EFuI38FcfS28SQZ5uSlCbhiyUYu8ZohtP4PRUtB/9hvFJh6ZPVvHqc5eHh+F3FptOZ +bkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:from:subject:references:mime-version:message-id:in-reply-to :date:dkim-signature; bh=v9MzlIb7HY1yKtXIqdaDnLUOCgnoLYityVGh+V+FCFI=; b=059RWfIwSqEBLonM+E5bR2AT0pHWxCnd+Osw9RSNuGA1dy7jiL6DaHbNukUUYV5sS0 /qhQdbXnk6RWS1Z8V5LfGc/s/o/A3dN7lbAuZkvbES0J4mV9iRoHGoYr7VYBEGcxylU9 Lp1+VHLcs8k8VZTPLtV4bA3G4wJdw+FVzCr0Y7Yt53vNhb0DWO/77h5JR7YZViEOPeFS oX+9UaNPtEteP2y3fy5mca9EDl8Fw4hTtnHwsoJ9P4g6GEHbd6jo4wBXalT89PSlj+uO Mp5RfDNcZC33TGbny7O1/LfVacYDmdw2x6O8zYCcK00q5vYkj5wzQM3c+b7nx6FsKC7h slsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=E8Ist5LC; spf=pass (google.com: domain of 3mfh1xaokcjuzc2g3n9cka5dd5a3.1dba7cjm-bb9kz19.dg5@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3MFH1XAoKCJUzC2G3N9CKA5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from mail-sor-f73.google.com (mail-sor-f73.google.com. [209.85.220.73]) by mx.google.com with SMTPS id o66sor1249276qkf.101.2019.06.03.09.56.16 for (Google Transport Security); Mon, 03 Jun 2019 09:56:16 -0700 (PDT) Received-SPF: pass (google.com: domain of 3mfh1xaokcjuzc2g3n9cka5dd5a3.1dba7cjm-bb9kz19.dg5@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) client-ip=209.85.220.73; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=E8Ist5LC; spf=pass (google.com: domain of 3mfh1xaokcjuzc2g3n9cka5dd5a3.1dba7cjm-bb9kz19.dg5@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3MFH1XAoKCJUzC2G3N9CKA5DD5A3.1DBA7CJM-BB9Kz19.DG5@flex--andreyknvl.bounces.google.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=v9MzlIb7HY1yKtXIqdaDnLUOCgnoLYityVGh+V+FCFI=; b=E8Ist5LC6WVHrU8hj11VtWQb5rjU7iBORWjaptcqcX3l9oPWYIMo05KmXzzCVgt3cu lYJ4Yvl8mbNlJpJWSEYMIryL5scHXmPmVUqUSjI9X7Fuxa39wo8rzDRZFWMAkoj3uwjY mqiCqrBWPtOVkiL+4ZV5H/HhzxJmpTR97uHC/IdXM4tljhuvgYTiLw3741mzKX8NYLUt uc6Aqh8uuXDuaxHP4yeJ0XLPpMovyAE85DGwVCzioR0Gt6moVfBUOYshZAWVCnGUBbU4 06NzOvSR4tkaeqT9+eniQMZF90V1u65K6kkbFscWsH7pqN+ptT1wb5JpdkKVZRneJwoH CGYw== X-Google-Smtp-Source: APXvYqyupRnjjQO94efnTljbt6p9DxywyyDuZaQUfwBf3Y405Fl40dWCznelJThhDpEIkj52c6mVbKSb6DjD/rvF X-Received: by 2002:a37:de06:: with SMTP id h6mr3881914qkj.322.1559580976267; Mon, 03 Jun 2019 09:56:16 -0700 (PDT) Date: Mon, 3 Jun 2019 18:55:18 +0200 In-Reply-To: Message-Id: <9e1b5998a28f82b16076fc85ab4f88af5381cf74.1559580831.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.22.0.rc1.311.g5d7573a151-goog Subject: [PATCH v16 16/16] selftests, arm64: add a selftest for passing tagged pointers to kernel From: Andrey Konovalov To: linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-rdma@vger.kernel.org, linux-media@vger.kernel.org, kvm@vger.kernel.org, linux-kselftest@vger.kernel.org Cc: Catalin Marinas , 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 , Luc Van Oostenryck , Dave Martin , Khalid Aziz , enh , Jason Gunthorpe , Christoph Hellwig , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP 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 adds a simple test, that calls the uname syscall with a tagged user pointer as an argument. Without the kernel accepting tagged user pointers the test fails with EFAULT. Signed-off-by: Andrey Konovalov Reviewed-by: Kees Cook Acked-by: Shuah Khan --- tools/testing/selftests/arm64/.gitignore | 1 + tools/testing/selftests/arm64/Makefile | 22 ++++++++++ .../testing/selftests/arm64/run_tags_test.sh | 12 ++++++ tools/testing/selftests/arm64/tags_lib.c | 42 +++++++++++++++++++ tools/testing/selftests/arm64/tags_test.c | 18 ++++++++ 5 files changed, 95 insertions(+) create mode 100644 tools/testing/selftests/arm64/.gitignore create mode 100644 tools/testing/selftests/arm64/Makefile create mode 100755 tools/testing/selftests/arm64/run_tags_test.sh create mode 100644 tools/testing/selftests/arm64/tags_lib.c create mode 100644 tools/testing/selftests/arm64/tags_test.c diff --git a/tools/testing/selftests/arm64/.gitignore b/tools/testing/selftests/arm64/.gitignore new file mode 100644 index 000000000000..e8fae8d61ed6 --- /dev/null +++ b/tools/testing/selftests/arm64/.gitignore @@ -0,0 +1 @@ +tags_test diff --git a/tools/testing/selftests/arm64/Makefile b/tools/testing/selftests/arm64/Makefile new file mode 100644 index 000000000000..9dee18727923 --- /dev/null +++ b/tools/testing/selftests/arm64/Makefile @@ -0,0 +1,22 @@ +# SPDX-License-Identifier: GPL-2.0 + +include ../lib.mk + +# ARCH can be overridden by the user for cross compiling +ARCH ?= $(shell uname -m 2>/dev/null || echo not) + +ifneq (,$(filter $(ARCH),aarch64 arm64)) + +TEST_CUSTOM_PROGS := $(OUTPUT)/tags_test + +$(OUTPUT)/tags_test: tags_test.c $(OUTPUT)/tags_lib.so + $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $< + +$(OUTPUT)/tags_lib.so: tags_lib.c + $(CC) -o $@ -shared $(CFLAGS) $(LDFLAGS) $^ + +TEST_PROGS := run_tags_test.sh + +all: $(TEST_CUSTOM_PROGS) + +endif diff --git a/tools/testing/selftests/arm64/run_tags_test.sh b/tools/testing/selftests/arm64/run_tags_test.sh new file mode 100755 index 000000000000..2bbe0cd4220b --- /dev/null +++ b/tools/testing/selftests/arm64/run_tags_test.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 + +echo "--------------------" +echo "running tags test" +echo "--------------------" +LD_PRELOAD=./tags_lib.so ./tags_test +if [ $? -ne 0 ]; then + echo "[FAIL]" +else + echo "[PASS]" +fi diff --git a/tools/testing/selftests/arm64/tags_lib.c b/tools/testing/selftests/arm64/tags_lib.c new file mode 100644 index 000000000000..8a674509216e --- /dev/null +++ b/tools/testing/selftests/arm64/tags_lib.c @@ -0,0 +1,42 @@ +#include + +#define TAG_SHIFT (56) +#define TAG_MASK (0xffUL << TAG_SHIFT) + +void *__libc_malloc(size_t size); +void __libc_free(void *ptr); +void *__libc_realloc(void *ptr, size_t size); +void *__libc_calloc(size_t nmemb, size_t size); + +static void *tag_ptr(void *ptr) +{ + unsigned long tag = rand() & 0xff; + if (!ptr) + return ptr; + return (void *)((unsigned long)ptr | (tag << TAG_SHIFT)); +} + +static void *untag_ptr(void *ptr) +{ + return (void *)((unsigned long)ptr & ~TAG_MASK); +} + +void *malloc(size_t size) +{ + return tag_ptr(__libc_malloc(size)); +} + +void free(void *ptr) +{ + __libc_free(untag_ptr(ptr)); +} + +void *realloc(void *ptr, size_t size) +{ + return tag_ptr(__libc_realloc(untag_ptr(ptr), size)); +} + +void *calloc(size_t nmemb, size_t size) +{ + return tag_ptr(__libc_calloc(nmemb, size)); +} diff --git a/tools/testing/selftests/arm64/tags_test.c b/tools/testing/selftests/arm64/tags_test.c new file mode 100644 index 000000000000..263b302874ed --- /dev/null +++ b/tools/testing/selftests/arm64/tags_test.c @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include + +int main(void) +{ + struct utsname *ptr; + int err; + + ptr = (struct utsname *)malloc(sizeof(*ptr)); + err = uname(ptr); + free(ptr); + return err; +}