From patchwork Tue Apr 30 13:24:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10923453 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 4A9C1933 for ; Tue, 30 Apr 2019 13:25:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 389B826E3D for ; Tue, 30 Apr 2019 13:25:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2AFDB285EB; Tue, 30 Apr 2019 13:25:24 +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 B4D5126E3D for ; Tue, 30 Apr 2019 13:25:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 055C36B0008; Tue, 30 Apr 2019 09:25:22 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id F297B6B000A; Tue, 30 Apr 2019 09:25:21 -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 E0D8B6B000C; Tue, 30 Apr 2019 09:25:21 -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 BB7F86B0008 for ; Tue, 30 Apr 2019 09:25:21 -0400 (EDT) Received: by mail-yw1-f69.google.com with SMTP id n203so12765722ywd.20 for ; Tue, 30 Apr 2019 06:25:21 -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=Yt+PWI13/w7NMYz3zwPrNGqq+ReXtpTWddPqmKmBKgk=; b=o1vLovvXd34H8t3iP6a2frBpu1MxJPRjBmV3allD85XFFySztOf7YVeSIE2J+o3ATg FN3vRsYPDp06O+9Gtc1415mPAIyOcYp/fd/7z0k80L2zMtTS6E7irMbG/qcTQBeXv/+h GaBdKfKCc+akSVr5+aMkgRSg8hyJ3wd8fconAjJjCrLhzA/Y2NIsjVIQpnBPkuxGwUNb VR7QOycNm+QnXsH5q1WZB4ayav0sO8FZcw7vFCx9zzPSANZjXqzmRCt1B3gO+GdaFzKb BpwksrZMHS8tgUB1HMLqUpuiiB9AMAwIKxRO9li11I3vqjJU1/uN9TG6Cy2OjR5kwz57 A3MQ== X-Gm-Message-State: APjAAAV2Qx+2t5LZPrcNzUfHuFlxkANjaQCalRzgVYgi1DfpcsFCprkJ Xru9D994R3sjOisQEbdXSUOQleIXGHTeuIUyC8rAUEvO0BlThofo1JwkDbxzlheXeb5J/yAOZIT akxHweKWoX5kQAevcUYcu9hAqv9c5Mx9C/uDcMj4tvlaWTGHAyLJ3F8mqYM680NeTvA== X-Received: by 2002:a25:ef44:: with SMTP id w4mr59743704ybm.174.1556630721487; Tue, 30 Apr 2019 06:25:21 -0700 (PDT) X-Received: by 2002:a25:ef44:: with SMTP id w4mr59743626ybm.174.1556630720671; Tue, 30 Apr 2019 06:25:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630720; cv=none; d=google.com; s=arc-20160816; b=d2dit4AxdccV2GnroEe7rdX0f4H6eURR1/C9GMDJPXE8l4B06U1N2X1XmnZA7eIFEr GE8IxT16Z8sjGtP7dMEGssTJJFQybiHafUYRC6J0TgtKJXBIZ0OHtu3ax+0dg8vD6jcS JepluXk6hFFRP30K2SErryCDIMKnYtSEoIdh+aZBpziywZ2wOyCn5tYgHIosFTaiPh0S 039umsrzrSx0F5Qv+/n2idKf1KSbueEnLX+p7HuTX7Z4U4sDGOOHeiafxJMoPOlO59kY IZiS3KGLZ7KJ8LAn7Oe0lEdBnGERJJOmRbUFQBh9vkoS6eAP/u7QQ9pCIxBkKQvFSifG Eclg== 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=Yt+PWI13/w7NMYz3zwPrNGqq+ReXtpTWddPqmKmBKgk=; b=KX8L8yT5iKD7zTcYWg948ivt61kyjKWiuoEjpMvK/cIS9XDRA1K73jptACrl9N74g2 q8lk+PZ3MI71PKtUvORxSBwZUVPbdKXfinEa1Urkk3uXde/9dAFGo+DnkccnFlgVrRhD QUm6XEOYepluu/1Td4OQ7yp1hKizlOu99o8sO3o9i9+C3DZnu9CDH9XLmwj048G7SwdI 4ZJ9p+axBb4j8YUOhGs/mNEG8jnAxPsh8Y1+GSr3fjTLpNsb2WcGZ4dXRiVvmz3fbKcB 4nWBJPkR2amM35dAH6j2nGbAqd1jrGgSQIXuf7O/jVI1OPHFUmmMeEwyoaKr974Mbgtj Tguw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=jG67MQO6; spf=pass (google.com: domain of 3wezixaokcgcfsiwjdpsaqlttlqj.htrqnszc-rrpafhp.twl@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3wEzIXAoKCGcFSIWJdPSaQLTTLQJ.HTRQNSZc-RRPaFHP.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 n206sor12041977ywn.55.2019.04.30.06.25.20 for (Google Transport Security); Tue, 30 Apr 2019 06:25:20 -0700 (PDT) Received-SPF: pass (google.com: domain of 3wezixaokcgcfsiwjdpsaqlttlqj.htrqnszc-rrpafhp.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=jG67MQO6; spf=pass (google.com: domain of 3wezixaokcgcfsiwjdpsaqlttlqj.htrqnszc-rrpafhp.twl@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3wEzIXAoKCGcFSIWJdPSaQLTTLQJ.HTRQNSZc-RRPaFHP.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=Yt+PWI13/w7NMYz3zwPrNGqq+ReXtpTWddPqmKmBKgk=; b=jG67MQO6uSTq+PQJ7NLS3u3pGPqYxBD6j6Z7zSYau7uP7jvgt3bFEq3faUxv1qOiIb Lhjg89Y6A0R/eNow3E4oC26RwU4x5nya0AVoMdWDIBSbYBBhFLCViwOATovkHqYFgw83 hOVUMM4j6unbJMoC5S4qfPmdZGJuwasxoQN5pLBzNoODYCmMWIdN+DK/0OhTFTFrX99t 6EDwehqEld5biejrj0QAkLSZAfR6m8nobezuReC4ugk/eXbqiTH4l+ivloQAzM7wUwIe NZAar432hbtNkfGtL2tuOjYFn681Ww9UC8SmNz4UpJpUm1tSs7E6peMLsrX4yxW2SbA8 caHA== X-Google-Smtp-Source: APXvYqzn+VCXcz3/MPYUKI1STEW4oOzSku7o6dMmFF+1zuaxsiuVuMrbdGrvK+1IRDapYK9+TGfb+TbRJGhClYr2 X-Received: by 2002:a81:3d51:: with SMTP id k78mr56599045ywa.106.1556630720203; Tue, 30 Apr 2019 06:25:20 -0700 (PDT) Date: Tue, 30 Apr 2019 15:24:57 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 01/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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 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 6b10c21630f5..44041df804a6 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 Tue Apr 30 13:24:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10923457 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 9102814DB for ; Tue, 30 Apr 2019 13:25:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7FB4626E3D for ; Tue, 30 Apr 2019 13:25:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 71B08285EB; Tue, 30 Apr 2019 13:25:28 +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 591AE26E3D for ; Tue, 30 Apr 2019 13:25:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 053F46B000A; Tue, 30 Apr 2019 09:25:26 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id F25266B000C; Tue, 30 Apr 2019 09:25:25 -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 E0FEE6B000D; Tue, 30 Apr 2019 09:25:25 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by kanga.kvack.org (Postfix) with ESMTP id A98066B000A for ; Tue, 30 Apr 2019 09:25:25 -0400 (EDT) Received: by mail-pl1-f198.google.com with SMTP id x2so3692310plr.21 for ; Tue, 30 Apr 2019 06:25:25 -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=IkuD9zPPDPrNqKOg+1EuZo5HlTMskU88lY/hO73XGBQ=; b=m0GMR+SC/Ni2qZ0zGWP0OK62rg0sIhvzpJudmXeCPhNNNSeYG0cNqz3Vb9d532S7nb jl7c03ES0gVVCAm+vWnTwef5/Xr9OHwXANtxykSGYlL1R1U2zxsJrF48A3OthbEN+EJ5 TE9qgUq1Z3QPX56CAVs7aqxe0oVEBuf9PUS8LSxA4uUW3RrMyBf7aqjFHglKILMeM+uT cRvjpmpYdPihgpBBNl7rfMuPU193wN305QY6TonXMxSWiuU/njO7F6KHGKo5b2F4nl62 oPcCZXMJlbS4STdniGZasP1v+dBZ3HZpgvKENgrU7rtLOdbFjjiGwGudBGzd4MeuFzxx w+Mw== X-Gm-Message-State: APjAAAXXdQnwAFmIam4YbR2nFo51FYtD0Vo01p1DQbl+LXBchpnCXKVD 8FJ5WdU9fSHFvCOthsdJxL1mmyHh15AS9Kd76mWmL0Id4NU9M5wDFAm5nMjJc383CHJB+1P4IKY 3fi8KpIXc/ohDw/3jXwtvqJ1c/2srdYJ2JtHSx4rF4bE5xyOAxDKFDD2s8EREJTdGgQ== X-Received: by 2002:a63:f058:: with SMTP id s24mr12854076pgj.257.1556630725200; Tue, 30 Apr 2019 06:25:25 -0700 (PDT) X-Received: by 2002:a63:f058:: with SMTP id s24mr12853959pgj.257.1556630724186; Tue, 30 Apr 2019 06:25:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630724; cv=none; d=google.com; s=arc-20160816; b=0YMAEWo/mQBwlnQgX7Ty0TL1bQVvAvwFArsTv6evCzXhEIJVQq8kRFU47M2r6D6I5l 3dY6T+wC0qIrKRbi4lT8jcdPjiJPg61zldp/HL30ltxQ/VuW3++UPgLbsDek7QLOl5PY RTGHybsJavnSYMxNP3NPCd2RK6pTXA4quITxrEZfeShFIEmWwnLhUWZO1DumAlOKNlDT yapqA9cGbblmrtkCcWWyZcBMf0yG2K/CYChgJ5+069bbg4QbRaECdWr8st8KNTGF1QlP 0Ii2SFaMqto1jjYMlzsD/PnLmBhc8TfxevYW9/j6lOKgKJwLXMU3Wz64KUvwv7DA5lKj 8N+A== 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=IkuD9zPPDPrNqKOg+1EuZo5HlTMskU88lY/hO73XGBQ=; b=OuyvMmD0ugamfp3ALlwSigbfpBZRR8xGG0IhbTG841/ycpJZPBLX9O7brUFND4uXYx r2+D4Gobqxj3BCKf+m94Lr2Sj589E8anWR1H05P0QvPJrzNa4cTGnzMJoasWMfqRCsjR pgWl+X729FrUqHp2m34UBM4l3SgsERL2kl4PG73UC+nMOdmeieAbhwHoUau5ElUqiwAJ 7rg/Zhm7oRHRPNINqS1yX+52uI+i9kIJFBgqXXaWpJaLX6xvOIdoqsbvdhFWQQKxbOhx 985PPHasw39iPLR1lvbEem46lC+MqnSibDE6WdAQJOktmmG4X2gPUgK3QfuRY0MLFHma rN3A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=cjAZo1be; spf=pass (google.com: domain of 3w0zixaokcgoivlzmgsvdtowwotm.kwutqvcf-uusdiks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3w0zIXAoKCGoIVLZMgSVdTOWWOTM.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 b23sor11810188pgb.41.2019.04.30.06.25.24 for (Google Transport Security); Tue, 30 Apr 2019 06:25:24 -0700 (PDT) Received-SPF: pass (google.com: domain of 3w0zixaokcgoivlzmgsvdtowwotm.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=cjAZo1be; spf=pass (google.com: domain of 3w0zixaokcgoivlzmgsvdtowwotm.kwutqvcf-uusdiks.wzo@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3w0zIXAoKCGoIVLZMgSVdTOWWOTM.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=IkuD9zPPDPrNqKOg+1EuZo5HlTMskU88lY/hO73XGBQ=; b=cjAZo1bevEgDG9f0Gp0lCqBUDVGf7WH9HfahHvPYK3yXKOMpkTJl6c0Qs/+BaViS4F SVbEHv0pbmF0M0fXn45Xz+XZ5NA51A6Q84gce81tqYq+4vQ4fSd4Vfr74XM9VMTqpEUn hpbIVHi0Y6E4lGzikQQHuG5LSWrNkshsuGLGjPRywGWJWT4PFmQUF2llhQi6ncC/Vlfh XyXZ2xzPVmh+mASSDoCOMBPHpUNh2v+x16jbihEdr4DI6v1V/jUL7ilAE/v54hqYIVN8 AFB4b6bLnE3ptsM0NTOpxh1giv5Af/8Vei/jZ/b9XgJhABJa8DnBXyZnippbFF98erxD 64TA== X-Google-Smtp-Source: APXvYqxwzeO4aaEq5t7dlXsyLEMZLxNA1xUAM/PWlhFhSshLHzTvKlXrQBr9Il+4R5AJQuOw/QR46XMvR3q8fhhC X-Received: by 2002:a65:534b:: with SMTP id w11mr7522791pgr.210.1556630723459; Tue, 30 Apr 2019 06:25:23 -0700 (PDT) Date: Tue, 30 Apr 2019 15:24:58 +0200 In-Reply-To: Message-Id: <29b7234f48a282037bdfc23e07ff167756fca0df.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 02/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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 --- 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 Tue Apr 30 13:24:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10923461 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 A6836933 for ; Tue, 30 Apr 2019 13:25:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 97870285EB for ; Tue, 30 Apr 2019 13:25:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8A54928AF7; Tue, 30 Apr 2019 13:25: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 12489285EB for ; Tue, 30 Apr 2019 13:25:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 622186B000C; Tue, 30 Apr 2019 09:25:28 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 5AA536B000D; Tue, 30 Apr 2019 09:25:28 -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 3FEAD6B000E; Tue, 30 Apr 2019 09:25:28 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-vs1-f70.google.com (mail-vs1-f70.google.com [209.85.217.70]) by kanga.kvack.org (Postfix) with ESMTP id 19A926B000C for ; Tue, 30 Apr 2019 09:25:28 -0400 (EDT) Received: by mail-vs1-f70.google.com with SMTP id 2so2335266vsp.23 for ; Tue, 30 Apr 2019 06:25:28 -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=BvUTfQkQM7uCDeEtImKKI/2Hme2ZprNLcMmbkGV4djo=; b=XXJ7lzxRqN3S9L3ZMEY/5S+RPHSGGMmUrBRsrYIuzXCzFhk/otx769Ef7uS+y/5nuO 2iCRrIEWaX7QZOcfNZ2redsyvKh6bFUDMGGoUSQXUGXqvFrfBiF07dxcBT6CWlG/MjcB pQYhj1uG8/L0jRYDLfj+JH+BdwBIe/lv1hUcaw7xubDMKfoPNUCIlB9wwNVsmktgtX54 5WORN9X1Q3YWKYTqG6ijw7g/lChSdsNiJobZAjJQgqZFSf6gRRQl5vEIroxbXacaWLHF 2psXrU74QSmCdeg5Y399LzEODOtDF2pkvo1CXi7PVGBSPx2wq1e4cCPP3YkUP8s5oBlu kJJA== X-Gm-Message-State: APjAAAXy9GvK5jr1UuWYpA2em1tyAgL6vYrx/7DusLPbu3RAHGChA3fj MwB6UJDZ26CXChvwz7TVB9AjZNaVltSvx9YO9L31yEAoV0vO/zzu6V7CScV+4ffGjpY8I6YjSEV ZWgH8185ABBV3+5siD3m2Atw9n5d0ZDG7+BwWmdktvcP9sO2iTuMnrQls1EidhWIbJw== X-Received: by 2002:a67:b707:: with SMTP id h7mr13530729vsf.213.1556630727782; Tue, 30 Apr 2019 06:25:27 -0700 (PDT) X-Received: by 2002:a67:b707:: with SMTP id h7mr13530690vsf.213.1556630727028; Tue, 30 Apr 2019 06:25:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630727; cv=none; d=google.com; s=arc-20160816; b=qWUxprNpbb0uL2gXxgudZkWWlsl/cqKcbd4MLQbSkqzolpSosYhG4vyF6T6myrImCx 32NMMg+/2HOiFAUKBnrg4UKdYwwvAiwzVnumjgrFVMF2ySojxdtfUDlgTaCI2CvgJ+Sz TLLn2v3evhYntL3ygjwSxWgH6jzrnrFhMHDqCVfnR2LNoFVTbdOSRbvK8ObbEBp4LqKb TsBQLYz8V0/xE5dOUzpT226swa7g7qB4ICRvZ5eBSzBAXD+hVs66TiDFcU3Eta9UkEHP /fgKHnnLwxsZbZpXtapF0idgAsDXEd/S06qsdYFrEaS8ulQCAb7uLW7+5D09vs2lqWlZ UbbQ== 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=BvUTfQkQM7uCDeEtImKKI/2Hme2ZprNLcMmbkGV4djo=; b=WY3Asu2DGdgtWNix9BBj5+EUQ1uda1iytSVEOgySfSuYJkVpACTK1pgKSeLzoluACM bgbsy7xxRffMOiwMeG4+7uE8qcvpecwsN1HuohhwjaIlk7wfstGC/9/ToDxALgLUNDFK yiCoVUT7GzJiD81njzayTCKuzxF5e2KElnhZ8kFka+6d1Mmrmccaw95DlU0Sj/eqfGJG DGogGAHNt6r0wrAAz3JWtaNmYkkfZe9rsTFp1S4C5bwIpG4DhXruZc1atP+W8/48eaVQ EumRF8tq+fA2BK0ARiGEDFlGZ0SLqq0lgfEjHV70u3BJQFuhqIlNQs+h0WjUFeMnGRN1 cy9A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=dpVTwFKb; spf=pass (google.com: domain of 3xkzixaokcg0lyocpjvygwrzzrwp.nzxwtyfi-xxvglnv.zcr@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3xkzIXAoKCG0LYOcPjVYgWRZZRWP.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 r16sor8666988vso.33.2019.04.30.06.25.26 for (Google Transport Security); Tue, 30 Apr 2019 06:25:27 -0700 (PDT) Received-SPF: pass (google.com: domain of 3xkzixaokcg0lyocpjvygwrzzrwp.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=dpVTwFKb; spf=pass (google.com: domain of 3xkzixaokcg0lyocpjvygwrzzrwp.nzxwtyfi-xxvglnv.zcr@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3xkzIXAoKCG0LYOcPjVYgWRZZRWP.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=BvUTfQkQM7uCDeEtImKKI/2Hme2ZprNLcMmbkGV4djo=; b=dpVTwFKbchbVkkb84ng8BnoHNS2SM91wquNJtuly6Sbp7lXj1bPrbJBiP3SyhTU0xP LuA/DNrbjhKI/dHi3IXFK1lS8O09Sk1+qA/R7rjDLupO2W7Szy3T1dELXK4hEpZqkwPw qD0yKLxb8ZjzpYALNjI1z0dDf4TB8V0IRIOptCx1gDVu9+jOblt+XzKkwvlPuV63pqHj wnFsYt5mNXo/Rj6N9Lo9JMQODsljOWPF/MJrAcRLfdznXkGZCgNmaSrk7MrXtOUREZGb X2QTJ1/W011vEIe5OofpK81AMWPuQy4lXPQltspauNse0OruElYuf2mJ90h6FolZJ8lL VpnA== X-Google-Smtp-Source: APXvYqyRA/Qu4LKAWcvJoaQQlsyyIllouYjqkXgAFh5vrZ+95OMG6R4QdBb3NSzDXJSn7wdUrbj4M88LAp+D5Hqp X-Received: by 2002:a67:ea83:: with SMTP id f3mr2107513vso.59.1556630726654; Tue, 30 Apr 2019 06:25:26 -0700 (PDT) Date: Tue, 30 Apr 2019 15:24:59 +0200 In-Reply-To: Message-Id: <6f38f610cc22dca9aef05d53a5a94b24763cc628.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 03/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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. Signed-off-by: Andrey Konovalov --- 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 58eacd41526c..6209bb9507c7 100644 --- a/lib/strncpy_from_user.c +++ b/lib/strncpy_from_user.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -107,7 +108,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 1c1a1b0e38a5..8ca3d2ac32ec 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 Tue Apr 30 13:25:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10923467 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 228FE933 for ; Tue, 30 Apr 2019 13:25:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0FF7326E3D for ; Tue, 30 Apr 2019 13:25:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0267D285EB; Tue, 30 Apr 2019 13:25:35 +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 521B526E3D for ; Tue, 30 Apr 2019 13:25:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B29D06B000D; Tue, 30 Apr 2019 09:25:32 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id AD9316B000E; Tue, 30 Apr 2019 09:25:32 -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 9A2846B0010; Tue, 30 Apr 2019 09:25:32 -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 6E1D76B000D for ; Tue, 30 Apr 2019 09:25:32 -0400 (EDT) Received: by mail-qk1-f200.google.com with SMTP id i124so11781364qkf.14 for ; Tue, 30 Apr 2019 06:25:32 -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=UuoCrbzv5b8zt4OTCxiSxJOR/ubA99fvcSSBJXRKnzE=; b=c2tVSqphl9hxF3MX4vKIHjKATPdLp2WBx5WrLVFXWJcIHtmzmSRilEaZsu28SapOwH NQDmGgSME2auZLuJNQzzMmc6t8gncvbUli/lXrbVygNsnY6bHHIAdhqFcNIMlvil/KLg GH4i7C75wipJfVxDMSS03++a2fEkB2Hc13BLOrcZJ9xOWvPGMCy5mf7QuiMcMj9mYTQw 0zKBUk5IA5ijlgZEgs0b/m4Don8p2EJupL6OIfFGdMgY9KtetFw0jtSqS3ZJ47h7zdNs C6CNczo9rY+p+WbC7pdp0xhmY9W6yAud17DHY7nJcJBn3E1XIeXy/y4gom92TgrIBezr AGNw== X-Gm-Message-State: APjAAAU2PDrQ5Ge0PFfi/Keect9U3JffyyeIwJJUkS6v0L1tgMEaTgOq CmMNs/UqaCUxOICLEnNV/97FMDbaw+pNVFtqQq6Bocj5zbgIpftmxmRnk5WBhgWIqqCVAJemeDB V6A8FQckBHcpbUJaGtzabOn9gJjUfLqdKmJNw11mS4dqLN4gdI1ec3YizwvA81bYwRg== X-Received: by 2002:ac8:37cf:: with SMTP id e15mr45227987qtc.161.1556630732029; Tue, 30 Apr 2019 06:25:32 -0700 (PDT) X-Received: by 2002:ac8:37cf:: with SMTP id e15mr45227860qtc.161.1556630730308; Tue, 30 Apr 2019 06:25:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630730; cv=none; d=google.com; s=arc-20160816; b=c49P/VnsOc5+TZnFKPL/wJC9flaIuXxrzZlbnvPy90x/syBNpLHPHFVn8NkClhH4Gy eVGlT3hTTu72aPY7D9w0U1SLALRmfNYbds8WfClyNplGFDDjZWFbCZb73QALtLsyP8av 2dL9xBE5VXPMyQzLXtuc4ZmeWgNl/JwblVLc2qwUlYhLiVtGpXns4dohejpI83Sz2Mus iQS+UYudA6Jc7zx2oYh3NulKOky3AOQJs7X1GWbzTzmpmkkFW/6dvM5vFHQuzy1ls+6S o46TkjazXYkzCK0W6CNN4CxOIZtrRW6jdJp+9FnoyA/59ClQlhSyP2T8fOIfDFskH8xr wl5A== 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=UuoCrbzv5b8zt4OTCxiSxJOR/ubA99fvcSSBJXRKnzE=; b=iffaFKr57b8mNnUIYyXDPcfSJeyuzynZ+nBbmn2z2IyhiEKjGlXTGhZ4yuRYkW7hQG 7R7FumMhgG56Q2mZy3Oc/3A4fOwpbaxqHCpDZchUXI5mDqRBmM/XEWncJaVpTLAN4hyC bjMR9Wrv5g/AWsbH9R4zThnU1newTyxhHenz+k091T8R6m16uDo+6b80mf+w/jZ96E95 jnTRBjA51k/95J0yftfV10GJfYNIhP7M1aYaf67/oBv4DpiNHMXRzaypSIrb5zDyv91k mQWW27Em4AdI6KS6pG/4yXbTTHwf31CUGplOWRuAlphh6p4w6C8Zz0mPdplax/cFOJcd TBEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=EMsH7fAm; spf=pass (google.com: domain of 3yuzixaokchaobrfsmybjzuccuzs.qcazwbil-aayjoqy.cfu@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3yUzIXAoKCHAObRfSmYbjZUccUZS.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 x30sor25928580qtx.32.2019.04.30.06.25.30 for (Google Transport Security); Tue, 30 Apr 2019 06:25:30 -0700 (PDT) Received-SPF: pass (google.com: domain of 3yuzixaokchaobrfsmybjzuccuzs.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=EMsH7fAm; spf=pass (google.com: domain of 3yuzixaokchaobrfsmybjzuccuzs.qcazwbil-aayjoqy.cfu@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3yUzIXAoKCHAObRfSmYbjZUccUZS.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=UuoCrbzv5b8zt4OTCxiSxJOR/ubA99fvcSSBJXRKnzE=; b=EMsH7fAmK7kssVH435xmw0fz8das3WJgqzcDhNDYcyNxT5R0lqyHJSCTVHjvHDoeX+ Cza3A/NVV6ocMFLWoamQ+mfGRm49tfzKF3MhBWvOqAgPt6yw9J0OfI4XW2LYU061p6xE lsYpAPjHTbjIvJQMGITeBpzWOzD+bLOP4JeuNLZ4Y59nTzhZYrryO2y1QHRZe5PsF4Kq 1k7nYocm+I8OJrfpYBCzNhUlHWXyxOA7qA54JGzMMPes5NhT/VZxDAcGpY1YtXIQ5fGB 49LUw4hoVyjUL2HjXkaJRjmlKQjWZ4aEw3gNEcGNBKR7XbkrglHE0mKoQOjQ1gwI2nTz ddeQ== X-Google-Smtp-Source: APXvYqyzLKXo6t2omzvNodpOthN7YasDWFmvmmzG+JTX/M7Y9x0ihUYQpCMV5H3WwRxhB44c+mxJSKrcqNn1q5HN X-Received: by 2002:ac8:21c7:: with SMTP id 7mr53156593qtz.66.1556630729885; Tue, 30 Apr 2019 06:25:29 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:00 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 04/17] mm: add ksys_ wrappers 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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 ksys_ wrappers to the following memory syscalls: brk, get_mempolicy (renamed kernel_get_mempolicy -> ksys_get_mempolicy), madvise, mbind (renamed kernel_mbind -> ksys_mbind), mincore, mlock (renamed do_mlock -> ksys_mlock), mlock2, mmap_pgoff, mprotect (renamed do_mprotect_pkey -> ksys_mprotect_pkey), mremap, msync, munlock, munmap, remap_file_pages, shmat, shmdt. The next patch in this series will add a custom implementation for these syscalls that makes them accept tagged pointers on arm64. Signed-off-by: Andrey Konovalov --- include/linux/syscalls.h | 22 +++++++ ipc/shm.c | 7 ++- mm/madvise.c | 129 ++++++++++++++++++++------------------- mm/mempolicy.c | 21 +++---- mm/mincore.c | 57 +++++++++-------- mm/mlock.c | 20 ++++-- mm/mmap.c | 30 ++++++--- mm/mprotect.c | 6 +- mm/mremap.c | 27 +++++--- mm/msync.c | 35 ++++++----- 10 files changed, 213 insertions(+), 141 deletions(-) diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index e446806a561f..70008f5ed84f 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -1260,6 +1260,28 @@ int ksys_ipc(unsigned int call, int first, unsigned long second, unsigned long third, void __user * ptr, long fifth); int compat_ksys_ipc(u32 call, int first, int second, u32 third, u32 ptr, u32 fifth); +unsigned long ksys_mremap(unsigned long addr, unsigned long old_len, + unsigned long new_len, unsigned long flags, + unsigned long new_addr); +int ksys_munmap(unsigned long addr, size_t len); +unsigned long ksys_brk(unsigned long brk); +int ksys_get_mempolicy(int __user *policy, unsigned long __user *nmask, + unsigned long maxnode, unsigned long addr, unsigned long flags); +int ksys_madvise(unsigned long start, size_t len_in, int behavior); +long ksys_mbind(unsigned long start, unsigned long len, + unsigned long mode, const unsigned long __user *nmask, + unsigned long maxnode, unsigned int flags); +__must_check int ksys_mlock(unsigned long start, size_t len, vm_flags_t flags); +__must_check int ksys_mlock2(unsigned long start, size_t len, vm_flags_t flags); +int ksys_munlock(unsigned long start, size_t len); +int ksys_mprotect_pkey(unsigned long start, size_t len, + unsigned long prot, int pkey); +int ksys_msync(unsigned long start, size_t len, int flags); +long ksys_mincore(unsigned long start, size_t len, unsigned char __user *vec); +unsigned long ksys_remap_file_pages(unsigned long start, unsigned long size, + unsigned long prot, unsigned long pgoff, unsigned long flags); +long ksys_shmat(int shmid, char __user *shmaddr, int shmflg); +long ksys_shmdt(char __user *shmaddr); /* * The following kernel syscall equivalents are just wrappers to fs-internal diff --git a/ipc/shm.c b/ipc/shm.c index ce1ca9f7c6e9..557b43968c0e 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -1588,7 +1588,7 @@ long do_shmat(int shmid, char __user *shmaddr, int shmflg, return err; } -SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) +long ksys_shmat(int shmid, char __user *shmaddr, int shmflg) { unsigned long ret; long err; @@ -1600,6 +1600,11 @@ SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) return (long)ret; } +SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) +{ + return ksys_shmat(shmid, shmaddr, shmflg); +} + #ifdef CONFIG_COMPAT #ifndef COMPAT_SHMLBA diff --git a/mm/madvise.c b/mm/madvise.c index 21a7881a2db4..c27f5f14e2ee 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -738,68 +738,7 @@ madvise_behavior_valid(int behavior) } } -/* - * The madvise(2) system call. - * - * Applications can use madvise() to advise the kernel how it should - * handle paging I/O in this VM area. The idea is to help the kernel - * use appropriate read-ahead and caching techniques. The information - * provided is advisory only, and can be safely disregarded by the - * kernel without affecting the correct operation of the application. - * - * behavior values: - * MADV_NORMAL - the default behavior is to read clusters. This - * results in some read-ahead and read-behind. - * MADV_RANDOM - the system should read the minimum amount of data - * on any access, since it is unlikely that the appli- - * cation will need more than what it asks for. - * MADV_SEQUENTIAL - pages in the given range will probably be accessed - * once, so they can be aggressively read ahead, and - * can be freed soon after they are accessed. - * MADV_WILLNEED - the application is notifying the system to read - * some pages ahead. - * MADV_DONTNEED - the application is finished with the given range, - * so the kernel can free resources associated with it. - * MADV_FREE - the application marks pages in the given range as lazy free, - * where actual purges are postponed until memory pressure happens. - * MADV_REMOVE - the application wants to free up the given range of - * pages and associated backing store. - * MADV_DONTFORK - omit this area from child's address space when forking: - * typically, to avoid COWing pages pinned by get_user_pages(). - * MADV_DOFORK - cancel MADV_DONTFORK: no longer omit this area when forking. - * MADV_WIPEONFORK - present the child process with zero-filled memory in this - * range after a fork. - * MADV_KEEPONFORK - undo the effect of MADV_WIPEONFORK - * MADV_HWPOISON - trigger memory error handler as if the given memory range - * were corrupted by unrecoverable hardware memory failure. - * MADV_SOFT_OFFLINE - try to soft-offline the given range of memory. - * MADV_MERGEABLE - the application recommends that KSM try to merge pages in - * this area with pages of identical content from other such areas. - * MADV_UNMERGEABLE- cancel MADV_MERGEABLE: no longer merge pages with others. - * MADV_HUGEPAGE - the application wants to back the given range by transparent - * huge pages in the future. Existing pages might be coalesced and - * new pages might be allocated as THP. - * MADV_NOHUGEPAGE - mark the given range as not worth being backed by - * transparent huge pages so the existing pages will not be - * coalesced into THP and new pages will not be allocated as THP. - * MADV_DONTDUMP - the application wants to prevent pages in the given range - * from being included in its core dump. - * MADV_DODUMP - cancel MADV_DONTDUMP: no longer exclude from core dump. - * - * return values: - * zero - success - * -EINVAL - start + len < 0, start is not page-aligned, - * "behavior" is not a valid value, or application - * is attempting to release locked or shared pages, - * or the specified address range includes file, Huge TLB, - * MAP_SHARED or VMPFNMAP range. - * -ENOMEM - addresses in the specified range are not currently - * mapped, or are outside the AS of the process. - * -EIO - an I/O error occurred while paging in data. - * -EBADF - map exists, but area maps something that isn't a file. - * -EAGAIN - a kernel resource was temporarily unavailable. - */ -SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) +int ksys_madvise(unsigned long start, size_t len_in, int behavior) { unsigned long end, tmp; struct vm_area_struct *vma, *prev; @@ -894,3 +833,69 @@ SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) return error; } + +/* + * The madvise(2) system call. + * + * Applications can use madvise() to advise the kernel how it should + * handle paging I/O in this VM area. The idea is to help the kernel + * use appropriate read-ahead and caching techniques. The information + * provided is advisory only, and can be safely disregarded by the + * kernel without affecting the correct operation of the application. + * + * behavior values: + * MADV_NORMAL - the default behavior is to read clusters. This + * results in some read-ahead and read-behind. + * MADV_RANDOM - the system should read the minimum amount of data + * on any access, since it is unlikely that the appli- + * cation will need more than what it asks for. + * MADV_SEQUENTIAL - pages in the given range will probably be accessed + * once, so they can be aggressively read ahead, and + * can be freed soon after they are accessed. + * MADV_WILLNEED - the application is notifying the system to read + * some pages ahead. + * MADV_DONTNEED - the application is finished with the given range, + * so the kernel can free resources associated with it. + * MADV_FREE - the application marks pages in the given range as lazy free, + * where actual purges are postponed until memory pressure happens. + * MADV_REMOVE - the application wants to free up the given range of + * pages and associated backing store. + * MADV_DONTFORK - omit this area from child's address space when forking: + * typically, to avoid COWing pages pinned by get_user_pages(). + * MADV_DOFORK - cancel MADV_DONTFORK: no longer omit this area when forking. + * MADV_WIPEONFORK - present the child process with zero-filled memory in this + * range after a fork. + * MADV_KEEPONFORK - undo the effect of MADV_WIPEONFORK + * MADV_HWPOISON - trigger memory error handler as if the given memory range + * were corrupted by unrecoverable hardware memory failure. + * MADV_SOFT_OFFLINE - try to soft-offline the given range of memory. + * MADV_MERGEABLE - the application recommends that KSM try to merge pages in + * this area with pages of identical content from other such areas. + * MADV_UNMERGEABLE- cancel MADV_MERGEABLE: no longer merge pages with others. + * MADV_HUGEPAGE - the application wants to back the given range by transparent + * huge pages in the future. Existing pages might be coalesced and + * new pages might be allocated as THP. + * MADV_NOHUGEPAGE - mark the given range as not worth being backed by + * transparent huge pages so the existing pages will not be + * coalesced into THP and new pages will not be allocated as THP. + * MADV_DONTDUMP - the application wants to prevent pages in the given range + * from being included in its core dump. + * MADV_DODUMP - cancel MADV_DONTDUMP: no longer exclude from core dump. + * + * return values: + * zero - success + * -EINVAL - start + len < 0, start is not page-aligned, + * "behavior" is not a valid value, or application + * is attempting to release locked or shared pages, + * or the specified address range includes file, Huge TLB, + * MAP_SHARED or VMPFNMAP range. + * -ENOMEM - addresses in the specified range are not currently + * mapped, or are outside the AS of the process. + * -EIO - an I/O error occurred while paging in data. + * -EBADF - map exists, but area maps something that isn't a file. + * -EAGAIN - a kernel resource was temporarily unavailable. + */ +SYSCALL_DEFINE3(madvise, unsigned long, start, size_t, len_in, int, behavior) +{ + return ksys_madvise(start, len_in, behavior); +} diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 2219e747df49..c2f82a045ceb 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c @@ -1352,9 +1352,9 @@ static int copy_nodes_to_user(unsigned long __user *mask, unsigned long maxnode, return copy_to_user(mask, nodes_addr(*nodes), copy) ? -EFAULT : 0; } -static long kernel_mbind(unsigned long start, unsigned long len, - unsigned long mode, const unsigned long __user *nmask, - unsigned long maxnode, unsigned int flags) +long ksys_mbind(unsigned long start, unsigned long len, + unsigned long mode, const unsigned long __user *nmask, + unsigned long maxnode, unsigned int flags) { nodemask_t nodes; int err; @@ -1377,7 +1377,7 @@ SYSCALL_DEFINE6(mbind, unsigned long, start, unsigned long, len, unsigned long, mode, const unsigned long __user *, nmask, unsigned long, maxnode, unsigned int, flags) { - return kernel_mbind(start, len, mode, nmask, maxnode, flags); + return ksys_mbind(start, len, mode, nmask, maxnode, flags); } /* Set the process memory policy */ @@ -1507,11 +1507,8 @@ SYSCALL_DEFINE4(migrate_pages, pid_t, pid, unsigned long, maxnode, /* Retrieve NUMA policy */ -static int kernel_get_mempolicy(int __user *policy, - unsigned long __user *nmask, - unsigned long maxnode, - unsigned long addr, - unsigned long flags) +int ksys_get_mempolicy(int __user *policy, unsigned long __user *nmask, + unsigned long maxnode, unsigned long addr, unsigned long flags) { int err; int uninitialized_var(pval); @@ -1538,7 +1535,7 @@ SYSCALL_DEFINE5(get_mempolicy, int __user *, policy, unsigned long __user *, nmask, unsigned long, maxnode, unsigned long, addr, unsigned long, flags) { - return kernel_get_mempolicy(policy, nmask, maxnode, addr, flags); + return ksys_get_mempolicy(policy, nmask, maxnode, addr, flags); } #ifdef CONFIG_COMPAT @@ -1559,7 +1556,7 @@ COMPAT_SYSCALL_DEFINE5(get_mempolicy, int __user *, policy, if (nmask) nm = compat_alloc_user_space(alloc_size); - err = kernel_get_mempolicy(policy, nm, nr_bits+1, addr, flags); + err = ksys_get_mempolicy(policy, nm, nr_bits+1, addr, flags); if (!err && nmask) { unsigned long copy_size; @@ -1613,7 +1610,7 @@ COMPAT_SYSCALL_DEFINE6(mbind, compat_ulong_t, start, compat_ulong_t, len, return -EFAULT; } - return kernel_mbind(start, len, mode, nm, nr_bits+1, flags); + return ksys_mbind(start, len, mode, nm, nr_bits+1, flags); } COMPAT_SYSCALL_DEFINE4(migrate_pages, compat_pid_t, pid, diff --git a/mm/mincore.c b/mm/mincore.c index 218099b5ed31..a609bd8128da 100644 --- a/mm/mincore.c +++ b/mm/mincore.c @@ -197,32 +197,7 @@ static long do_mincore(unsigned long addr, unsigned long pages, unsigned char *v return (end - addr) >> PAGE_SHIFT; } -/* - * The mincore(2) system call. - * - * mincore() returns the memory residency status of the pages in the - * current process's address space specified by [addr, addr + len). - * The status is returned in a vector of bytes. The least significant - * bit of each byte is 1 if the referenced page is in memory, otherwise - * it is zero. - * - * Because the status of a page can change after mincore() checks it - * but before it returns to the application, the returned vector may - * contain stale information. Only locked pages are guaranteed to - * remain in memory. - * - * return values: - * zero - success - * -EFAULT - vec points to an illegal address - * -EINVAL - addr is not a multiple of PAGE_SIZE - * -ENOMEM - Addresses in the range [addr, addr + len] are - * invalid for the address space of this process, or - * specify one or more pages which are not currently - * mapped - * -EAGAIN - A kernel resource was temporarily unavailable. - */ -SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len, - unsigned char __user *, vec) +long ksys_mincore(unsigned long start, size_t len, unsigned char __user *vec) { long retval; unsigned long pages; @@ -271,3 +246,33 @@ SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len, free_page((unsigned long) tmp); return retval; } + +/* + * The mincore(2) system call. + * + * mincore() returns the memory residency status of the pages in the + * current process's address space specified by [addr, addr + len). + * The status is returned in a vector of bytes. The least significant + * bit of each byte is 1 if the referenced page is in memory, otherwise + * it is zero. + * + * Because the status of a page can change after mincore() checks it + * but before it returns to the application, the returned vector may + * contain stale information. Only locked pages are guaranteed to + * remain in memory. + * + * return values: + * zero - success + * -EFAULT - vec points to an illegal address + * -EINVAL - addr is not a multiple of PAGE_SIZE + * -ENOMEM - Addresses in the range [addr, addr + len] are + * invalid for the address space of this process, or + * specify one or more pages which are not currently + * mapped + * -EAGAIN - A kernel resource was temporarily unavailable. + */ +SYSCALL_DEFINE3(mincore, unsigned long, start, size_t, len, + unsigned char __user *, vec) +{ + return ksys_mincore(start, len, vec); +} diff --git a/mm/mlock.c b/mm/mlock.c index 080f3b36415b..09e449447539 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -668,7 +668,7 @@ static int count_mm_mlocked_page_nr(struct mm_struct *mm, return count >> PAGE_SHIFT; } -static __must_check int do_mlock(unsigned long start, size_t len, vm_flags_t flags) +__must_check int ksys_mlock(unsigned long start, size_t len, vm_flags_t flags) { unsigned long locked; unsigned long lock_limit; @@ -715,10 +715,10 @@ static __must_check int do_mlock(unsigned long start, size_t len, vm_flags_t fla SYSCALL_DEFINE2(mlock, unsigned long, start, size_t, len) { - return do_mlock(start, len, VM_LOCKED); + return ksys_mlock(start, len, VM_LOCKED); } -SYSCALL_DEFINE3(mlock2, unsigned long, start, size_t, len, int, flags) +__must_check int ksys_mlock2(unsigned long start, size_t len, vm_flags_t flags) { vm_flags_t vm_flags = VM_LOCKED; @@ -728,10 +728,15 @@ SYSCALL_DEFINE3(mlock2, unsigned long, start, size_t, len, int, flags) if (flags & MLOCK_ONFAULT) vm_flags |= VM_LOCKONFAULT; - return do_mlock(start, len, vm_flags); + return ksys_mlock(start, len, vm_flags); } -SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) +SYSCALL_DEFINE3(mlock2, unsigned long, start, size_t, len, int, flags) +{ + return ksys_mlock2(start, len, flags); +} + +int ksys_munlock(unsigned long start, size_t len) { int ret; @@ -746,6 +751,11 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) return ret; } +SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len) +{ + return ksys_munlock(start, len); +} + /* * Take the MCL_* flags passed into mlockall (or 0 if called from munlockall) * and translate into the appropriate modifications to mm->def_flags and/or the diff --git a/mm/mmap.c b/mm/mmap.c index bd7b9f293b39..09bfaf36b961 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -189,7 +189,8 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma) static int do_brk_flags(unsigned long addr, unsigned long request, unsigned long flags, struct list_head *uf); -SYSCALL_DEFINE1(brk, unsigned long, brk) + +unsigned long ksys_brk(unsigned long brk) { unsigned long retval; unsigned long newbrk, oldbrk, origbrk; @@ -288,6 +289,11 @@ SYSCALL_DEFINE1(brk, unsigned long, brk) return retval; } +SYSCALL_DEFINE1(brk, unsigned long, brk) +{ + return ksys_brk(brk); +} + static long vma_compute_subtree_gap(struct vm_area_struct *vma) { unsigned long max, prev_end, subtree_gap; @@ -2870,18 +2876,19 @@ int vm_munmap(unsigned long start, size_t len) } EXPORT_SYMBOL(vm_munmap); -SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) +int ksys_munmap(unsigned long addr, size_t len) { profile_munmap(addr); return __vm_munmap(addr, len, true); } +SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len) +{ + return ksys_munmap(addr, len); +} -/* - * Emulation of deprecated remap_file_pages() syscall. - */ -SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, - unsigned long, prot, unsigned long, pgoff, unsigned long, flags) +unsigned long ksys_remap_file_pages(unsigned long start, unsigned long size, + unsigned long prot, unsigned long pgoff, unsigned long flags) { struct mm_struct *mm = current->mm; @@ -2976,6 +2983,15 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, return ret; } +/* + * Emulation of deprecated remap_file_pages() syscall. + */ +SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size, + unsigned long, prot, unsigned long, pgoff, unsigned long, flags) +{ + return ksys_remap_file_pages(start, size, prot, pgoff, flags); +} + /* * this is really a simplified "do_mmap". it only handles * anonymous maps. eventually we may be able to do some diff --git a/mm/mprotect.c b/mm/mprotect.c index 028c724dcb1a..07344bdd7a04 100644 --- a/mm/mprotect.c +++ b/mm/mprotect.c @@ -454,7 +454,7 @@ mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, /* * pkey==-1 when doing a legacy mprotect() */ -static int do_mprotect_pkey(unsigned long start, size_t len, +int ksys_mprotect_pkey(unsigned long start, size_t len, unsigned long prot, int pkey) { unsigned long nstart, end, tmp, reqprot; @@ -578,7 +578,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len, SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, unsigned long, prot) { - return do_mprotect_pkey(start, len, prot, -1); + return ksys_mprotect_pkey(start, len, prot, -1); } #ifdef CONFIG_ARCH_HAS_PKEYS @@ -586,7 +586,7 @@ SYSCALL_DEFINE3(mprotect, unsigned long, start, size_t, len, SYSCALL_DEFINE4(pkey_mprotect, unsigned long, start, size_t, len, unsigned long, prot, int, pkey) { - return do_mprotect_pkey(start, len, prot, pkey); + return ksys_mprotect_pkey(start, len, prot, pkey); } SYSCALL_DEFINE2(pkey_alloc, unsigned long, flags, unsigned long, init_val) diff --git a/mm/mremap.c b/mm/mremap.c index e3edef6b7a12..fec1f9911388 100644 --- a/mm/mremap.c +++ b/mm/mremap.c @@ -584,16 +584,9 @@ static int vma_expandable(struct vm_area_struct *vma, unsigned long delta) return 1; } -/* - * Expand (or shrink) an existing mapping, potentially moving it at the - * same time (controlled by the MREMAP_MAYMOVE flag and available VM space) - * - * MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise - * This option implies MREMAP_MAYMOVE. - */ -SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, - unsigned long, new_len, unsigned long, flags, - unsigned long, new_addr) +unsigned long ksys_mremap(unsigned long addr, unsigned long old_len, + unsigned long new_len, unsigned long flags, + unsigned long new_addr) { struct mm_struct *mm = current->mm; struct vm_area_struct *vma; @@ -726,3 +719,17 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, userfaultfd_unmap_complete(mm, &uf_unmap); return ret; } + +/* + * Expand (or shrink) an existing mapping, potentially moving it at the + * same time (controlled by the MREMAP_MAYMOVE flag and available VM space) + * + * MREMAP_FIXED option added 5-Dec-1999 by Benjamin LaHaise + * This option implies MREMAP_MAYMOVE. + */ +SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len, + unsigned long, new_len, unsigned long, flags, + unsigned long, new_addr) +{ + return ksys_mremap(addr, old_len, new_len, flags, new_addr); +} diff --git a/mm/msync.c b/mm/msync.c index ef30a429623a..b5a013549626 100644 --- a/mm/msync.c +++ b/mm/msync.c @@ -15,21 +15,7 @@ #include #include -/* - * MS_SYNC syncs the entire file - including mappings. - * - * MS_ASYNC does not start I/O (it used to, up to 2.5.67). - * Nor does it marks the relevant pages dirty (it used to up to 2.6.17). - * Now it doesn't do anything, since dirty pages are properly tracked. - * - * The application may now run fsync() to - * write out the dirty pages and wait on the writeout and check the result. - * Or the application may run fadvise(FADV_DONTNEED) against the fd to start - * async writeout immediately. - * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to - * applications. - */ -SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags) +int ksys_msync(unsigned long start, size_t len, int flags) { unsigned long end; struct mm_struct *mm = current->mm; @@ -106,3 +92,22 @@ SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags) out: return error ? : unmapped_error; } + +/* + * MS_SYNC syncs the entire file - including mappings. + * + * MS_ASYNC does not start I/O (it used to, up to 2.5.67). + * Nor does it marks the relevant pages dirty (it used to up to 2.6.17). + * Now it doesn't do anything, since dirty pages are properly tracked. + * + * The application may now run fsync() to + * write out the dirty pages and wait on the writeout and check the result. + * Or the application may run fadvise(FADV_DONTNEED) against the fd to start + * async writeout immediately. + * So by _not_ starting I/O in MS_ASYNC we provide complete flexibility to + * applications. + */ +SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags) +{ + return ksys_msync(start, len, flags); +} From patchwork Tue Apr 30 13:25:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10923471 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 CBC7014DB for ; Tue, 30 Apr 2019 13:25:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BC04A27EE2 for ; Tue, 30 Apr 2019 13:25:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id AF1A62860A; Tue, 30 Apr 2019 13:25:38 +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 0B22E27EE2 for ; Tue, 30 Apr 2019 13:25:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BED586B000E; Tue, 30 Apr 2019 09:25:34 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B78D06B0010; Tue, 30 Apr 2019 09:25: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 A18586B0266; Tue, 30 Apr 2019 09:25:34 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by kanga.kvack.org (Postfix) with ESMTP id 7876A6B000E for ; Tue, 30 Apr 2019 09:25:34 -0400 (EDT) Received: by mail-qk1-f199.google.com with SMTP id z20so9408733qkj.6 for ; Tue, 30 Apr 2019 06:25: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=sP41vSza+MgZL4E9JOHZR6SNiiwo3z4wqXp2POej+GY=; b=lts4LijYgLPK98WkVtiI0wS3f3wa3XthrS3lqVgv+kLYK91kzJ5bgVlMVSal74K4+u 7fbH/Kaw6QFCQltGgw8asY9fLITMLtPBuYxcKV7bVZhu30iotlhDHRzr+ENx/3+fPXuM XiDgM957N07GEKXQzSTco1mG1cLHiRr0i/69VZmm5mDPqGr5pJvZ35dVlfbFOZO8AhmD Ks/QPLw4td72UTN+Hff9vFY7xDSlZehATZh1NFSGaCYncMN5jckOGAbBT8WDylxhtsuz cM3Tr0J0Ab8nahfz3ajTe8S++gu9xzqDqZ3Zp7fp2UO4qI9AMCfJEIRU1giQcH5OFLLZ o09A== X-Gm-Message-State: APjAAAXMxs5h6nJVjaCe2IPfD8Kpc52VlUsJNkeIlIOTT6+cLoLpTEJ9 tJelgQB/CtOm9chVr77EIrvE/nQAz1AJ3ARzq5hEzVErd4r79AKQHYieZNGDLEKzWjMCRmx256Y /14a7LTE9t4/iW/3GNncNm4k8Lmr4As+hRaC7yITS49M5XfJMuqrCITD6F4b9LU7Eag== X-Received: by 2002:ac8:1a41:: with SMTP id q1mr36331083qtk.185.1556630734204; Tue, 30 Apr 2019 06:25:34 -0700 (PDT) X-Received: by 2002:ac8:1a41:: with SMTP id q1mr36331022qtk.185.1556630733364; Tue, 30 Apr 2019 06:25:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630733; cv=none; d=google.com; s=arc-20160816; b=etxObT5HK4+3QAgYV+T0A51zrI3TBrmmGhsGGi5nMpTvmPCy37elIBO9cFqVgkXgf0 r9F6/A5rsfmY6rOyAFX9cgozZ1Q9VYv1R+KxriUjPoxikQI0zoLzX0jQqb8+g4E8Ekkr oPbhORvEnPo832+U8Q2aF6b56dwn2yFZSPPkD9PH4jKaIMwWLwVH3wc+FdBB8M72QGG9 iRInRH5Y2kSt653oQNabBpC128nMrIgKhv4QAPA5Gr3VeAADIl8ZPgMo3Mbafg6rtSnI AfdQUK3hAZWjSOFK4UCyFhVl0YHUkeThkH1xXv7AvN97Y6UPu/DGfKVzGBMgD7ElL5W3 qbuA== 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=sP41vSza+MgZL4E9JOHZR6SNiiwo3z4wqXp2POej+GY=; b=xnXIrDq7DGxLLkDmbOq4HWFG3fQ7LYUHKMS77MJM674EbxnFuZRmJTQaWHCld/zbmj SRWrYsMWThoHlOOeGdlVbcdCorQ3GIMKrO55T1XznTjKqrJUINl7J8eOND2qOucRnLoF FnlgIz3uP1rIVdd2aGmnb+FQqh/onAsfKkOosJgqDriYG4yNTvotEcb6iKtsTIcOO/Ts GiD8qUFFIIqE87tfFc+3nTMtLSpoOZ5QhP3GSvusgGNpAFYOZk3POGyBIEAaQo17vCBb VCWWHQK9oUaNnqrnk/RtBNmNLOTiwRtJcJlw/w1q1V637sN2LRPA5KxlSvuLumqsQNmB zkJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=sj70XUZy; spf=pass (google.com: domain of 3zezixaokchmreuivpbemcxffxcv.tfdczelo-ddbmrtb.fix@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3zEzIXAoKCHMReUiVpbemcXffXcV.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 c13sor10238960qte.14.2019.04.30.06.25.33 for (Google Transport Security); Tue, 30 Apr 2019 06:25:33 -0700 (PDT) Received-SPF: pass (google.com: domain of 3zezixaokchmreuivpbemcxffxcv.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=sj70XUZy; spf=pass (google.com: domain of 3zezixaokchmreuivpbemcxffxcv.tfdczelo-ddbmrtb.fix@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=3zEzIXAoKCHMReUiVpbemcXffXcV.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=sP41vSza+MgZL4E9JOHZR6SNiiwo3z4wqXp2POej+GY=; b=sj70XUZyY78fBBLRN0Y0ejY13Ah+DWSq5MZvdtC4oy13cP3DTQDgLFkcENh07spfmR 23eMW0ICrpgPZePCfs+0BA1gHPdG5T6uXrEWd81Tbha8dBRDM5Df4bgp8ypNTHmZGxhB zSa9r+Rp6W+STnkRdeIoDVRh7qzf6mRVz3aHnzxLBAlwWCR6kWuFgAJ4CJMcjRmxd08s WnsYITF9lzQXqyZYteDI696ABzkYAJcaC1sR3amNrgXWNyCgGFhtLoxDguJqocrpZ4Uy mOYkJ3BstUbrdtjiLHmZC47MGFm370/x5FYq0YwcLbrA00fWtbMhOMLHm2kOb5VLfvHU R2IA== X-Google-Smtp-Source: APXvYqwOIvRkWypSUt5RnFMU33k3VTnn9YbxJDW32+qwnbYJck7Qr3YzoF+bGVldwhSnM3lKHenrz7Th7S5LU/LL X-Received: by 2002:ac8:186e:: with SMTP id n43mr29405979qtk.69.1556630732994; Tue, 30 Apr 2019 06:25:32 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:01 +0200 In-Reply-To: Message-Id: <9b9c21f2895b1dfd7079572ea6d9d4fd6b5bbc55.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 05/17] arms64: 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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: brk, get_mempolicy, madvise, mbind, mincore, mlock, mlock2, mmap, mmap_pgoff, mprotect, mremap, msync, munlock, munmap, remap_file_pages, shmat and shmdt. This is done by untagging pointers passed to these syscalls in the prologues of their handlers. Signed-off-by: Andrey Konovalov --- arch/arm64/kernel/sys.c | 128 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 127 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kernel/sys.c b/arch/arm64/kernel/sys.c index b44065fb1616..933bb9f3d6ec 100644 --- a/arch/arm64/kernel/sys.c +++ b/arch/arm64/kernel/sys.c @@ -35,10 +35,33 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, unsigned long, len, { if (offset_in_page(off) != 0) return -EINVAL; - + addr = untagged_addr(addr); return ksys_mmap_pgoff(addr, len, prot, flags, fd, off >> PAGE_SHIFT); } +SYSCALL_DEFINE6(arm64_mmap_pgoff, unsigned long, addr, unsigned long, len, + unsigned long, prot, unsigned long, flags, + unsigned long, fd, unsigned long, pgoff) +{ + addr = untagged_addr(addr); + return ksys_mmap_pgoff(addr, len, prot, flags, fd, pgoff); +} + +SYSCALL_DEFINE5(arm64_mremap, unsigned long, addr, unsigned long, old_len, + unsigned long, new_len, unsigned long, flags, + unsigned long, new_addr) +{ + addr = untagged_addr(addr); + new_addr = untagged_addr(new_addr); + return ksys_mremap(addr, old_len, new_len, flags, new_addr); +} + +SYSCALL_DEFINE2(arm64_munmap, unsigned long, addr, size_t, len) +{ + addr = untagged_addr(addr); + return ksys_munmap(addr, len); +} + SYSCALL_DEFINE1(arm64_personality, unsigned int, personality) { if (personality(personality) == PER_LINUX32 && @@ -47,10 +70,113 @@ SYSCALL_DEFINE1(arm64_personality, unsigned int, personality) return ksys_personality(personality); } +SYSCALL_DEFINE1(arm64_brk, unsigned long, brk) +{ + brk = untagged_addr(brk); + return ksys_brk(brk); +} + +SYSCALL_DEFINE5(arm64_get_mempolicy, int __user *, policy, + unsigned long __user *, nmask, unsigned long, maxnode, + unsigned long, addr, unsigned long, flags) +{ + addr = untagged_addr(addr); + return ksys_get_mempolicy(policy, nmask, maxnode, addr, flags); +} + +SYSCALL_DEFINE3(arm64_madvise, unsigned long, start, + size_t, len_in, int, behavior) +{ + start = untagged_addr(start); + return ksys_madvise(start, len_in, behavior); +} + +SYSCALL_DEFINE6(arm64_mbind, unsigned long, start, unsigned long, len, + unsigned long, mode, const unsigned long __user *, nmask, + unsigned long, maxnode, unsigned int, flags) +{ + start = untagged_addr(start); + return ksys_mbind(start, len, mode, nmask, maxnode, flags); +} + +SYSCALL_DEFINE2(arm64_mlock, unsigned long, start, size_t, len) +{ + start = untagged_addr(start); + return ksys_mlock(start, len, VM_LOCKED); +} + +SYSCALL_DEFINE2(arm64_mlock2, unsigned long, start, size_t, len) +{ + start = untagged_addr(start); + return ksys_mlock(start, len, VM_LOCKED); +} + +SYSCALL_DEFINE2(arm64_munlock, unsigned long, start, size_t, len) +{ + start = untagged_addr(start); + return ksys_munlock(start, len); +} + +SYSCALL_DEFINE3(arm64_mprotect, unsigned long, start, size_t, len, + unsigned long, prot) +{ + start = untagged_addr(start); + return ksys_mprotect_pkey(start, len, prot, -1); +} + +SYSCALL_DEFINE3(arm64_msync, unsigned long, start, size_t, len, int, flags) +{ + start = untagged_addr(start); + return ksys_msync(start, len, flags); +} + +SYSCALL_DEFINE3(arm64_mincore, unsigned long, start, size_t, len, + unsigned char __user *, vec) +{ + start = untagged_addr(start); + return ksys_mincore(start, len, vec); +} + +SYSCALL_DEFINE5(arm64_remap_file_pages, unsigned long, start, + unsigned long, size, unsigned long, prot, + unsigned long, pgoff, unsigned long, flags) +{ + start = untagged_addr(start); + return ksys_remap_file_pages(start, size, prot, pgoff, flags); +} + +SYSCALL_DEFINE3(arm64_shmat, int, shmid, char __user *, shmaddr, int, shmflg) +{ + shmaddr = untagged_addr(shmaddr); + return ksys_shmat(shmid, shmaddr, shmflg); +} + +SYSCALL_DEFINE1(arm64_shmdt, char __user *, shmaddr) +{ + shmaddr = untagged_addr(shmaddr); + return ksys_shmdt(shmaddr); +} + /* * Wrappers to pass the pt_regs argument. */ #define sys_personality sys_arm64_personality +#define sys_mmap_pgoff sys_arm64_mmap_pgoff +#define sys_mremap sys_arm64_mremap +#define sys_munmap sys_arm64_munmap +#define sys_brk sys_arm64_brk +#define sys_get_mempolicy sys_arm64_get_mempolicy +#define sys_madvise sys_arm64_madvise +#define sys_mbind sys_arm64_mbind +#define sys_mlock sys_arm64_mlock +#define sys_mlock2 sys_arm64_mlock2 +#define sys_munlock sys_arm64_munlock +#define sys_mprotect sys_arm64_mprotect +#define sys_msync sys_arm64_msync +#define sys_mincore sys_arm64_mincore +#define sys_remap_file_pages sys_arm64_remap_file_pages +#define sys_shmat sys_arm64_shmat +#define sys_shmdt sys_arm64_shmdt asmlinkage long sys_ni_syscall(const struct pt_regs *); #define __arm64_sys_ni_syscall sys_ni_syscall From patchwork Tue Apr 30 13:25:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Konovalov X-Patchwork-Id: 10923475 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 A45A2933 for ; Tue, 30 Apr 2019 13:25:41 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9107A26E3D for ; Tue, 30 Apr 2019 13:25:41 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 81E3D285EB; Tue, 30 Apr 2019 13:25:41 +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 2135426E3D for ; Tue, 30 Apr 2019 13:25:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B773A6B0010; Tue, 30 Apr 2019 09:25:37 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B2B186B0266; Tue, 30 Apr 2019 09:25: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 9815B6B0269; Tue, 30 Apr 2019 09:25:37 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-vs1-f69.google.com (mail-vs1-f69.google.com [209.85.217.69]) by kanga.kvack.org (Postfix) with ESMTP id 686796B0010 for ; Tue, 30 Apr 2019 09:25:37 -0400 (EDT) Received: by mail-vs1-f69.google.com with SMTP id z133so2346165vsc.8 for ; Tue, 30 Apr 2019 06:25: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=CVV6psz/Vns5azsm7jZt0BKocrzPfr2CsD5f51mITmQ=; b=gwiBKUke4D9C2tx/hJ9WjzZOsVUVZ675jcC0X/WVCofU5GmHhAilhjVhp6ke3ndqhc V28HNgRDxPhSy0zH/Azs7K8gCSewlS/kd4oWKOJC5WuSSGbEo/Iy1987b5uyBBVjdKlo MB4Sg5cAiK71HceFeTBkOWNaG6zB5EIeZEWaTjU121xxz+9H5OXxLtrmgkb2/rH59wue sQs6GHSwINqjSAErB/Wf446EeCIYgZdeTI9jdS255pL2MyTTVGf6wdh0elbTc6Oi3yrb l0mkpgNPSEnc06mHAjdUNEqMe6GY328TK+remYRTZOucrFmLito3c+GbRaRMt+EAoqKW hWBw== X-Gm-Message-State: APjAAAUU79TugJVekG5gVqpuTa8fqHCCQHnKR7bXvRvUb4R7mFOPZHDl Ce+pZtZ7xpSKIpguEjDMh9CZm+GsBdDp+DhNPCaeY1PCcawRfpGJuoRYyqP9fOn1rv5K0dF+6ky 6wCipEa7eu3ZJq0DfSomQIEf2pVMtivZEzvahL2xsRqU3DAE+BAzJlhvCWTaUa3NKig== X-Received: by 2002:a1f:b4ce:: with SMTP id d197mr35597876vkf.57.1556630737089; Tue, 30 Apr 2019 06:25:37 -0700 (PDT) X-Received: by 2002:a1f:b4ce:: with SMTP id d197mr35597842vkf.57.1556630736418; Tue, 30 Apr 2019 06:25:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630736; cv=none; d=google.com; s=arc-20160816; b=Iq9RWWnrFgTHfN/4r39T50Y8gGlhzHbh2VI2L0n89EVByEp3AJwI87UrkmpYB7fAl0 sDMtaVXdgCKzfELdwVqAuvGAF62SAtqRAAOdTSfrVVeu6PJB+B51KnMtCDIBcjkHP8rM rBiHtc1I/MdCgsD72voL3tdgXvK+mBfLanSN0AOuv40xe0ryR/ldecbp2KjTqZNQem1Q 1lYqVM8gMNzjK4iyRNs86Yi/YvQPQNJ2W5l5W6qXUdZ7UnTHDNsAo5oa727IoGSTKGmE KAkgnOgF0SFVz2bwcxDhD+hQOV/ZIhXu8Z+PM3TAs3LH57ziC+b0PWiWoU1dvUuI9sko JTjA== 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=CVV6psz/Vns5azsm7jZt0BKocrzPfr2CsD5f51mITmQ=; b=nKl1qKRHrO4xPye83Zn9tOOWZxOWhwOlxnkvOQh/A+b4jXVycnoCpBygyWcvAkpi7r hLy00w32leazhN3fFKAt9uNCDs8kPcnUZW/yqhS5It/7OZ2z0Ik0CQXROhZm4oW/Tw+e oyTj8JmItLSQLdN+kSPla7RZSi73njSP0n+YRgWj3PWgPk6nEbTuJvPi0eMnHLkMiP4r /Zq832PoTdIWBTWv7Uyl/d1Ay/KXFKkJHoC7Bh3CxsllcmrRHdGZErDdWmYm0a60nBYg /v/CzTWd01bQQPUkO0658ltgNosJSpCjoOXjdGXQpCkawzJIx813P0rTeZca/W8DLq2w Bvqw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=pHAUFUPI; spf=pass (google.com: domain of 30ezixaokchcviymztfiqgbjjbgz.xjhgdips-hhfqvxf.jmb@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=30EzIXAoKCHcViYmZtfiqgbjjbgZ.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 f65sor4455312vsd.43.2019.04.30.06.25.36 for (Google Transport Security); Tue, 30 Apr 2019 06:25:36 -0700 (PDT) Received-SPF: pass (google.com: domain of 30ezixaokchcviymztfiqgbjjbgz.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=pHAUFUPI; spf=pass (google.com: domain of 30ezixaokchcviymztfiqgbjjbgz.xjhgdips-hhfqvxf.jmb@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=30EzIXAoKCHcViYmZtfiqgbjjbgZ.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=CVV6psz/Vns5azsm7jZt0BKocrzPfr2CsD5f51mITmQ=; b=pHAUFUPIK00HUvs8fYzbfMDhOtYuRZOYj18jl6SUOemiz8hMuVoEwpyBcBFZsdPfRy CP69mD/DWkxSBrhRr7+Ao/OQBLtynTBk0B9gn31tW8yWHjU69Q7PB4ZDpgvtdnhUTEzK 8CbwpHg2uux/P91ru8mr0G2/NpJ+DVwloVARu7ft7n27vA6hkWJDGMY1mugB3YmYuyhT OwmXeDxT9woV4yHQlsAA+KWTEq0dG80iCwsoH+0J1dhKu1C33LiknxZR75he7h2J78XE ZKdvpYjQpomJrWqZzF9raVXk6z/lSdaqbAYdD0YzglrS0vRmztdJidedrkfiqCqRVd3N hnSw== X-Google-Smtp-Source: APXvYqxbH0hW8IUGPJRsH+MKg4I9yJOI2DrUXBayHbDSUEVQsqLwVaAkxsd+/0KcP5RvItcIqz2adgVjyHXkB8kF X-Received: by 2002:a67:dd01:: with SMTP id y1mr18718014vsj.39.1556630736057; Tue, 30 Apr 2019 06:25:36 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:02 +0200 In-Reply-To: Message-Id: <80f7d6a2f68adb1c41ef5baf8973537380c681b0.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 06/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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. Signed-off-by: Andrey Konovalov --- mm/migrate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/mm/migrate.c b/mm/migrate.c index 663a5449367a..c014a07135f0 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 Tue Apr 30 13:25: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: 10923477 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 D06AE933 for ; Tue, 30 Apr 2019 13:25:44 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id BEB6826E3D for ; Tue, 30 Apr 2019 13:25:44 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B1451285EB; Tue, 30 Apr 2019 13:25:44 +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 462A326E3D for ; Tue, 30 Apr 2019 13:25:44 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC8866B0266; Tue, 30 Apr 2019 09:25:40 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id ADD2A6B0269; Tue, 30 Apr 2019 09:25:40 -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 9548F6B026A; Tue, 30 Apr 2019 09:25:40 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by kanga.kvack.org (Postfix) with ESMTP id 719E96B0266 for ; Tue, 30 Apr 2019 09:25:40 -0400 (EDT) Received: by mail-qk1-f197.google.com with SMTP id k8so11767950qkj.20 for ; Tue, 30 Apr 2019 06:25:40 -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=buRPOjJBA3ZIe0xT2AqduI9dnmEg9opX2ORFfRDPnW0=; b=mullQ0qTZTQjO7s/FVd9z31tO3WNm3CMg5D0YQtaeSXtaIacUAxnpSf+SYKEC47nkp pcmkKhMbHq833vFeKDpcO7UCuhROgX8jMkK5czAlR00/KRfC1DvATrACSOtGIcUOGyiE mCMRHWUgaL/W0wLNIRpDIKFPfrJDgWY/RKdLKtlhCNQJ0LO0xW73wkNmjSlF2PA466zP 5pfUwzz6pG43TAM6ZF7s1bW9U6IDQ4iAo6BwkeITCgumeXCL/WfGet4sMg9mz8BU/zDh Q/1OB5lo2ND5vptUvYZ+z5XdEoSkJqO4ftolNWgJrnZ4PCRws2uwHdCQIdELmdD0Jqm3 cTaQ== X-Gm-Message-State: APjAAAXXSCmscJiRl2/1ljjFHg2fZnME4MA17fCe0xPmIaJWbWAZreNk hKsyJ5LKQfToC9pNZebJXLawtmM4uO+Zv61CMcaY9kJ/uviI7aqdit7nge/ZxQEZGp/4QAR39mX 67CfJOKXOJ9Do3OlRNWbsMaXMOOp7jY8Adi0Mc66tip+mJg+sQYO6DOy7x8FBEIK/9g== X-Received: by 2002:ac8:8d4:: with SMTP id y20mr153849qth.13.1556630740193; Tue, 30 Apr 2019 06:25:40 -0700 (PDT) X-Received: by 2002:ac8:8d4:: with SMTP id y20mr153792qth.13.1556630739529; Tue, 30 Apr 2019 06:25:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630739; cv=none; d=google.com; s=arc-20160816; b=AF8/FCutlEJqJid9PZzKvT8r4cROacQa+tFOXPkgn1J6COr//aVe9g9a7OjSRXKalS FYCf/+EnCc5Fgp+rJL+UV++2rlb2qPQGuALKLC2/D4IvwLiBrEF0uFF7yI87XJt8Yo88 tfgS/EsjzyD2VWC4xtJgJSfzA3vJVZ8P1lrVwK4RyJCs34wphww3D1gPXkZ3BOZ68AdN it9bdziHOembvYEvHs3N8kbH26F+xVLm4uRDz4EJsddrkO6ke5V7+cypShujdO6eyx+5 FK7sie+aP4YxU9WKEkEa9jGU6EzgiIL/Ru6hg3hHzwi6yVTFC+d5VFYMP2E2tgxYqVN6 VVtg== 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=buRPOjJBA3ZIe0xT2AqduI9dnmEg9opX2ORFfRDPnW0=; b=LB9tUOHHYPSsiYx9YbasjZBIuD1Bn24owIqKyZc2/AHJDGaBWKzXWpLP9plFHhsufu OIaO0B67jiCTWVPnfqtrtPY0Le81hh8JPToYEfqI3nTabhJN1c9CQFTHJ7MmG5Yoly+8 F+EW32H0hV/jVjKWOoChxnd4Y0hjn8yK1BUPxhC3HjDjXlew/XAcFRklaAqPOIBojkbG ZCutdA+6ffkFl7GgXO+ENYYfff3KOUSfsY4STo5Cg9IOGvNAT7dGY9IOsdQ76eJUgFJM yIW+UGCfrmBNmYMPiKqS3Kl/7QOjKBTkd7PGZ9QRC7Ktnb9eAd1Rlqzjcvx7hbJ+0X/+ LYjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=MSiPsDRD; spf=pass (google.com: domain of 30kzixaokchkxkaobvhksidlldib.zljifkru-jjhsxzh.lod@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=30kzIXAoKCHkXkaobvhksidlldib.Zljifkru-jjhsXZh.lod@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 f17sor1537355qkg.127.2019.04.30.06.25.39 for (Google Transport Security); Tue, 30 Apr 2019 06:25:39 -0700 (PDT) Received-SPF: pass (google.com: domain of 30kzixaokchkxkaobvhksidlldib.zljifkru-jjhsxzh.lod@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=MSiPsDRD; spf=pass (google.com: domain of 30kzixaokchkxkaobvhksidlldib.zljifkru-jjhsxzh.lod@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=30kzIXAoKCHkXkaobvhksidlldib.Zljifkru-jjhsXZh.lod@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=buRPOjJBA3ZIe0xT2AqduI9dnmEg9opX2ORFfRDPnW0=; b=MSiPsDRD20G5RApt1tKO2qR1lu+49IUxbNva1JnuQQuFWBLmYjGsyYMIbTfczh9PgZ LZDjXLLUSTuHLQNcWT+JZ9uqhm42MotSkIywGhSEtO5Qo/efiUjRdnETJ9HiPnIEMC0G Psfny8eMA3Hhr5M3y/dGxBagnarVCzNzCOPBE7unSjVZRyN7RZGPxN+EiQrIg6TYKayd TbH8puePOyzHgUDHu0r16X0QIZiy8sIilI5NkVuEFwagLhwm1Doy6sj5Nc20vSi1QEC6 U4ZuKp24KxWFzfXdfPQJckkIwH9zeR4BqyMjbNu7gnM8XYqQKJF/hqcaAUToZRnS5F/8 +rFw== X-Google-Smtp-Source: APXvYqzAjOcf9MQ3Z/Pp48cxI+z95y8oMsVd6n1et+BqzlTkjxro8PcOOzrVkSjDVN6zaY8gkVAdj4JwROetfHnZ X-Received: by 2002:a37:78f:: with SMTP id 137mr13240464qkh.66.1556630738975; Tue, 30 Apr 2019 06:25:38 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:03 +0200 In-Reply-To: Message-Id: <373d33e4cb0087da32ad019fd212414292ce04c8.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 07/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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. Signed-off-by: Andrey Konovalov --- mm/gup.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/gup.c b/mm/gup.c index 91819b8ad9cc..2f477a0a7180 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -696,6 +696,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)); /* @@ -858,6 +860,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 Tue Apr 30 13:25: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: 10923481 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 BA56714DB for ; Tue, 30 Apr 2019 13:25:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA2D626E3D for ; Tue, 30 Apr 2019 13:25:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9DFFA285EB; Tue, 30 Apr 2019 13:25:47 +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 3709826E3D for ; Tue, 30 Apr 2019 13:25:47 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BC65A6B0269; Tue, 30 Apr 2019 09:25:43 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B51796B026A; Tue, 30 Apr 2019 09:25:43 -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 9F3CB6B026B; Tue, 30 Apr 2019 09:25:43 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-vk1-f199.google.com (mail-vk1-f199.google.com [209.85.221.199]) by kanga.kvack.org (Postfix) with ESMTP id 78CF86B0269 for ; Tue, 30 Apr 2019 09:25:43 -0400 (EDT) Received: by mail-vk1-f199.google.com with SMTP id k78so6317880vkk.17 for ; Tue, 30 Apr 2019 06:25:43 -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=4c/fu3qC3Skvw+ZZk7UHJQzalE9hfnOxHloiMgOUfYw=; b=BN50UDNyGSow57AubNmN7CgRX0gMmWePXI14+P5n1b8LQwFiiHuDhqJTP7YeOkCVja srWOY3EvY8Q8ClIAAV2ZXuzGYEls6qlS9riTUUM0c6UWHeC+jZmZ37ygNFEOqROoUCXl GZ15iixr0q7EzoZVvnEBQhfJU/olmDROZNNu0+L+zGmmgsHHVcAOFN2e6lkI1Y0TQMFI Au2eJKRbWauTSHeKDLCgkmLmJdvtGglXzdUDfVPxq49MQjnS/L1K79dtmEV+0ojn+Jvk 3PGV5JKyjz/4iuErN4Q7efFIWrRUcrxSJfK3a3fQM2jKqMpKpWRY6S7MxeW11ongecBa Aj6w== X-Gm-Message-State: APjAAAUD1CrzDFXqMfvXRpUPYjerPIybTxNdbTpsOq9p6uMOj6I+YZxb 4yCaE/9d9S0Hlt1UX10ictT4PogzRSwyO4uUPT8C0lvTILRIQ8XqWU1fQ0vegBrpnbgZyJHT6/p gzxiAcQ/ABrP9CMkP9TCWcqyq8pFDFYYbwmfZt6C4vhfJMbEF77VOeUcITtP4rMJFpQ== X-Received: by 2002:a1f:3c83:: with SMTP id j125mr34801698vka.92.1556630743132; Tue, 30 Apr 2019 06:25:43 -0700 (PDT) X-Received: by 2002:a1f:3c83:: with SMTP id j125mr34801656vka.92.1556630742507; Tue, 30 Apr 2019 06:25:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630742; cv=none; d=google.com; s=arc-20160816; b=TZ0Pcb1MBGKIkXBkY28Gfx17qaO8j1hiPC5JSaw0MK37nhXkFB7+uCqGw5d7/rB7b8 yNivgtwaiJHl26vBOOn0POBqY+Ao86IMkU+hRzNEAsn6C0Xzu0nvQX+DTRfI3BV4wei7 o/JacAKwiwDOyka/cq/E7V60e8hN8sVdO+hfLFpDSyWTWu+JmvBwv2q7Dfok1DsuHKZP o6Wfw8cyJVyGyhgCPLXPa9/Fn0yIa+vL2tFZBcfezLNSrJNqUooRAxZGak6d+gFO1t2H 39bCR+MY0Umx5cduluDICXvdL2t3lqQQHcszLiGCB7JLaSM9oR/8hJYpD5LZpgq6OdJS ar+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=4c/fu3qC3Skvw+ZZk7UHJQzalE9hfnOxHloiMgOUfYw=; b=CfqPLDy2Zpj4Ee7sULqYO1G/oakQM9MYXjs7yQz10Zl56mr+EzTZy0bQrM1CJmRYbP K+rGs0OlbMk4lq84y9fWpXfd/DY8xXwFSWaM9H6QxWTr7gQ+LKCMajXi17VE6BgB+eYR T+knTLm6BMqlhK2fw3zqEdvjlgF6SJRySVSOBySnUIg5SFmfSxO6ByE4Jofd1v+BfCsP JpCvfMLUdDiKF0tX2Eu72qRlTZiA4i2tpsukqh7UMrnlGnrHfn+YLGYSBII76RiuflAl 3adqkUjMCH7W4lHaD33U7MFprFU7PrPBzYCqmRohRDZMJtHIiHlQucNee83Q5G/Ap3of mtwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=wBxzW9uz; spf=pass (google.com: domain of 31kzixaokch0boesfzlowmhpphmf.dpnmjovy-nnlwbdl.psh@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=31kzIXAoKCH0boesfzlowmhpphmf.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 g188sor11769197vsg.121.2019.04.30.06.25.42 for (Google Transport Security); Tue, 30 Apr 2019 06:25:42 -0700 (PDT) Received-SPF: pass (google.com: domain of 31kzixaokch0boesfzlowmhpphmf.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=wBxzW9uz; spf=pass (google.com: domain of 31kzixaokch0boesfzlowmhpphmf.dpnmjovy-nnlwbdl.psh@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=31kzIXAoKCH0boesfzlowmhpphmf.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=4c/fu3qC3Skvw+ZZk7UHJQzalE9hfnOxHloiMgOUfYw=; b=wBxzW9uz5sqQEs2k0kS4yhvkUsLQPUol5yYuscC/EhJQq88IJKN51oJN9Ma9N+F87j 0yaXqLxOKrSBWEzg6TAlDuogkZNA4XMbprAL12kWJ8MdNH7JIvTO8ZRXCqw/W9rKaVTK 0th2TjbWtiytISvyVjLE74X1hS0zo7K7eSu+m53APk0oWFg+5hHivN//aHp583NOkYkp q/Xzdqo7lpDQuozd8M9soPmozGOH2C019sBJyK9gvXzEw1QU7pl845OD9URqwv3Lf0aM RmLDFBkc4rSunB/Q4UnHBTaxv0r2wOX1jQXVnW4MBVL+0daNYML4EK5a4hKos8NfLzsy dlFw== X-Google-Smtp-Source: APXvYqx4TL4lB6fuuHN3vQZgSBJDs10/R98gvbNQDm51wxIVMnZyNgUuaizbdtdyYw1MeWbTLc+s/luHbNJTgZgZ X-Received: by 2002:a67:8155:: with SMTP id c82mr6290812vsd.200.1556630742131; Tue, 30 Apr 2019 06:25:42 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:04 +0200 In-Reply-To: Message-Id: <8e20df035de677029b3f970744ba2d35e2df1db3.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 08/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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 --- 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 Tue Apr 30 13:25: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: 10923487 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 73EF314DB for ; Tue, 30 Apr 2019 13:25:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 62A0326E3D for ; Tue, 30 Apr 2019 13:25:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 531282860A; Tue, 30 Apr 2019 13:25:51 +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 2EA3126E3D for ; Tue, 30 Apr 2019 13:25:50 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8E1906B026A; Tue, 30 Apr 2019 09:25:46 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 8440E6B026B; Tue, 30 Apr 2019 09:25:46 -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 732B06B026C; Tue, 30 Apr 2019 09:25:46 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by kanga.kvack.org (Postfix) with ESMTP id 53C136B026A for ; Tue, 30 Apr 2019 09:25:46 -0400 (EDT) Received: by mail-qk1-f198.google.com with SMTP id i124so11782068qkf.14 for ; Tue, 30 Apr 2019 06:25:46 -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=XhTfun6kQ0RRzRGxeYV1Lxl9M9fvGqRUvmzO5QW1/Iw=; b=FYWHAgRNrz+Ystt92oUmP3a8/PjtfFvFjTRAOAKJYOOa7+iBhnYtf18TElSQ1uF+5/ VovSqFzr9VOoBbCipO4CQg/BoFn4uNVwoScURSCRGC87vzuL4TMOMoOVTpI9NoPQqGiJ e2/mu1G7yk2f+kuy5K5ahkJC4imlHNnErCy5bJMxnfMQMVmHpEgJzog1LldsTftz+adF mT51BGErTBf5nwVc4iRHKoSGCdSVHlLxRMrdBLvesM3SAbR79Fg2E1j2+1BG1er2SQ9C TFQIgtY7uYCRYoH6AYuxSAR19wrhco/JyGqEBHjFz+wkZbYAVIN2Lsm47Q16qpGcLq6D +MAg== X-Gm-Message-State: APjAAAWuSoyULZ81K4v8Sb9fHGonSLKQFPQ//0nxBBpNyZy+0k0WKh53 Xure0plaz579f5jsJ1iPo/4bCKHJDySHHfadz4E6cskiUKwbb2wtkX6uDQJZJhHRGaX0LAd5B+F KeBUThFADTCAZloGCUgsB9vjjXH5PgINHfQcoxZoMjZPmAYmL3S2A/HWTUE3iEw0GaQ== X-Received: by 2002:ac8:918:: with SMTP id t24mr10424097qth.92.1556630746067; Tue, 30 Apr 2019 06:25:46 -0700 (PDT) X-Received: by 2002:ac8:918:: with SMTP id t24mr10424051qth.92.1556630745511; Tue, 30 Apr 2019 06:25:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630745; cv=none; d=google.com; s=arc-20160816; b=HR1EOyHQg76MyAGg6ozunGadeN87Z0dn0EpDPOHn3D7oDXV76rCfxQRDRl0K6vhbup ivojKBHtM+s4lj38jKgFzv6rXIMOnzV8osUy46K253A2KXIdZGhZyeSLUrqjKfmlrtvO ibxqs5Jjfme17OFaO+aCYG3os8nmzoqY2tk2AC3SbCxKK79et6uqqCHWIL5SXc4LeUwM LyzUHZ+WN3J/QYyRojMJigOlPT9U/NzIJguY+Qx4wvk0cWnuyrXqKvIkcCflqjUDVbjY NX1Ng0LBQ++9bbn31tzujzxybMCG6rfLwZBRXnLWCCxW8y/hSAuSthVZA8yd/PHyYhVX uAIg== 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=XhTfun6kQ0RRzRGxeYV1Lxl9M9fvGqRUvmzO5QW1/Iw=; b=afWfaNbPKG6GA08NdHl0mPzdzsjoEMGUykgFJ6LzoQ2/lvF1Fi32Xefq8YqOO/2wqx imc08xOjXdEvRYfMrsHpkIZKYk5F2QhKOIRhf9NhTeESmYmudQ3lp99yMysSrSQ/zkca 3KGVH4BEW0IaC6p7i1II+AgI+cXSLjwJZZqdVjywnwKimEllKjk0FWI2h0iXE9Iy4Tw7 M7KDW1avD1l2war+rSFEkhQVn23nrM+VwfrsdaSBmcorWbwgDHtCViMqPikOWI/LbOsK 90Z08xD4Sw/LLZ0EphpFWKaxkJWYRjBgaL9ooiyrW2N8yTaIDggITz6P3Uva4Hdjx9hB t/OA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=wJdQ1UGK; spf=pass (google.com: domain of 32uzixaokciaerhvi2orzpksskpi.gsqpmry1-qqozego.svk@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=32UzIXAoKCIAerhvi2orzpksskpi.gsqpmry1-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 i125sor9599200qkc.80.2019.04.30.06.25.45 for (Google Transport Security); Tue, 30 Apr 2019 06:25:45 -0700 (PDT) Received-SPF: pass (google.com: domain of 32uzixaokciaerhvi2orzpksskpi.gsqpmry1-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=wJdQ1UGK; spf=pass (google.com: domain of 32uzixaokciaerhvi2orzpksskpi.gsqpmry1-qqozego.svk@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=32UzIXAoKCIAerhvi2orzpksskpi.gsqpmry1-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=XhTfun6kQ0RRzRGxeYV1Lxl9M9fvGqRUvmzO5QW1/Iw=; b=wJdQ1UGK5yN+4uNr4h/B5QAZg4CL5PwyVx/Pw0wXlRL/1oGZsU8xxjXpZhWnko4SRI fd58gicIFCILzVPy4t7gpYBYkZYkBR3FmblDk49rQtqjc+3RWgZP2PESfhPKYuSabBw/ B0hXw+/teu1vbGfMkq/9KC8ilccnVzEvxDboYdIBbHp/DJQFCI0D5tDe+o/VISE54DyV St7L+ZfiWURBvKb49SaxC44tIWiHtqDmkV/TM32oplri8v6dnEdHN+6rXyhwe32Swezt x0OHZZDCsWZFgoiC74TFCi6OtAop9i/h8/+cUKSH3r+foqub7XosNX+XNvDEf+4uDkZz /4Vg== X-Google-Smtp-Source: APXvYqznoxmsWRf0TRsMetoUzYzE4dAnT0nzUuom4UB8P1UAcmj3+/tm6hiTUWLYkHc/SM6nPM/1vvtkZ4BWAaOU X-Received: by 2002:a37:b683:: with SMTP id g125mr147309qkf.249.1556630745179; Tue, 30 Apr 2019 06:25:45 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:05 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 09/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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. Signed-off-by: Andrey Konovalov --- fs/namespace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/namespace.c b/fs/namespace.c index c9cab307fa77..c27e5713bf04 100644 --- a/fs/namespace.c +++ b/fs/namespace.c @@ -2825,7 +2825,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 Tue Apr 30 13:25: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: 10923491 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 B5CB814DB for ; Tue, 30 Apr 2019 13:25:53 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A56BF26E3D for ; Tue, 30 Apr 2019 13:25:53 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 98E8328A63; Tue, 30 Apr 2019 13:25: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 3141B26E3D for ; Tue, 30 Apr 2019 13:25:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DE9B06B026B; Tue, 30 Apr 2019 09:25:49 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id D99EE6B026C; Tue, 30 Apr 2019 09:25:49 -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 C65536B026D; Tue, 30 Apr 2019 09:25:49 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by kanga.kvack.org (Postfix) with ESMTP id 9F9086B026B for ; Tue, 30 Apr 2019 09:25:49 -0400 (EDT) Received: by mail-qk1-f197.google.com with SMTP id c2so11810537qkm.4 for ; Tue, 30 Apr 2019 06:25:49 -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=pQaENO1QgY/e9MwQ0ENVfJipTlkpkaPmrD1twTVYLJ0=; b=W7pBiSsVHz0EKRNHVP2A/glh1q0ROwb3lWrYdph36IHDV2WpIt+JSumwg8wKVbpma9 1jax8e8jYF1UgWoHJEwkEx62Labn2V/zARfxPQSEpEZWHviotvwwsjdoj2JlclvrTjvY jpuM13vw5DW1YY9iDXy9K+opgpdIQhdOxihg/uBDgNObTaHHJr++G3EkHnNi4/mvZsV6 KB0y/S2DSIwB3ydtNrE8lzz7q7juA7cvADSQYcy67ldLA2RWQNIOz7kWsOpR+oggA97/ iyPDupi7x0wqTRVJz1mRZTfA9Tzv1N/DFqbHPEDHDWqdRf7CevElhIn/TtCYYzQc8egg GmkQ== X-Gm-Message-State: APjAAAUo5DjSztOq2msXkASn1bhSuKfhf9qPU7veWM2eSII615ZvgZHI uCYpxiI88tTgYCDL0aiLulnBrvwLVeh9rhWayto3+aAE5sYC7uXe1+0j+SC2O+bWZAxUxvrqJBu XpfG16dqqaRwmmCoZJWMRv/LuGF7mhbPtGNkpyZ8yLCJBes0ETU8D8KXAcCHqn+srSw== X-Received: by 2002:a37:b3c5:: with SMTP id c188mr49695802qkf.97.1556630749424; Tue, 30 Apr 2019 06:25:49 -0700 (PDT) X-Received: by 2002:a37:b3c5:: with SMTP id c188mr49695749qkf.97.1556630748697; Tue, 30 Apr 2019 06:25:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630748; cv=none; d=google.com; s=arc-20160816; b=ZuxL2ETZjonQLoFbYmwVgi8GVnQOA+uAUbiihutn/PHWZ+Bqf9ghsf3+yanmss2MRP YaqlkqFSDusPrC6qSPaJPLPetQc3VmDhn6nwmfmKEDRn2BbVj7naPHw6nWQH8JPqH5at SqMqBhh6nSV/QJ8rahn08DD2XCXCBi0rF4JOfGUsVcxnQlhgpEcFuNkUR+rq/NpPOdto OV4FWoTytGihXamQDDyX4rN5YuvWB9kefv+iM0wdRNdTrI3i9Uy/cmYzGtMuKUlLxgaA wdRMDE3PblDEsenqUsEz3BjNi6d2WcCC/ScOxtwcbm4q1z9/qiM3sAzkAmpLBwu+2DSv BTdw== 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=pQaENO1QgY/e9MwQ0ENVfJipTlkpkaPmrD1twTVYLJ0=; b=se5f9ZUEW7NEpnpghy+v4Ync7XvNZBFdbyO1xIsIVM5hpLtYfCbL0caMl7uxQDJWYL UVguG5QcYq/ByRvW5fBsFg/yxqs1MApe6qOaePyiUElTczLYiM5t/z1xr5l/euSFwZnZ aG2p1IjdBXKnwpMgrphZq8HoibpOwCZMbke2hV0wJZY2Kkg5sH+EQckSwfo2XE8Mas2a +2pO/F4msIoSEIAEltCTVhQP228Ro6Kg6Ukb05TJD9AsGKDLNOZeFsYoB8WYUy6TwIB9 lX7err0w8JBAqZ/RVi0i4bpt7ntfsK2dr1Rzpigjr05ngQctOzjDv/geeFBxhQEJUrs3 zuCA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=DQlymDAa; spf=pass (google.com: domain of 33ezixaokcimhukyl5ru2snvvnsl.jvtspu14-ttr2hjr.vyn@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=33EzIXAoKCIMhukyl5ru2snvvnsl.jvtspu14-ttr2hjr.vyn@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 e39sor26370626qtk.2.2019.04.30.06.25.48 for (Google Transport Security); Tue, 30 Apr 2019 06:25:48 -0700 (PDT) Received-SPF: pass (google.com: domain of 33ezixaokcimhukyl5ru2snvvnsl.jvtspu14-ttr2hjr.vyn@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=DQlymDAa; spf=pass (google.com: domain of 33ezixaokcimhukyl5ru2snvvnsl.jvtspu14-ttr2hjr.vyn@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=33EzIXAoKCIMhukyl5ru2snvvnsl.jvtspu14-ttr2hjr.vyn@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=pQaENO1QgY/e9MwQ0ENVfJipTlkpkaPmrD1twTVYLJ0=; b=DQlymDAakXGN/s4aLv8FvnKDxFM3vFWe0ntwkbEht00uRZJyqzxLv2z+v+0YWcHIgB sKEjfbgI8NGPishfLFVkzFtit1j8To4k9tOzAqlClb7eaOmN2puCzEFRoWDOow3x6abM kF5rtq7WeiaNC1bvr93O8cSv4wiLQYr7p1i1gibkW3E+uyrFOpeeQawgxMfeq7+k8NA+ lhqPJjcIYupZYzc0GZblGzb4ejeI2t/6j/U8CyZxFUtArO4WewVdwtuEJHeP7D/0QDFm 3J0WxXCQ6Yi/AJW67UTm3sBwIOkc0wcf7BPZUgJdkZ1LyiC4qY/JaOc6zgNq+gGsc78b WDtw== X-Google-Smtp-Source: APXvYqzXVakUsCoJZt28GHuUY2fVSxrYrmmdkh7uTay5rLBg9HnfxGjKEfUnDj0v5eIkWQX2umWuPHIlib2dmYL6 X-Received: by 2002:aed:2a0c:: with SMTP id c12mr9957100qtd.232.1556630748252; Tue, 30 Apr 2019 06:25:48 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:06 +0200 In-Reply-To: Message-Id: <7d3b28689d47c0fa1b80628f248dbf78548da25f.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 10/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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_register() and userfaultfd_unregister() use provided user pointers for vma lookups, which can only by done with untagged pointers. Untag user pointers in these functions. Signed-off-by: Andrey Konovalov --- fs/userfaultfd.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index f5de1e726356..fdee0db0e847 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -1325,6 +1325,9 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx, goto out; } + uffdio_register.range.start = + untagged_addr(uffdio_register.range.start); + ret = validate_range(mm, uffdio_register.range.start, uffdio_register.range.len); if (ret) @@ -1514,6 +1517,8 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, if (copy_from_user(&uffdio_unregister, buf, sizeof(uffdio_unregister))) goto out; + uffdio_unregister.start = untagged_addr(uffdio_unregister.start); + ret = validate_range(mm, uffdio_unregister.start, uffdio_unregister.len); if (ret) From patchwork Tue Apr 30 13:25: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: 10923497 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 EFDBD933 for ; Tue, 30 Apr 2019 13:25:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E00B627EE2 for ; Tue, 30 Apr 2019 13:25:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D3B2F28AE7; Tue, 30 Apr 2019 13:25:56 +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 56E5527EE2 for ; Tue, 30 Apr 2019 13:25:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3611E6B026C; Tue, 30 Apr 2019 09:25:53 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 2C42C6B026D; Tue, 30 Apr 2019 09:25:53 -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 0F0206B026E; Tue, 30 Apr 2019 09:25:53 -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 DA5DA6B026C for ; Tue, 30 Apr 2019 09:25:52 -0400 (EDT) Received: by mail-oi1-f197.google.com with SMTP id h196so4278380oib.20 for ; Tue, 30 Apr 2019 06:25:52 -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=+qKylFjMLP53K9qAejYeg4zQoAltlSq0MdIVnvcZCpk=; b=hbXkOwyjPf6oLgktQALbfnXLHXyNHpiF3VWgk0lYL9/jrTIZ3qS9l58Svhh1Mukv4m zUIq0aaAWW9SpM/GyvurBG0svCcSS6P/jL8AC4/37gpIrmWpVSs0PHIrtt8iXoWmx7Hv 6xl227f+SSMq+t05L/mnXb10GJINTiu02AxxBEFyoNJoJw6pckdVDCF4ZkGMSGRW3dON ix7a/3snMaRjZmDU/OlyNI9fJRJn+QME5VBbQTp4I1SNc8MiLSmDl7JV/2LHWNPP6Wec BGP5M410oiA0OU3t7PwE5ZQ+AibGn8lMt4oZ/t7ta/eOKc9MIWTZA79ARtJskQz3ElEs LhlA== X-Gm-Message-State: APjAAAURmMieSLZZ1Ai4vrSHXedKHLowbTJssm+euSrVRSKXQkvQivwm 7Ma3fNQFdBR0+YO8TZ4P4/TZl2YyQ+apCPp3pWpGVLsHDKg3lGIJUkkDvj/IL4FysBhypwlJOyl yZIpYy5/S2b61Gm2NrTbfpFxuI4jQYxG5tk5tBA8NJ2SRXt2T0UrGLHud6BO/JqlRXw== X-Received: by 2002:aca:bdc6:: with SMTP id n189mr2975886oif.77.1556630752464; Tue, 30 Apr 2019 06:25:52 -0700 (PDT) X-Received: by 2002:aca:bdc6:: with SMTP id n189mr2975833oif.77.1556630751698; Tue, 30 Apr 2019 06:25:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630751; cv=none; d=google.com; s=arc-20160816; b=HG2W2WhwyulFhrV62pYrSsMBTLhVM12KXEQ1pfQVDBVIpMOgr9kAqN7Dmdrirh563z cQzD53xNLe7dkBqm6b9M+QRNxJ7Qdo9OVYBoPtLte5p3up5CO/CKOURoREnErbMzmAXc 2tT5VioGc6NoXuG6auIDxZplNOwzHytojcRYdNMx6PWD5pPAvLcJ9UIiL6NaLVorUGwH VKgGfrL5ZZEg/tC4/cV32yExxzkMqUKY1lqbzNZNIUBQhyzqp/D01t/OkAGyl7umjmZ0 WugDHRTuSp7KkMUMAJ+wtv7cw3/VRl7+hGKDBglLrQ7FOFA0uXolFth8ZxgXWmLlHaHD lYUg== 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=+qKylFjMLP53K9qAejYeg4zQoAltlSq0MdIVnvcZCpk=; b=ZoeBfqiki/NQJL8wG7iIRk6npJeRO/bHLY4FE5u7SwSaLoq7rumyMnZfwoapj+dbIz 1k9Iwrov9uxbxi34uK1lhrczv2SW115nZJ7FU3iY+G+6+eUniuCH0lQq6ohEMV0Pxbgr dfUmpjFMK6Jj+VnqdVeFaPA0d9xdPi5bTzJLSUMS9hMK7Y2yDGwnkVErhYJ4SuzEQmN4 4R8Q17iMXkYzVhfVeunKfshrayV4g7MwZKqizpxAyDA9GYWnPEFjK7jaPtZcBR+OJ9Gx U+U5etaWbvEd2bUrnM7E/SsOIOP2RPr9UEOVu4W+BP2ob9gVaqO+U/XmMshXGuTn5pHb sqqA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=btEcp2ne; spf=pass (google.com: domain of 330zixaokciykxn1o8ux5vqyyqvo.mywvsx47-wwu5kmu.y1q@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=330zIXAoKCIYkxn1o8ux5vqyyqvo.mywvsx47-wwu5kmu.y1q@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 h7sor453485oic.18.2019.04.30.06.25.51 for (Google Transport Security); Tue, 30 Apr 2019 06:25:51 -0700 (PDT) Received-SPF: pass (google.com: domain of 330zixaokciykxn1o8ux5vqyyqvo.mywvsx47-wwu5kmu.y1q@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=btEcp2ne; spf=pass (google.com: domain of 330zixaokciykxn1o8ux5vqyyqvo.mywvsx47-wwu5kmu.y1q@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=330zIXAoKCIYkxn1o8ux5vqyyqvo.mywvsx47-wwu5kmu.y1q@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=+qKylFjMLP53K9qAejYeg4zQoAltlSq0MdIVnvcZCpk=; b=btEcp2nedxD/RSSqWCBp6Rk8cMJhftnRu9ZW20tW9H57Xw0aRxokGUkdPaQcz9rkFo 41vHcxVyWnumGF2h8AA/tvaQ1eb1WCyLG8jJc1HuBhG3r5Wd1fM3SW30CuGnpg1TRhOv wnQvFrUnasvGEjcZv5QbKz23EvdFctZuk2lHQH4EeEAFL4Kx+vSjlXZtQRydk7j1idAx /UUAwj84w5Pi95UWsOVe8tS152xj2ZfcEWPp7jNQzN52h4BmJiS1Ku9e/jk70X0Z2EPY SDSyNof0IogZBTJr94e5UKMwPIftjzOfnH+SY8xUjb5s8afDb//mLKaZWdWGUI38Snzl JsbQ== X-Google-Smtp-Source: APXvYqz7KleMfXSb2xWhqBUaqWJTSwZR2ghM1vwfjJsnESBwGEPHMng/yx10KRFE5q5G6LCNFaFlFnciq2Xk09j0 X-Received: by 2002:aca:4e83:: with SMTP id c125mr2833389oib.13.1556630751340; Tue, 30 Apr 2019 06:25:51 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:07 +0200 In-Reply-To: Message-Id: <2e827b5c484be14044933049fec180cd6acb054b.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 11/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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. amdgpu_ttm_tt_get_user_pages() uses provided user pointers for vma lookups, which can only by done with untagged pointers. This patch untag user pointers when they are being set in amdgpu_ttm_tt_set_userptr(). 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. Suggested-by: Kuehling, Felix Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 2 +- drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 2 ++ drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c index 1921dec3df7a..20cac44ed449 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c @@ -1121,7 +1121,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 d21dd2f369da..985cb82b2aa6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c @@ -286,6 +286,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; diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index 73e71e61dc99..1d30e97ac2c4 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c @@ -1248,7 +1248,7 @@ int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, if (gtt == NULL) return -EINVAL; - gtt->userptr = addr; + gtt->userptr = untagged_addr(addr); gtt->userflags = flags; if (gtt->usertask) From patchwork Tue Apr 30 13:25: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: 10923507 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 D2D0014DB for ; Tue, 30 Apr 2019 13:25:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C191527EE2 for ; Tue, 30 Apr 2019 13:25:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B4F2D2860A; Tue, 30 Apr 2019 13:25:59 +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 44714285EB for ; Tue, 30 Apr 2019 13:25:59 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 22A206B026D; Tue, 30 Apr 2019 09:25:56 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 1DB416B026E; Tue, 30 Apr 2019 09:25:56 -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 02D386B026F; Tue, 30 Apr 2019 09:25:55 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-vs1-f71.google.com (mail-vs1-f71.google.com [209.85.217.71]) by kanga.kvack.org (Postfix) with ESMTP id CC2AE6B026D for ; Tue, 30 Apr 2019 09:25:55 -0400 (EDT) Received: by mail-vs1-f71.google.com with SMTP id b16so2349065vsp.19 for ; Tue, 30 Apr 2019 06:25:55 -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=/erHdYVyxDvhPu3v7RMhd3dO9bpNIdyHyuRFKthPw/o=; b=IHq3Wr4Huctx9OYtdaB+/9iMaJTLKoh9m2dAPcZY+o8TIcvHnyJgELyQ20PBB1329G J21kEhKed82q0HR5+SG5LMNzqEc1UtHppAc+tJhXu6kAekaluXVnegimMNddUA2V39Vf cSy8/EVDwfS4VN55IXH50vg7MfhiDIzs3GOiKN0ybWNAyDdYPeSsI69xT66rjahH1w1H mHPqIh4VNNuqbb4Io7BGiaf+F1wLjSKbxlUO8gUPGb9411bR34sh2TGRQcRiRjMUp428 e4B8vFbTiXcb3YMzPeD3iIW7fmcZaXj0bX3aV/vouMF4Nr3Z4TlMVMEC/pJ1knhX41Z+ vTdA== X-Gm-Message-State: APjAAAW4wwW1wHFpOAy4nW+HcFLZZaLw4/8IL2Oscd71oJvBv9GR800B gvGpQ7NHt52PIW27JeMe9bLzU5V4CIZ3Xki4KiV3JfHBnpigEnCgjuSlwp9N6cly5WDcc/soLum x25856+I5I7iVdwPrh/MzOECCdeOHtU7tmU/6w3sjKmZba2LmmexlU3dWwgxG/HAFPQ== X-Received: by 2002:a67:7a43:: with SMTP id v64mr36545653vsc.54.1556630755501; Tue, 30 Apr 2019 06:25:55 -0700 (PDT) X-Received: by 2002:a67:7a43:: with SMTP id v64mr36545622vsc.54.1556630754825; Tue, 30 Apr 2019 06:25:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630754; cv=none; d=google.com; s=arc-20160816; b=oriHFj9TLFEeTfWVEvGDUvyAcuv6WD6vNlrhNzfHj1hPgTfFitF0qYTU7ezODF88Nm BgXv3omhZcQECYgO1aUvisF09MOXJC4PCLQW8FwvOsKX7SPcyAlVXW2O9GA+H5EspF82 O6FiNoVP4rE12tQiYIsxyTLOjuxqQ9zhiZD56mv7Yj0gJmtUj5mk3Ig6lUrZRRVceonN RMMOrmyHtAEQ+PV76iogYU/gmGH0jXjzVY3t9BaDAtsA0NNh9MTprW60ug4nVp/MaSYU dZsJrcJ+kOltt9rgNhXp/BsgQB1mVSFJI6rrgGNDQE0Rd4FFA3DsEkc99eozDyi2QM3d G1dw== 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=/erHdYVyxDvhPu3v7RMhd3dO9bpNIdyHyuRFKthPw/o=; b=Sd0q12FVI8GPOPcdrrpai9djXJgl2ad7HCJPMsQp9JbhQka9RsLp8vStwxYXsW+VSR Z9xllZFuW82JkYoj/g48ugL7X18XVJey5liX/txQav02JBgynORCYJHM0D6iuZzFPaLR JptTFlFyXTv3KoiOvc//VV8shx7wwIJKqanidud4RyQv0PuPfbrbVQOvvW3CUUX5nj45 Xzl1LPesxZeYDplEhHm23fn+FZkKP9on7o0zc/pHsEepPBTi+cXfYIp/9OYkBDT7GlSK /4sGTkE9AnR200uBtn7tHlTNXVxFKuJAkTsqQVhgwBndoFK6dAOlgRo8zCQ6QxrElqPn edoQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=eEiOGFet; spf=pass (google.com: domain of 34kzixaokcikn0q4rbx08yt11tyr.p1zyv07a-zzx8npx.14t@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=34kzIXAoKCIkn0q4rBx08yt11tyr.p1zyv07A-zzx8npx.14t@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 g12sor179954vsq.37.2019.04.30.06.25.54 for (Google Transport Security); Tue, 30 Apr 2019 06:25:54 -0700 (PDT) Received-SPF: pass (google.com: domain of 34kzixaokcikn0q4rbx08yt11tyr.p1zyv07a-zzx8npx.14t@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=eEiOGFet; spf=pass (google.com: domain of 34kzixaokcikn0q4rbx08yt11tyr.p1zyv07a-zzx8npx.14t@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=34kzIXAoKCIkn0q4rBx08yt11tyr.p1zyv07A-zzx8npx.14t@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=/erHdYVyxDvhPu3v7RMhd3dO9bpNIdyHyuRFKthPw/o=; b=eEiOGFetYWxih+SqIZFzGNfWcb2WG27fgr8umX6U99zGn9TVk7qoyvUJvyLbyO9646 My6AFQXfx+E54pBbdCbbmUTy552nSiekbu8p+Z3EjOZkkRzKh6/KPKq2xMXR6PGCbeOC fF7Wnybo7p7oNGCxEtdGcC/SjUjb33krZmpxfplFBazN0BgfioX0FSzySTA4N97gTFrT W6ijBCliSwnkOOpdiWk5kSemwYixok6PKUQxZHW6VplcdEwGvrCZqCKdW+XjRywAL4b4 tr3KgVn6nyJgYRcK+gwURasQznomoMLJd50NL8tFT/I0TUKbeATfwfeLLEXDX2wH0kWJ cXSQ== X-Google-Smtp-Source: APXvYqz67px3tLUaZFP489IW2cHQSs+LvJjC7bfPcwFfPsiBelEm070ukqvUpFmAC3UEaQxQ+Sud/QNcvCPvUR/K X-Received: by 2002:a67:82c8:: with SMTP id e191mr36596964vsd.24.1556630754448; Tue, 30 Apr 2019 06:25:54 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:08 +0200 In-Reply-To: Message-Id: <9a50ef07d927cbccd9620894bda825e551168c3d.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 12/17] drm/radeon, 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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. radeon_ttm_tt_pin_userptr() uses provided user pointers for vma lookups, which can only by done with untagged pointers. This patch untags user pointers when they are being set in radeon_ttm_tt_pin_userptr(). In amdgpu_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 patch untags user pointers in radeon_gem_userptr_ioctl(). Signed-off-by: Andrey Konovalov --- drivers/gpu/drm/radeon/radeon_gem.c | 2 ++ drivers/gpu/drm/radeon/radeon_ttm.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) 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; diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c index 9920a6fc11bf..dce722c494c1 100644 --- a/drivers/gpu/drm/radeon/radeon_ttm.c +++ b/drivers/gpu/drm/radeon/radeon_ttm.c @@ -742,7 +742,7 @@ int radeon_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr, if (gtt == NULL) return -EINVAL; - gtt->userptr = addr; + gtt->userptr = untagged_addr(addr); gtt->usermm = current->mm; gtt->userflags = flags; return 0; From patchwork Tue Apr 30 13:25: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: 10923509 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 0CDB614DB for ; Tue, 30 Apr 2019 13:26:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EF83427EE2 for ; Tue, 30 Apr 2019 13:26:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E38242860A; Tue, 30 Apr 2019 13:26:02 +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 755A027EE2 for ; Tue, 30 Apr 2019 13:26:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A187A6B026E; Tue, 30 Apr 2019 09:25:59 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 9CA126B026F; Tue, 30 Apr 2019 09:25:59 -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 868E86B0270; Tue, 30 Apr 2019 09:25:59 -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 65FBA6B026E for ; Tue, 30 Apr 2019 09:25:59 -0400 (EDT) Received: by mail-qt1-f199.google.com with SMTP id i38so9264485qte.18 for ; Tue, 30 Apr 2019 06:25:59 -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=5l0a3uzMK38mxhU43HR3pLkdTsHYkFU/5p0+WtYx5vA=; b=RIQm4F41V2LfRP1a5Th4apt4aXCSQ2ZT89yzr7g/IazQzU2DC4p6rl5hzPHzsLAF9i yvUc3E6rJ54QyrArPKU5PvzTFi0Bdp3ZdWXMNxdok9UeYfgpIpUVj1wOxnzMoZCdVAow Y5Tw566EU98V7oMbN5+vuE7v5VpHjycr1A4zwPtLyhWUn7d7vmXXDV4MU33HNgnTSU6s b8TWxmB8FK3OiD6WCYdvwu+jOX+J3fyKsclzImeyy3qNREIuvMSPdkXLOcR37clc7PE6 GLseYGS2BYwHTWSX1EXF8flkdAFGOu83vh5VHWZ3fms5WzG7o5dP4jKchFWKDo6KgbdJ EE4A== X-Gm-Message-State: APjAAAV3Ya0FIfp4JTT5rrxEGJLVd27J2Vv2MnCT8NLzfK6BCxccS+15 lJka3ZMj7DmXmw55p8XuZfwxhtNbMszn3D4qIMe8caXh8h/45WJo2pstMwKQLx9qt++wKLCppyZ u3QzziePMbNYHmQwAESlU+HBHQiX7ZyB7FHSZIi096gv6vJZqkR7B3EduTSW6W2RaZg== X-Received: by 2002:ac8:2be8:: with SMTP id n37mr55057036qtn.303.1556630759100; Tue, 30 Apr 2019 06:25:59 -0700 (PDT) X-Received: by 2002:ac8:2be8:: with SMTP id n37mr55056975qtn.303.1556630758369; Tue, 30 Apr 2019 06:25:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630758; cv=none; d=google.com; s=arc-20160816; b=usMB2i7Ik5H948T32+Cdt2FJkKAkEiUoiU4bHx/NG4sT8sG6v7uTzNNQfW3w4UMzqB /Gq6na6pCJqxcas8nINjh+V0hAaEbAIgr7NEfH2wGKulrjUb3IiN5K7uLRbKts2Fly5k tqRtPwDFrw2se/N1kwUO0+w0MfWOWie5uCWU9vZgJMuyhlJDrbEVoxWNnzG3KMrXFVJy B+1u9aQ3SiZGCfldcmNon4u27GObvfWggFx94YwBEV9Jg58e9N6NiKHcVSinz+qFbOgS O+BtqwGKq+X3zLR3GyUX0kpfDkUQLuhP6B0ezRARaGEClhuAyw3WDbxmJjv7QLgmJ7EI 1tsA== 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=5l0a3uzMK38mxhU43HR3pLkdTsHYkFU/5p0+WtYx5vA=; b=XjwzjIKiqQOj1Wld7SnjJE2UIcMqcOak0Tl846S8aA5E0BU5bFaROGMFfHHrxy8BU8 bP3SdSzUqT2EnJIUSM/XsGyg4Vvu3Z2Nory2D7PG2v4oNISsZKedWAXTgSe+1CzvHJkL Uuu0ju2CHJOJx9PksJXXoX+gEHC3od0ngCsVs/iIgyOkHubLcfZNevFXtokowrys7YAX Jwz8wk6vF+vXme0hdLy/NUWuoe6fwliXIMT0C0D/jpOsUtXrohLgAQgLvQVbAeoZDaja 5Akb4bwOE5DBBcb9VuHyuDiL1YrEa1KmqVTuIuzTlT1xbSBCM/Ds7T2H/7FDnmkhsYin RnPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=g9CCdO8J; spf=pass (google.com: domain of 35uzixaokciwq3t7ue03b1w44w1u.s421y3ad-220bqs0.47w@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=35UzIXAoKCIwq3t7uE03B1w44w1u.s421y3AD-220Bqs0.47w@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 f40sor31438485qve.60.2019.04.30.06.25.58 for (Google Transport Security); Tue, 30 Apr 2019 06:25:58 -0700 (PDT) Received-SPF: pass (google.com: domain of 35uzixaokciwq3t7ue03b1w44w1u.s421y3ad-220bqs0.47w@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=g9CCdO8J; spf=pass (google.com: domain of 35uzixaokciwq3t7ue03b1w44w1u.s421y3ad-220bqs0.47w@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=35UzIXAoKCIwq3t7uE03B1w44w1u.s421y3AD-220Bqs0.47w@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=5l0a3uzMK38mxhU43HR3pLkdTsHYkFU/5p0+WtYx5vA=; b=g9CCdO8J183ztwieMKtxq5bQgdPwn8MyKUl5zlyySPt09tOB1Gypd0bdF1FTgPWg9U vgl3VSH+QbfWqwQxuQNAq18fHGv2grDucix13/YUy3bvOI1BB9BrzAgOyNFI+ychptbo BVp24qrS90whe3PqSvAaQ8Kncxvv8pqzjLbVvi9smoyLBamx2Dg/fg59oj/C1VgTZmLk po6sIoVdSb935f+/5YJnlpWSaOQYjK3//t7Ql3k3IgbH35nE1TWkeZ08/rMUWbwR2R7Q rNZsAyxKMZqUS4nVVdVnnh9Mowjk/e6QvbUTkAZYjeM7AIkIVd6G6w9+5n4IsjstGWE8 jwFg== X-Google-Smtp-Source: APXvYqzcKJMSJm3saTG/Jy9RV9wnqiRL/1GQ7HSUwiNcvOVWaTtiFz1xHas1LLHxgSsag1rnBPh3sxDf1Qf0ekUW X-Received: by 2002:a05:6214:18d:: with SMTP id q13mr1705396qvr.213.1556630757432; Tue, 30 Apr 2019 06:25:57 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:09 +0200 In-Reply-To: Message-Id: <05c0c078b8b5984af4cc3b105a58c711dcd83342.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 13/17] IB/mlx4, arm64: untag user pointers in mlx4_get_umem_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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , Kevin Brodsky , Szabolcs Nagy , Andrey Konovalov , Leon Romanovsky 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. mlx4_get_umem_mr() 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: Leon Romanovsky --- drivers/infiniband/hw/mlx4/mr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/infiniband/hw/mlx4/mr.c b/drivers/infiniband/hw/mlx4/mr.c index 395379a480cb..9a35ed2c6a6f 100644 --- a/drivers/infiniband/hw/mlx4/mr.c +++ b/drivers/infiniband/hw/mlx4/mr.c @@ -378,6 +378,7 @@ static struct ib_umem *mlx4_get_umem_mr(struct ib_udata *udata, u64 start, * again */ if (!ib_access_writable(access_flags)) { + unsigned long untagged_start = untagged_addr(start); struct vm_area_struct *vma; down_read(¤t->mm->mmap_sem); @@ -386,9 +387,9 @@ static struct ib_umem *mlx4_get_umem_mr(struct ib_udata *udata, u64 start, * cover the memory, but for now it requires a single vma to * entirely cover the MR to support RO mappings. */ - vma = find_vma(current->mm, start); - if (vma && vma->vm_end >= start + length && - vma->vm_start <= start) { + vma = find_vma(current->mm, untagged_start); + if (vma && vma->vm_end >= untagged_start + length && + vma->vm_start <= untagged_start) { if (vma->vm_flags & VM_WRITE) access_flags |= IB_ACCESS_LOCAL_WRITE; } else { From patchwork Tue Apr 30 13:25: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: 10923513 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 A030C15A6 for ; Tue, 30 Apr 2019 13:26:06 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8E16D285EB for ; Tue, 30 Apr 2019 13:26:06 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 821DE2860A; Tue, 30 Apr 2019 13:26:06 +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 0C187285EB for ; Tue, 30 Apr 2019 13:26:05 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C893F6B026F; Tue, 30 Apr 2019 09:26:02 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id C5F136B0270; Tue, 30 Apr 2019 09:26:02 -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 AB72C6B0271; Tue, 30 Apr 2019 09:26:02 -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 6686B6B026F for ; Tue, 30 Apr 2019 09:26:02 -0400 (EDT) Received: by mail-oi1-f198.google.com with SMTP id j5so5423719oif.14 for ; Tue, 30 Apr 2019 06:26:02 -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=xNbRPHb0QaxGlTA7s33PjaJCVzzZC2iohEMIfDhjOnw=; b=IJNLUDRLMbw+MhelDX94rRf7XxentmBfB93rpqveAwke9gi9G2x2OcHMrOhu9HPbfD eY/R3YwaZxIaI/crwGKyTebhLuCC6XbzRVLUi1JsUQRr6pjPmY9nD3C87+vVwbV6uz1F 08fbvN1w3KbJZX78J5gk4ivFqq7b9THhPJgHXP0mc7stJkKfnf/1WpqlI9T0Imtojqds n3oCR0BwWMbBseZh2mD/P3cSOzIOA7FoY0M48ps+QYzsb52ghphfx+vSug660lq32Rkg dPhdMyCHyAFIfd++Ha7z7Kr1a6JNXWDQ0rSjB1rZwzwe9F5cUIgp+KsiGxhzGqtV+Rj8 JUVw== X-Gm-Message-State: APjAAAV6ATyTfhs5AqmHKgDBUXyvfIz9zRkFjkZBZWLkTZrrJZCd7vVh bkmhszXXwzogVO62kNhHXB6eb/OGxAP604f3SPc8wh/aP6R7YpNGAFTEQDSq9bxnYrBKRMpfU0o poXFg+zERIeTbl7roDC131a9X+hCeFxnGk311coAfo04+KMtNBAyelq3yoJ6dPxyQDA== X-Received: by 2002:aca:f086:: with SMTP id o128mr2834995oih.101.1556630762065; Tue, 30 Apr 2019 06:26:02 -0700 (PDT) X-Received: by 2002:aca:f086:: with SMTP id o128mr2834951oih.101.1556630761270; Tue, 30 Apr 2019 06:26:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630761; cv=none; d=google.com; s=arc-20160816; b=XDa6cbJOt2b4QAEcY7laoxKUVTBNwx51sIf7/BHgPQIXZuiMRbcVt08tzgAJuC5g+D F2EmuuNxGS+i+QyOxDnu/+JRnbWypvXEIV8znQfRinnEycPgjAKqLRBLICQZmTyScX0k CKOFEQTp65/S/rXRvXvAqfQHG7Tlk9UzEUMk02upb0zUckaip7Uxzbz652W/oX8NwUyu 6vjmc755zkq/6hm+2n40gVsU3TH/Q5vNGsLk12z2HYvIWf5kwbfyuDrQfjr6cIHxB8zA X9mGtSHCzX0ieMxfKz145Q/XPBJgn7MOJWQFOwSydQIhAlh2sMz/mkM083vma5sz6n8S 7QXg== 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=xNbRPHb0QaxGlTA7s33PjaJCVzzZC2iohEMIfDhjOnw=; b=csgpchRqirHKxGDpbo8i9kXVUtu0SvVE35ZkXxmGFywWJVdsB3nY9sqjvKLzOt9U36 NSmtVQWplXJfNX3X7qzWismtgZgXykBD7x8Gz2/tn3soHZBlYTggj5Wv6zT9A8hPHB8I JgZxi0fPkppWQ4Q4yZs+jiwXaiXDFw1FAlKbhEe3FAZXaB5g6soTV+qgf/jGrAjr5fkO HWOt9zLN7fET7B12yj8G9AiPoNuUeJpXD+qOKiSBBeN5iqnGS3plC79Umy9T4WzbUfKH RE+Ot03tVRTWuNRV5N9ATKupxxFGXLU7YY/psS4+jQbkHl05k/rG+5hjwtu+en1GlUih wOCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=G3VBJNj1; spf=pass (google.com: domain of 36ezixaokci8t6waxh36e4z77z4x.v75416dg-553etv3.7az@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=36EzIXAoKCI8t6wAxH36E4z77z4x.v75416DG-553Etv3.7Az@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 i186sor10665415oih.32.2019.04.30.06.26.01 for (Google Transport Security); Tue, 30 Apr 2019 06:26:01 -0700 (PDT) Received-SPF: pass (google.com: domain of 36ezixaokci8t6waxh36e4z77z4x.v75416dg-553etv3.7az@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=G3VBJNj1; spf=pass (google.com: domain of 36ezixaokci8t6waxh36e4z77z4x.v75416dg-553etv3.7az@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=36EzIXAoKCI8t6wAxH36E4z77z4x.v75416DG-553Etv3.7Az@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=xNbRPHb0QaxGlTA7s33PjaJCVzzZC2iohEMIfDhjOnw=; b=G3VBJNj1Efd82TURXBcG2ETfYyZa4nNQbw5XcSPgrFNgGTDcrjKi2K3Iqxh9GCJaVT q4ybexiR1zpb+d5J4+ktYX//GzTjjx7hvSHawuAMH2628bR7wRgw71HvGhNfTflHW/zs Atp0zpFkZrhjqB1YK2fIhTRq2d162F4gSLgDXmj1SWW0QKaRzutUGTNf9j2DzCy8DQXs 6qis1IjWlpcydKHrLlqfebzxPQ65WrUm0DNZpeC309u8+WueXbRuj/bbSEKVwswOSRBh 9Q1k1UxCvXqArWAzlxVP1yBw+FzmFzBJan3FvrRViSuycjCJ8f4ZVoJHTVS0bktu9b7r znhA== X-Google-Smtp-Source: APXvYqzqz0hM8566mMMykEcEDE15qguKaKv3Gnp85A2T0WJw46tHTZ3v4v+uUTcgMqiUvlhCC6+9Qaw/183DYgvX X-Received: by 2002:a05:6808:4ca:: with SMTP id a10mr3005375oie.35.1556630760913; Tue, 30 Apr 2019 06:26:00 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:10 +0200 In-Reply-To: Message-Id: <66262e91c1768bf61e78456608a8a5190ea4e1d8.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 14/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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. 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. Signed-off-by: Andrey Konovalov --- 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 Tue Apr 30 13:25: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: 10923517 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 D5D3C14DB for ; Tue, 30 Apr 2019 13:26:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C3CF127EE2 for ; Tue, 30 Apr 2019 13:26:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id B5F1C2860A; Tue, 30 Apr 2019 13:26:09 +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 416E327EE2 for ; Tue, 30 Apr 2019 13:26:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B76E16B0270; Tue, 30 Apr 2019 09:26:05 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id B28566B0271; Tue, 30 Apr 2019 09:26:05 -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 A3F896B0272; Tue, 30 Apr 2019 09:26:05 -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 84C5E6B0270 for ; Tue, 30 Apr 2019 09:26:05 -0400 (EDT) Received: by mail-yw1-f71.google.com with SMTP id i203so12808596ywa.5 for ; Tue, 30 Apr 2019 06:26:05 -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=5vVbThWFeNTYFxwbQq67jdT1oZny+xOKBFoxX+2Uk7M=; b=VsfyEJzBQtiwOwtGSXje0bJBe1OIuoAufYF87emaSBYxDMCX5lt9P6DwkeAv59AViy c6/LYvaRZR7skn+2LfF0A6FaRhbZrO0Ccah5PDM5LXi6U6E4w7c41SryI23pyXb2liUe bCrF/5J6k4RKU0v9MWKPWMAmB1ixHjSnDQn5iVYXtHo4pvT37klmTxn2NSdL0Vdi+Hi0 GUsBAsNH1pkFeNF6je2h40ju0Ydt72xTBqc0PoVV1POL2VchoWYDyOIJcPYlyGEUIWui CHoJMFrfGlFiIBSimzkW69md6PKFkVeZLiJ9CwQ0HWJ4VlzmZJtEKIpTMdtSzpuTxds2 GIng== X-Gm-Message-State: APjAAAW5945/ULU6Tk6zfC/A15y/QgkYzUBpTzuJ/AYDGzTuivse1r0p cJCzPAiyZ03Bzt8wZfA1EehQRMn0t3IcaDmgK3ojdLKQ8Fe7QEyG3vF4Pm8gN/0KjlLQtSUf2CZ Zw6PKHbmp2O6/g9W73+zuXU8CJ7BqQT6dTZP/Ypnee5yAcFAI5PxeQwSwP3ATW2IwyQ== X-Received: by 2002:a25:844e:: with SMTP id r14mr55405856ybm.305.1556630765254; Tue, 30 Apr 2019 06:26:05 -0700 (PDT) X-Received: by 2002:a25:844e:: with SMTP id r14mr55405783ybm.305.1556630764387; Tue, 30 Apr 2019 06:26:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630764; cv=none; d=google.com; s=arc-20160816; b=ZcHFweCQzBHJ+00X4fUhZLyhhByy6XGDtEnjRnnBydbeElq7PfFqv3QpiG4EKRbW3Z VkCfkfOBVbP9zLi3G3ppzjcl5+LbzSq/Mwux93LoihjZX1/1v0rRtAGgLp5WJjSbllAh rHajEHR9II7OTe8eeGyMM1uwO6XNNUzUForWpHhkI3ti365CUdisY9AfMjabHS+UK6ay TXU7Lw3XLv6tTejdkRwheboCLBvmJcC8tjFm2txBjRNSWS0Hjrqrhku9oBgbtfKb0Mpv 5ihzCCc/8/zfg8BLDy3LRWrB6wiX/JfYDPRHU5QRhfacyilYd1rSAM79LuEl6Ip02Xin umOw== 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=5vVbThWFeNTYFxwbQq67jdT1oZny+xOKBFoxX+2Uk7M=; b=sbpavAq6om0lJy7TDXpmkz82Y2hnL9jYhmDFirEwyE2jwqTrwMGVAz2n6w7Vu3Jws8 k2vrSTuuixnuK8wrKCEPE6mMTRDV0ZzMQNgH6+lv76hvyPmIQFxz+H/oOWebMSS1Q8n+ mfpakROH7vZvNi47FxaqNZFh2BdAl/Eb4REr6Q8r9hy11BdH61loQeO1okHfsqxYqCNN YuP8YhvoVhOCZ6YujJHwdkoqEwdj0XTfcxfeS1n+fOLFbM5TrJ6qhsG6c/96xND1Ecv8 GQRBE5NtuAtg5HYs9gT/h8qUmSR4zjoHl45iTnGNOARSDTTKep4MtkRXS7o1kfivVC6h z2VQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=FRME1COe; spf=pass (google.com: domain of 37ezixaokcjmxa0e1l7ai83bb381.zb985ahk-997ixz7.be3@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=37EzIXAoKCJMxA0E1L7AI83BB381.zB985AHK-997Ixz7.BE3@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 f10sor2660256ywb.6.2019.04.30.06.26.04 for (Google Transport Security); Tue, 30 Apr 2019 06:26:04 -0700 (PDT) Received-SPF: pass (google.com: domain of 37ezixaokcjmxa0e1l7ai83bb381.zb985ahk-997ixz7.be3@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=FRME1COe; spf=pass (google.com: domain of 37ezixaokcjmxa0e1l7ai83bb381.zb985ahk-997ixz7.be3@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=37EzIXAoKCJMxA0E1L7AI83BB381.zB985AHK-997Ixz7.BE3@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=5vVbThWFeNTYFxwbQq67jdT1oZny+xOKBFoxX+2Uk7M=; b=FRME1COezh5b+xsqn4P+Wuk9kST7usWvir2xQhAmIzYbqhd+Dle1XM/PaJl5NwGBwF z7/SMrTqJtHy/gO4CF7xbqlFAwpIk8PwR9mnXkXEY1b5HFuyeguAZJRX9uVnCx/+N6Cg GdXjue/eQFQ6wfKzJUzNubo15IJ6ki/RwkeGwPRaQhUCcsmSJMlmZ6DdqtqFu3fOL0bX 01e0qP9aKT8hITIugatecY8TuWXLv4w13ho7n2rx3qvyQwxwSmnnV+ESWDP6rPMjBLm6 9em8VBa1zwsikfNNQo9I2iNQIYFHDIjY+xXevJ0y76Ma6MtOAyKoTjWTXLT8lERzPHTd 0Kew== X-Google-Smtp-Source: APXvYqyv8kHiq9IuRt8k8uxL630nsRVEEuszbAKJggJOMl5SWFBjzMAnW0IWxRwAYYoqlPXLLWZ5sEsVnC5FF0Vx X-Received: by 2002:a81:3c89:: with SMTP id j131mr56890450ywa.183.1556630764032; Tue, 30 Apr 2019 06:26:04 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:11 +0200 In-Reply-To: Message-Id: <1b2a46dbfa24bde41f11cff6f53683a5ea5915c7.1556630205.git.andreyknvl@google.com> Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 15/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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 --- 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 0b9ab1d0dd45..8e7b52ab6c63 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 Tue Apr 30 13:25: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: 10923521 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 06F32933 for ; Tue, 30 Apr 2019 13:26:13 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E7E4127EE2 for ; Tue, 30 Apr 2019 13:26:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DAC69285EB; Tue, 30 Apr 2019 13:26:12 +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 732B92860A for ; Tue, 30 Apr 2019 13:26:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A19BC6B0271; Tue, 30 Apr 2019 09:26:09 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 9A2946B0272; Tue, 30 Apr 2019 09:26:09 -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 86A9D6B0273; Tue, 30 Apr 2019 09:26:09 -0400 (EDT) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by kanga.kvack.org (Postfix) with ESMTP id 4DD996B0271 for ; Tue, 30 Apr 2019 09:26:09 -0400 (EDT) Received: by mail-pg1-f198.google.com with SMTP id o8so9046138pgq.5 for ; Tue, 30 Apr 2019 06:26:09 -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=Qo5FEqXeJKdpmXvqV1aNmsvS1qf4QOcuAEvGRZnbU+I=; b=c6Q9MGBFteytn5ouLvjU/wvk+PWrXLdECNqDI+hAy5saBjsaZBN7jQANv8lkFcx1w9 5sor/tJIeJjbn8OJo9kfCqWzWTFSiw6thI/m6I7hPlJkaXQIUBfNCabvItccHyOeA+vc js2G7BRNjjKGYldV4GJC/fiaHTGoHMqLyKxIt9w4rjWtb0hUHQI257aaRetm0B/4NANa Z0E5H8s1v6khtpZls2nJJi+DxscbnYosIkocmGd4m/CDPpcN24GH7y7xhEf1YvYUiM0e R/NeORAc5PEEgv3BHB83726D58jiYH2xmX8e3uzp/I0mQX0s/MZX3LXjefhSa4um/NXz 7RvA== X-Gm-Message-State: APjAAAV+ymCzleyBb5TPBUgKM+CbdpNib6dlH69RPH4IS1UJZZswUkDt aEkcjetq+hFAmI/Hx7Z9zviWdimAdnpw8/bHmwqwPEGWESxex7bKawQzU3SN8h+GQR5h2fgeP9E +xyDD53kZEdi1p0uQvjSMwSGLpEeqHaidTp48XEVzHULPtQulhq6S/0A4NLgIrd/V4A== X-Received: by 2002:a65:63c3:: with SMTP id n3mr51596977pgv.170.1556630768886; Tue, 30 Apr 2019 06:26:08 -0700 (PDT) X-Received: by 2002:a65:63c3:: with SMTP id n3mr51596886pgv.170.1556630768045; Tue, 30 Apr 2019 06:26:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630768; cv=none; d=google.com; s=arc-20160816; b=omylDuP/vDQyaFIuOMlXy0jvPejYhkph88IJJjzvjYFsyzlN7++m9oIsZ6RNxT1z4g e7SKRjl6+kea7okOkWjUSzwjMV7NcDjzx8MeLCmFRBEXr8cHQEG2yJQRBaMX76GDmD/T i23zrtB6kcJTRyVobj1rt1KL1GZ5gUUnWlwc+FVU5BwIDv2QHtv4vz4Xc4T5Otxt9bMy ox+7cDxofKF4Tp3MxODhJDJOK32wxxEVcDkbO2bv/C/Rb466/F27PxsK1XJP72INg4Wq M0fbkTLSzm/r1EPQBcMvQCHMlA8apfg/x55D/JIs/ld+QFqOX2QEKWc65kid6CERkI+s AwhQ== 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=Qo5FEqXeJKdpmXvqV1aNmsvS1qf4QOcuAEvGRZnbU+I=; b=Wes0LKP5n1EKzqtlxN09Ecc8OLzcKDDxHHuXZIEKbjGXcL6Zt4//SzKNcsJhUhxIG1 zFI/S1/59PWdiUW1q+7JJrxPb6mkwz6+tD65n/2N5nLvfhEpBapWJnTP0z1kxz/NhzFc swtuY3lSuDROCMsS51g0C8HAHtN6bQZ3bgeV09cRANFXmcGaTNon701IX4lz2BNqrnOO V1MFapFIOHIV+VKkccCwlUZvrFNFjIMfb7OWGxN/Ry6T27VLNp1LBEx1s2gHdPoOKr75 7WkGVjTd25Hy1qduCmLT+pAwtqo4LG2sxdXywne768kNaHqUPI2NuZy0t9axH9aAY9sV vR9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=WJvgA7Fh; spf=pass (google.com: domain of 370zixaokcjy0d3h4oadlb6ee6b4.2ecb8dkn-ccal02a.eh6@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=370zIXAoKCJY0D3H4OADLB6EE6B4.2ECB8DKN-CCAL02A.EH6@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 j23sor11747451pgh.83.2019.04.30.06.26.07 for (Google Transport Security); Tue, 30 Apr 2019 06:26:08 -0700 (PDT) Received-SPF: pass (google.com: domain of 370zixaokcjy0d3h4oadlb6ee6b4.2ecb8dkn-ccal02a.eh6@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=WJvgA7Fh; spf=pass (google.com: domain of 370zixaokcjy0d3h4oadlb6ee6b4.2ecb8dkn-ccal02a.eh6@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=370zIXAoKCJY0D3H4OADLB6EE6B4.2ECB8DKN-CCAL02A.EH6@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=Qo5FEqXeJKdpmXvqV1aNmsvS1qf4QOcuAEvGRZnbU+I=; b=WJvgA7FhPH4nnlwUD7/cK+UGsQvztnpEwl/EwgwpETKSn2jcm2n8vXAJ5vmz+updJQ hv5vQG7S1TSnGIvsNFWmNlDJOuMgBbHPDTDqE1/Q7BSkSWZGsQSxWFmbI9EyZ11RD35O PoWicUER0x2L/roTgi03inDjhawM/RefWqQ0HU9dp3Bfb6piRBIYbrmvMjy86XgTN3si Ctsvudz1bGthwFBvr6qlHQElPSiMTUZTlDJzHWjXIK5Av3TkDr+6XQPdcLfX/oczYas3 y01MzwmNMMd59RGZLYJMIFoZY0gr9B1FAyRfwBPJvm7Zd8dDqsp5xcnwSnBCo7S+GHIh eAtA== X-Google-Smtp-Source: APXvYqzC1lVWU3xOxPIpeGY1IySKfn9D9N99TINTSZcSwcwIPCbrd75tIMQec4oX3DSqqzuBnQc6miaAqMAhwGUH X-Received: by 2002:a63:1d4f:: with SMTP id d15mr64183239pgm.347.1556630767405; Tue, 30 Apr 2019 06:26:07 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:12 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 16/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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 --- 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 d0f731c9920a..5daa966d799e 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -382,6 +382,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 Tue Apr 30 13:25: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: 10923525 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 3256C14DB for ; Tue, 30 Apr 2019 13:26:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 21FD827EE2 for ; Tue, 30 Apr 2019 13:26:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 148D22860A; Tue, 30 Apr 2019 13:26:16 +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 848A827EE2 for ; Tue, 30 Apr 2019 13:26:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 49A8A6B0273; Tue, 30 Apr 2019 09:26:12 -0400 (EDT) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id 3FD466B0274; Tue, 30 Apr 2019 09:26:12 -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 2EB7A6B0275; Tue, 30 Apr 2019 09:26:12 -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 0A5776B0273 for ; Tue, 30 Apr 2019 09:26:12 -0400 (EDT) Received: by mail-qt1-f200.google.com with SMTP id w53so13337693qtj.22 for ; Tue, 30 Apr 2019 06:26:12 -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=CUfyrLNe/T3EcKv5qduPdE7e3xDRgpU9AlrvCv3qwqI=; b=DGSxr5+5U0TnBN+4rBiz3m/NtKRqfWRkEi7IDn4m76MmR7Dbfn2iA8dbuqiTP/FHWL lBKaHFiCyv8QaQ7KVlyyDx4B/f+vEepcZrmnLDltC1dFioRIuNDl8GYQXMe0jTlNhkTf GCubFD7T4tcNWYpFeJDz/wt5+pMIG7VXC0y9xT7nxyMArvFEmTXG/HV09/QyksKzVEvM 6XrXEX/QMb4XJKVhvR5eCJVEBfEUbFI0Kls+ezaX3vj98XKLllDL9pNnUP6o9FcptYpM mpCIQzX8CrovCViyWuinuHp0smPAmGV4NF4sCJUYs+mjQd4qMMd6MdW/HI4HNUHoXJPN dixQ== X-Gm-Message-State: APjAAAXQuoAw7+rFmhNEsYXdEH4e/uL9G1qmLV4LuhR/+31dUPW5GhpE PuvmOltpZ5ik2sSKNmNTcorcxeICaT3PPn4UdCHZF5CDKL/hbzZvS8SgQkIZ7/ASYT1H9Ku3CT3 kPLU43N6AsQcM0uIh+VE2BVt+k+j+OyiQzzod/xx4kDAAZ5YNPuudJ3Waax7XgJmXcg== X-Received: by 2002:a37:5b86:: with SMTP id p128mr43890910qkb.10.1556630771767; Tue, 30 Apr 2019 06:26:11 -0700 (PDT) X-Received: by 2002:a37:5b86:: with SMTP id p128mr43890859qkb.10.1556630770965; Tue, 30 Apr 2019 06:26:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556630770; cv=none; d=google.com; s=arc-20160816; b=ufMg3Ww519CUYecj93lg0ae4pS7ySSUhLoJGY9fR/5dAapNURYv3jMXC9R6JdyrAaV vcFtrGCIrGnecHNWwkeYASjqlJ8L11LHvCuwiYVzWbH0+O4HUPRjiJnxhUcrx0Ar5mAU AUKNuRmpxWYrFegiL5fRv50HIXgbvsCfn8TIYumKGp7Wndk8V0hHgtYgQKmdZgMci//E x/GcAtP1HcAMPfRbObktZ8voJR/1fjPqPIkJ/Q3VOtMJKlo4mPwCx2L4neF5HF21zsBR V4voO5vGrE0tkXURbiCva2QOfsHtadPEgYkSi+dtxNiUL5Hk+aTShpjwefrv9zEi2bu/ if2A== 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=CUfyrLNe/T3EcKv5qduPdE7e3xDRgpU9AlrvCv3qwqI=; b=XBQWEgHVZAbrdZDJq5zfGar4VN0vwTMrLOpVNXnmu/Sh1qvnKweaY2ATfy80UiWoLp 0MoHL/pV+tfewqi7ZvketziSdQp/y7SAb70zHrm1okXPqS0CWx0E+ZvleG4eqGYf7ihn oNpH7APJfCVpXWJxxyNSypZOFR+73JpruN80sSZ1U7dSDSC8CgZlnL9LXffBJ6mRXsJY ebTqMgrU+JeQptCD5BM9we0p5a0jEZmNXFE0Kf26D3ZNqc31JjBDL5dNLDy5WcLsY3y8 Qv5rWmaJRfx3b7QTHy+cYnYePbWMDmgY9W8Fx+f+mnqmYFmv3nuTm6gDHjpD+HsictGf jk/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=ACzTueeb; spf=pass (google.com: domain of 38kzixaokcjk3g6k7rdgoe9hh9e7.5hfebgnq-ffdo35d.hk9@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=38kzIXAoKCJk3G6K7RDGOE9HH9E7.5HFEBGNQ-FFDO35D.HK9@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 e123sor16856226qkf.14.2019.04.30.06.26.10 for (Google Transport Security); Tue, 30 Apr 2019 06:26:10 -0700 (PDT) Received-SPF: pass (google.com: domain of 38kzixaokcjk3g6k7rdgoe9hh9e7.5hfebgnq-ffdo35d.hk9@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=ACzTueeb; spf=pass (google.com: domain of 38kzixaokcjk3g6k7rdgoe9hh9e7.5hfebgnq-ffdo35d.hk9@flex--andreyknvl.bounces.google.com designates 209.85.220.73 as permitted sender) smtp.mailfrom=38kzIXAoKCJk3G6K7RDGOE9HH9E7.5HFEBGNQ-FFDO35D.HK9@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=CUfyrLNe/T3EcKv5qduPdE7e3xDRgpU9AlrvCv3qwqI=; b=ACzTueebTGZuzKKoCgKBIgO56T+v/kmKwHjurWtS7UbHoL/8XDJlDb5ck/BSEBSEkL L/cpQLHEpHyLmFxTqXzMv0MYxpPJ/tdSuF6iSO5LSNmbylvOUvYffcEQgPGf+AHIVemF X7c/hUL69n/uOjY+uNJSNPAVfbcNbVaSMzD0uei9BaIXpxtVKCRwsIlHAcYOHL9EFavB iCJAtq03WGCgnaX+tP7fN2qD5Hnfneud42YH1gQK4xFPHVYPeqPOAqGnfhU4Bvx5JZ4h WVQJpJkjflxIoXEbOmqcqlW6kZy64vV5a1g9LW1u4aQq8hQq2UTluPLfVENOwe2MSfHQ GaaA== X-Google-Smtp-Source: APXvYqysB3GTYMj0WGj5xIZkllIRnPABiLNbQUXAXOCL1Y4t6SI5ksxcGzuX1TZYAhDJVUrbxfYKc2E7kTYKjt+4 X-Received: by 2002:a05:620a:482:: with SMTP id 2mr43219855qkr.323.1556630770597; Tue, 30 Apr 2019 06:26:10 -0700 (PDT) Date: Tue, 30 Apr 2019 15:25:13 +0200 In-Reply-To: Message-Id: Mime-Version: 1.0 References: X-Mailer: git-send-email 2.21.0.593.g511ec345e18-goog Subject: [PATCH v14 17/17] 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 , Kuehling@google.com, Felix , Deucher@google.com, Alexander , Koenig@google.com, Christian , Mauro Carvalho Chehab , Jens Wiklander , Alex Williamson , Leon Romanovsky , Dmitry Vyukov , Kostya Serebryany , Evgeniy Stepanov , Lee Smith , Ramana Radhakrishnan , Jacob Bramley , Ruben Ayrapetyan , Robin Murphy , Chintan Pandya , Luc Van Oostenryck , Dave Martin , 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 --- tools/testing/selftests/arm64/.gitignore | 1 + tools/testing/selftests/arm64/Makefile | 11 ++++++++++ .../testing/selftests/arm64/run_tags_test.sh | 12 +++++++++++ tools/testing/selftests/arm64/tags_test.c | 21 +++++++++++++++++++ 4 files changed, 45 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_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..a61b2e743e99 --- /dev/null +++ b/tools/testing/selftests/arm64/Makefile @@ -0,0 +1,11 @@ +# SPDX-License-Identifier: GPL-2.0 + +# 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_GEN_PROGS := tags_test +TEST_PROGS := run_tags_test.sh +endif + +include ../lib.mk 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..745f11379930 --- /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 "--------------------" +./tags_test +if [ $? -ne 0 ]; then + echo "[FAIL]" +else + echo "[PASS]" +fi diff --git a/tools/testing/selftests/arm64/tags_test.c b/tools/testing/selftests/arm64/tags_test.c new file mode 100644 index 000000000000..2bd1830a7ebe --- /dev/null +++ b/tools/testing/selftests/arm64/tags_test.c @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include + +#define SHIFT_TAG(tag) ((uint64_t)(tag) << 56) +#define SET_TAG(ptr, tag) (((uint64_t)(ptr) & ~SHIFT_TAG(0xff)) | \ + SHIFT_TAG(tag)) + +int main(void) +{ + struct utsname *ptr = (struct utsname *)malloc(sizeof(*ptr)); + void *tagged_ptr = (void *)SET_TAG(ptr, 0x42); + int err = uname(tagged_ptr); + + free(ptr); + return err; +}