From patchwork Mon Mar 11 10:47:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alice Ryhl X-Patchwork-Id: 13588578 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BC6CAC5475B for ; Mon, 11 Mar 2024 10:47:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1E24C6B0074; Mon, 11 Mar 2024 06:47:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 193076B0075; Mon, 11 Mar 2024 06:47:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 00CFC6B007B; Mon, 11 Mar 2024 06:47:23 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id DD3A56B0074 for ; Mon, 11 Mar 2024 06:47:23 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 796D6160498 for ; Mon, 11 Mar 2024 10:47:23 +0000 (UTC) X-FDA: 81884431566.28.B1C712B Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) by imf13.hostedemail.com (Postfix) with ESMTP id 97DD22000B for ; Mon, 11 Mar 2024 10:47:21 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=pGR+CnDm; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf13.hostedemail.com: domain of 3OOHuZQkKCOsNYVPRelUYTbbTYR.PbZYVahk-ZZXiNPX.beT@flex--aliceryhl.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3OOHuZQkKCOsNYVPRelUYTbbTYR.PbZYVahk-ZZXiNPX.beT@flex--aliceryhl.bounces.google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1710154041; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=OL5M0QWyifHNNdL2G7ppAclszTpwZdkP49JBOmqQfUg=; b=xnS3g61bcpv+PCBMpJ5zP5uMw3SqX6rjiZYALpGkLfdbwdAlMtnJNz5AbB6VlxOnZdnCDR scEokqeccY66NJokMyh7y7cjZL+7o6gYp+/PhQH6p1jA26a/WtklyhxnAPFN/kv3h1AIP2 P4vlDSZamwyuXQ7yvHxJDNNWWZvPHig= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=pGR+CnDm; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf13.hostedemail.com: domain of 3OOHuZQkKCOsNYVPRelUYTbbTYR.PbZYVahk-ZZXiNPX.beT@flex--aliceryhl.bounces.google.com designates 209.85.128.202 as permitted sender) smtp.mailfrom=3OOHuZQkKCOsNYVPRelUYTbbTYR.PbZYVahk-ZZXiNPX.beT@flex--aliceryhl.bounces.google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1710154041; a=rsa-sha256; cv=none; b=P6FZq+Znnw5baMvWfVS4Rf/Xh1hOEzn2yFpRa3J2SA1FBGyoRHBCEWbIDkuBjEoYai2hzo PfUq2jcSpnu9FyQ5TT/w/Tccg8d431s6a1pSNlmwq3IXIZHHK/Q3aFfy+wSk24/wsoTanN Unr2GXDQSf73KwknzZtzcvrC1grRaxE= Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-607838c0800so56490527b3.1 for ; Mon, 11 Mar 2024 03:47:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1710154040; x=1710758840; darn=kvack.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=OL5M0QWyifHNNdL2G7ppAclszTpwZdkP49JBOmqQfUg=; b=pGR+CnDmyn8b/b7UtjWBRWmWLZh0sv+J0mHlWxkITcuQesLW1zqxsiv/C+MIkmYLv7 CcGddQsXa9dEXR1T/jaeUWJZJu/MIrzdPpWkeRP5mOxvsYhTrsvJ8OED/iG68m7n792Y TGp+uZD/KzAxFsYJZvn5FZY3GqeWqOq4JbB+8IAJL0z1ZtK0zyEvaKMaTIJBGP3fcr4J Gy9CduE00APGXBCJ0fWxZm6iLoWaOeW1RRvhgfDY+Gh1lheMH8Yixi7I5S6+riW8Oxi4 +tGBwWsbvXQhyXEP9PezB7Av9xGJjrPi+NfeLRageCwnoNC9M7LJ79cGAvowqTVLlPBd RsCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710154040; x=1710758840; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=OL5M0QWyifHNNdL2G7ppAclszTpwZdkP49JBOmqQfUg=; b=tQ83p3BHNGWMfpKA21It0ISycC+e2a85Yfk5PhzS9ViusbXJoU1zjOaKcpHziDm/3W hAOrVXH5upURCl7JAP3n3a8ovcvMJIwVuwKRJ5VYsZzD+KCTZOXY5ewHDeFkuyq0WFUv l/pLr6dWwCYoqSfj55o1GQ5CCAX1XjEL1uzkeNzaVlYlqij8BTj670Q0OSxywcKbfgrT rQd2A9HI9/o3zBbRiEcBERl7EMsnEllc47Icv2Cr7GrEiAqq6pdXzHNSJeYexRG7fBGh QHXfBcZQrEHGse6ef/WaSABISQ7o0akSHsTWihFSu6JRtmWcrBinW0u/e980NQwdsB+l HaMA== X-Forwarded-Encrypted: i=1; AJvYcCXcs5ialQdJSlFWIKUzgpkTplU96anLpzLaYJGF1g8cEAYTQXQvUB4wV/eVDRvm/p4mJpsVYjgm7h1sTZRpyZLVGxo= X-Gm-Message-State: AOJu0YwWlePRWIAy9/N/GAvp17+plXqXzZtpOSTLCLH1T8k+/RHJDPys yeZ21TI+sSsCcwM131vINGbiJeYi6FJqFvkxiLWfu6g/5pNvMHXGyfpDNISXr0hBneQsAm2lHQY uGYwW3eEJT9dfOA== X-Google-Smtp-Source: AGHT+IE1ncu/WTcNjGAnRJ10XRaL7XtUuCqTkHwslE1ImUHNhjgR1ywcm4zJ24S5Uy+4a8JfkWXzPThuHXDDTec= X-Received: from aliceryhl2.c.googlers.com ([fda3:e722:ac3:cc00:68:949d:c0a8:572]) (user=aliceryhl job=sendgmr) by 2002:a25:aa14:0:b0:dcc:5463:49a8 with SMTP id s20-20020a25aa14000000b00dcc546349a8mr1576787ybi.6.1710154040582; Mon, 11 Mar 2024 03:47:20 -0700 (PDT) Date: Mon, 11 Mar 2024 10:47:12 +0000 Mime-Version: 1.0 X-B4-Tracking: v=1; b=H4sIADHh7mUC/1WNwQ7CIAxAf2XhLAYKLMST/2E8sK5uJNswYIhm2 b8Lu0yPr+17XVmi6CmxS7OySNknH5YC6tQwHN0yEPd9YQYClJRguZs8Ep9n3qFRSpsWiSwr589 ID//eU7d74dGnV4ifvZxlndaIFhL0EcmSC95L1yGhVaj1dQhhmOiMYWa1kuEwQfy8z1BNCxJMW WjX/pnbtn0BsZxJJdsAAAA= X-Developer-Key: i=aliceryhl@google.com; a=openpgp; fpr=49F6C1FAA74960F43A5B86A1EE7A392FDE96209F X-Developer-Signature: v=1; a=openpgp-sha256; l=2955; i=aliceryhl@google.com; h=from:subject:message-id; bh=eFO8v8hNbjIyLu0r8FdBf9oSrloJURleePlt88en+Ow=; b=owEBbQKS/ZANAwAKAQRYvu5YxjlGAcsmYgBl7uEzbZWmf9BCRypJrSQseEDCZlk4xAlqYenD3 TaITrik6PKJAjMEAAEKAB0WIQSDkqKUTWQHCvFIvbIEWL7uWMY5RgUCZe7hMwAKCRAEWL7uWMY5 Rn+BD/0YENdgVIyHtyKKIzmevaWvjv1Bz4CRTnVr6yyDiHjOQ6jb4fmjM1f3PPhdrXpe35T+TwH H5xuahzp3T7osiXs7jAbHzmIUzXei3YH9zY+gxGE/fLxRMSYFzD6FgXyGexkgyIbn1DY8XrmpEl 4vGAoxJD3Lq/vsB8Y8LhmGBRXtEcUJE6pfB9AySb/YhEA1Kn+mhr7JM5EIpZxml71jA9oDvA5zY 50xSALmT51CD31w7V/mSxvUkVX0zIdM5l2r9utasvXSA7f9gQbW0+Jtc2GFukHIAOzVKxaQ0NAx LA9tLpadDKRhtS20aJusKewF2yF7hFS4qk5CrDVKAu6GtwlEScBhfP0GA3PSWAdCg5/FruKhX02 pS1XI4SdicSrkAIN289GK/forO9U7CcpAB/pmpaF2+i3D7xyrItmjPMFXMH5zYBREyTgrz72ck+ vozSQZTVmQOjsU4L1nI6Qj9olliNU1eK3v3oCZ7fOEDkVTOVqhtUiYgYW112DjQL2P3yzRH01cy h8dzbbAIvuigCzK29AkXE9/6bUujoFFV5GaZRXlfo0c0pjpl4z0duf/yjun894N4XnjdXI/R++I +qiEFJCRPMsGysfiOCcELFNGCqFEUWrutdJpNqBQu2BEpHqNnLydAruOIyJ3Wsfgv8mOHwAsKEe wptsYX5Lzhg7jWg== X-Mailer: b4 0.13-dev-26615 Message-ID: <20240311-alice-mm-v3-0-cdf7b3a2049c@google.com> Subject: [PATCH v3 0/4] Memory management patches needed by Rust Binder From: Alice Ryhl To: Miguel Ojeda , Matthew Wilcox , Al Viro , Andrew Morton , Kees Cook Cc: Alex Gaynor , Wedson Almeida Filho , Boqun Feng , Gary Guo , " =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= " , Benno Lossin , Andreas Hindborg , Greg Kroah-Hartman , " =?utf-8?q?Arve_Hj=C3=B8?= =?utf-8?q?nnev=C3=A5g?= " , Todd Kjos , Martijn Coenen , Joel Fernandes , Carlos Llamas , Suren Baghdasaryan , Arnd Bergmann , linux-mm@kvack.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Alice Ryhl , Christian Brauner X-Rspam-User: X-Stat-Signature: t35me58efzewtib1j5gazkz1dmd6af7b X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 97DD22000B X-HE-Tag: 1710154041-765563 X-HE-Meta: U2FsdGVkX1/yAN7ZGFmFiLbEqBw7rgbIsfQ/n6wVIOwYU9+5xLH1lPhEPjVFmQgj9Y0dhy6wibr222/7JnL4eGfjiEkJYn31Dgn/2TBGfNHicDNpluCBCjf52TFqEBnFZzeEBys5qu0WRF+oXfO68BeEJxRWV/oKJwh2n9npwSdoqD7ZTRdqsFzuVAGD9U4y70zPMEM7YnZYdO7hHY4hFiQ+GvUBUgWDPsMaN8LHQFSRjOHFOSY6m/hQ76Hh0I08ExcQcmVpSqDotCMhQ+JTfflCh5dWu0QDvSw3OnITqRzA3DMgKbjWY+wCILwPWcRoPCO23yivM1fTWqkVLbeVQb4E+aJFNnp89KSkN8r/DoFONq6e9KhlEcqysRdp7HnPsRNYnj9upHT0/2t6CB2FcmZSQXN56Om72ltw+SJNOaAfrZc/v5AWcUgbo9e9bwX1sph48wr76pE2Rbi615cGd9kX6aTh9oS7sbhpON7gd1tc2puGNAokeyIIYndrXAC4YCESc674h+IDQB8vxAabS9K9czMjPV9VSvVDfoF8GQ12wr7IQx02mhqFQjH/50kSYUIXxmVNkwKh3MQdvzBZmr1Fm3Q0bykzxEqPejnw8Or+t3LmrlKlug4ihukcohP52bENhHnem+tWlWyXX6GDgH4KyfuvzpdWSwXjEip0Kq2aSYBM9uLYpcC1Rb7kOsNBJgWQPn1B4S3bJyOkiNGu3aXNCW6iWPhez9UVfby6HrZDkm8Pqd+okmDFKqxoagkBWB8x77RCGArVTm8pvW2x9Yea6JTgG4hXAa5vwSd2l1/cOIly36XKogj92LHANxvHBzYZpA7fDsCT+ZrYc7XL8SVsQaqTn68qZ1ZUsTkXubgQGFcqd06dY+fcmsJGpG3Z+IPla75o/O6+AK2M8rNI1kjZIDWNhsuzDQ7gnEgushB3wQkE0caHk4ULTToYp6WrA7qnTeOrRarSm718tSE motn7aIQ W8RWKD8acIQFTEqyh9jfnkQSd6tIEe1uU11kQ9oUKhCcdiQ6WBKn1kC6X9Dw6/wJL8Bbdlh9N9c3RVNoW/EvhQkDfI3Zict9tchZJZU/6Z3h6ZmXp2DVvSum7uNSdMGTa2l2rKK09gNCA7SDe00H6ZG7F69deKfrklsxLQVPAY90GIFq0Aebep5PKbyTH86Q9uEhnj87Uutgn3F13f9PLH7Fir4a4KamlyJHYuoUZnCxup+TnwrUTd7Tjp1adRyJT96bHRx+PYRTl1N+L5z8sTw8MkVtCfEbf+OaSkVpFkSicW4Npc/uBHYaB8iCOkq26iiPX9OmhOYOV8ozbcni2d3lsGWpcYWVYARL02iD9SN+jdJfxAIY3Y2vlueDSfqIhetafrnHjn13o6YGhOcFlUjiiriS9rRdvHR/Ps8BklIHGwjOAfyCWJv9xe9iSunynpx4yOY5iqdj94SRX78xUK6NBxLtJbjMLpGAeIxb+ia9A7B6LQXpBRUin8w66lGliPV8MMIwUDAAAt6C3N5JazeFP1RVTHmP9jEdnr1wAvLNAitRRl1phcaaf0ydWI0vmu4D3f7GTBwg4j/2wHMFOfAn53Z6gVJtLnET2Aj94Bus0mgqtD5IlnC39NMgQTeHkTxAsQ2Q5UPwrzkXcW+fX/clvN16qlqk+rUNUuiOjq0nokUiJ5gg73DQgW61tnrKX1HugNEMy8cx4kgaqYS3A4E7aJAbJObH9DgVCakY+A2EZeVNBaA90HTqI+zMa0g2ZRozV 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: List-Subscribe: List-Unsubscribe: This patchset contains some abstractions needed by the Rust implementation of the Binder driver for passing data between userspace, kernelspace, and directly into other processes. These abstractions do not exactly match what was included in the Rust Binder RFC - I have made various improvements and simplifications since then. Nonetheless, please see the Rust Binder RFC [1] to get an understanding for how this will be used: Users of "rust: add userspace pointers" and "rust: add typed accessors for userspace pointers": rust_binder: add binderfs support to Rust binder rust_binder: add threading support rust_binder: add nodes and context managers rust_binder: add oneway transactions rust_binder: add death notifications rust_binder: send nodes in transactions rust_binder: add BINDER_TYPE_PTR support rust_binder: add BINDER_TYPE_FDA support rust_binder: add process freezing Users of "rust: add abstraction for `struct page`": rust_binder: add oneway transactions rust_binder: add vma shrinker Links: https://lore.kernel.org/rust-for-linux/20231101-rust-binder-v1-0-08ba9197f637@google.com/ [1] Signed-off-by: Alice Ryhl --- Changes in v3: - Fix bug in read_all. - Add missing `#include `. - Mention that the second patch passes CONFIG_TEST_USER_COPY. - Add gfp flags for Page. - Minor documentation adjustments. - Link to v2: https://lore.kernel.org/rust-for-linux/20240208-alice-mm-v2-0-d821250204a6@google.com/ Changes in v2: - Rename user_ptr module to uaccess. - Use srctree-relative links. - Improve documentation. - Rename UserSlicePtr to UserSlice. - Make read_to_end append to the buffer. - Use named fields for uaccess types. - Add examples. - Use _copy_from/to_user to skip check_object_size. - Rename traits and move to kernel::types. - Remove PAGE_MASK constant. - Rename page methods to say _raw. - Link to v1: https://lore.kernel.org/rust-for-linux/20240124-alice-mm-v1-0-d1abcec83c44@google.com/ --- Alice Ryhl (2): rust: uaccess: add typed accessors for userspace pointers rust: add abstraction for `struct page` Arnd Bergmann (1): uaccess: always export _copy_[from|to]_user with CONFIG_RUST Wedson Almeida Filho (1): rust: uaccess: add userspace pointers include/linux/uaccess.h | 38 ++-- lib/usercopy.c | 30 +--- rust/bindings/bindings_helper.h | 3 + rust/helpers.c | 34 ++++ rust/kernel/lib.rs | 2 + rust/kernel/page.rs | 223 +++++++++++++++++++++++ rust/kernel/types.rs | 67 +++++++ rust/kernel/uaccess.rs | 388 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 745 insertions(+), 40 deletions(-) --- base-commit: 768409cff6cc89fe1194da880537a09857b6e4db change-id: 20231128-alice-mm-bc533456cee8 Best regards,