From patchwork Sun Feb 2 13:05:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Asahi Lina X-Patchwork-Id: 13956520 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 5601FC02193 for ; Sun, 2 Feb 2025 13:06:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 126CB6B0088; Sun, 2 Feb 2025 08:06:47 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 0D93C6B0089; Sun, 2 Feb 2025 08:06:47 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E45336B008A; Sun, 2 Feb 2025 08:06:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id C80FA6B0088 for ; Sun, 2 Feb 2025 08:06:46 -0500 (EST) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 84011161445 for ; Sun, 2 Feb 2025 13:06:46 +0000 (UTC) X-FDA: 83075029212.26.3E7D98F Received: from mail.marcansoft.com (marcansoft.com [212.63.210.85]) by imf05.hostedemail.com (Postfix) with ESMTP id 93FE410000D for ; Sun, 2 Feb 2025 13:06:44 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=pass header.d=asahilina.net header.s=default header.b=Fvp6scyW; spf=pass (imf05.hostedemail.com: domain of lina@asahilina.net designates 212.63.210.85 as permitted sender) smtp.mailfrom=lina@asahilina.net; dmarc=pass (policy=quarantine) header.from=asahilina.net ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1738501604; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vscU1xjFmj4aBYakNmliZy/hBTXSOf5iED3uMi6fmY4=; b=lsAA4jbGhqLHI08vvaZCZogOkfmslsbIQyI9Lmx6HBLFIa07XEwQ7qCkqh4aH4jMl4hYOu o1vICAIfWjDW0QVGW12s0vnlN6S8Y7FJZmbe4Cvo6xDIIQJLuEJbVK8BE6QZ/lmfWdEhLZ 4IkVrYh33Z3Hyy8KeHIbbopkJg2f1p8= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=pass header.d=asahilina.net header.s=default header.b=Fvp6scyW; spf=pass (imf05.hostedemail.com: domain of lina@asahilina.net designates 212.63.210.85 as permitted sender) smtp.mailfrom=lina@asahilina.net; dmarc=pass (policy=quarantine) header.from=asahilina.net ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1738501604; a=rsa-sha256; cv=none; b=At4cXmno2CTZZuMqnlz2IYnc+jKHfgGvY8S0g2HOWu8C8ZNwerpZ5l0XoaTCLCmhGDe0Ph LaYsL2QB2nDxZwcjfX9BFNW0o/lUcRyzKU2hsgyh05QzSjbUw02OWSthEM8q5aPGHbSfxG qDqxXELagZPI8NGK63Y+rvCyRr4MVyw= Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: sendonly@marcansoft.com) by mail.marcansoft.com (Postfix) with ESMTPSA id 4777C426EE; Sun, 2 Feb 2025 13:06:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=asahilina.net; s=default; t=1738501603; bh=wOJkjoDFrNnJZtmpG6nyyGH0hn+2uCbf5uZhqGJfbOE=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=Fvp6scyWPHGaA2V+QtyuriDLEbcXsPS3f5VQzFRpnxbamCxSPxBedHEen0IFXWxI3 YpG4MxVaHryxse2Zqd/1ZE5kfg99dK0flO2MBOZwVwfLEIa8aIY9t/BtajndBSbJKP vXpovHQtURT/97O6uaWV91LU/u2gQkiSCOdP+mlZ16N76lYLszA9uFuuB3NSJMcoR3 eBc0Pwz76K/7PDiK61AjtwRc6LVbD6Zfxe7H2fG/uUEMNx401uBjatAwdXSc9FhxlB u35iD2Iy3pgteYWwwyJC5K0Am0M6ZTqwH9j72pgRPDMuWGuEyUswkTqgTPOnu+iml2 PmrctezEUpDEg== From: Asahi Lina Date: Sun, 02 Feb 2025 22:05:45 +0900 Subject: [PATCH 3/6] rust: page: Make with_page_mapped() and with_pointer_into_page() public MIME-Version: 1.0 Message-Id: <20250202-rust-page-v1-3-e3170d7fe55e@asahilina.net> References: <20250202-rust-page-v1-0-e3170d7fe55e@asahilina.net> In-Reply-To: <20250202-rust-page-v1-0-e3170d7fe55e@asahilina.net> To: Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross Cc: Jann Horn , Matthew Wilcox , Paolo Bonzini , Danilo Krummrich , Wedson Almeida Filho , Valentin Obst , Andrew Morton , linux-mm@kvack.org, airlied@redhat.com, Abdiel Janulgue , rust-for-linux@vger.kernel.org, linux-kernel@vger.kernel.org, asahi@lists.linux.dev, Asahi Lina X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1738501594; l=1782; i=lina@asahilina.net; s=20240902; h=from:subject:message-id; bh=wOJkjoDFrNnJZtmpG6nyyGH0hn+2uCbf5uZhqGJfbOE=; b=VjxsvTln6z9TApE7nyNtlOcBYymzTzlwnEi76qRMUo4C7bukspMosskksBKgJRb59MWQFy45P mX7u6UyqsyPA8vfivipTf0JTGImVnVxXhDriizPvUyNcNyrkbI4lmXC X-Developer-Key: i=lina@asahilina.net; a=ed25519; pk=tpv7cWfUnHNw5jwf6h4t0gGgglt3/xcwlfs0+A/uUu8= X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 93FE410000D X-Stat-Signature: ap478ce3nmb1osht6kf9josd338dokcg X-Rspam-User: X-HE-Tag: 1738501604-589699 X-HE-Meta: U2FsdGVkX1/5jeuMJSW7YNi4RmLiBIjxuHk2JTR2C8GojCz1I44ECCfuOUC1JTQFJ2NshVyxX4ToBtld7Wis37ftGDBpPAv3Agkx0GlOE+IsRmv5RIOJuQjQMUD5zrbZ+nyi7XXQpBbdZfZh85rW76AX08D1uAHoFxgrU819M9DTTj8pmittMyjQq0OkVRCEyZD3VmQ8JE+fWpOMFU7pvlOn0nZTPV6hzmoasjmafatlr++Vw5EJ/A+aBGA3ImSt1ivmusqbUomJmOXYT8ABDQB1/F/FNHR1NtwdmyHtGtA2t3+B1OJUfiKRyB1wEkV/Yd9XnKYwiNPHB4PRjEvHfCAPS/PTCFX8FOyZPdDVoSEdX+bXxaCNCuusizw+kyE/a7eWcQ2aX8fRe+I8K+HvAMhGhc+km83LhGvYAWkSkiYCWLKHSdslPehkzwCV/A9BlCfpSG3dm9vvtbYGgO7P9vhLLGhbUWOQg3yy5ol3f739UPrS9uWoxZR1AOs+4a2R33G4G8P26BnxjRpT9Z6/T5n9iexdOYGqsknp92rbIPXr1GABOD3auz8y53XMrWcLroa58kZzp8jey9wAc9Y14yNt9uacubk+N9SM9Oq7hgsXNP5GqKszR20wDRlXkDAwXUVw9DNWoz2mU9xPkukxHp4i2F3wdHy5OJXofmSgeKS1LxFp6nVJpQQnz4Dng72CCyGG3vXiaKLFv4PH/SMe3NR8ChorN3Y6rvzMwuPO8xxyQ0laitzfUWAGQTYDx7XPxH6rfeISyu50HBI5xecfql8/NXkcgObjsQG4NB/JE58gHJslpnWl8XMj1qO9mXZRuP1lffcNuUW+z31iwKbNQTFrc8lPUZrO27j82ROXI0JjtZIQ6c+DzhZF0yKboERbf2v3H0Z6mI6PwHAL70FD64l7ftgyayoqgpa3fAClnslPVZBcwmqXMVUovbEFbBq4bjC5MSoWTeWPaYIxB2S 6CFhaS5j RqI/os8i071ijEEoHBzMGKjwPkDDkZ+TS1vJL83ERApT33ZcktJ8O+219vdVI6rP64qyML4FjOqBHx/jkqbVpRHhWXJR/eoiBjTAuDEnRz6ONfQtUQHhlsCDIL7S2qM5s7VLBcy8Hnw4xycyTzGsm5LownBwWW0XpwWHFqOmI+9wRBUW/QfRGsP+xU9YGzoEZZSwOZj6Xdzx0BLv2mKptlEL77lCKbSSoMfQUtGmNhVfoy155OeeFMynMskPOa/NY7T3zlGXUrPf7Ac0L+VBkZOWcfFAR5dgcdzuLR2bqgXPmc9srjifNlPa1kywW68AGmmBVQ0sj3A4vdU/x/NahK8OdaFvpHYDS6FQM8h/F4hZVkKGScU/5YO5DkxdIdDxv34rE+sdBqGhtvJNXeZtSF/gH7lwyBlG7s30YCY8G9uLrRReNnhUlvI50Arx5IuZkdMg86bTSa0HgBwf1aBop9S8Aqw== X-Bogosity: Unsure, tests=bogofilter, spamicity=0.500000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Lets users do (unsafe) complex page read/write operations without having to repeatedly call into read_raw()/write_raw() (which may be expensive in some cases). The functions themselves are not unsafe, but they do take a closure that receives a raw pointer, so actually making the access requires unsafe code. Signed-off-by: Asahi Lina Reviewed-by: Alice Ryhl Reviewed-by: Fiona Behrens --- rust/kernel/page.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/kernel/page.rs b/rust/kernel/page.rs index 0b6cbe02522ab6e6e1810288ad23af4e4aa587d8..fe5f879f9d1a86083fd55c682fad9d52466f79a2 100644 --- a/rust/kernel/page.rs +++ b/rust/kernel/page.rs @@ -101,7 +101,7 @@ pub fn as_ptr(&self) -> *mut bindings::page { /// different addresses. However, even if the addresses are different, the underlying memory is /// still the same for these purposes (e.g., it's still a data race if they both write to the /// same underlying byte at the same time). - fn with_page_mapped(&self, f: impl FnOnce(*mut u8) -> T) -> T { + pub fn with_page_mapped(&self, f: impl FnOnce(*mut u8) -> T) -> T { // SAFETY: `page` is valid due to the type invariants on `Page`. let mapped_addr = unsafe { bindings::kmap_local_page(self.as_ptr()) }; @@ -142,7 +142,7 @@ fn with_page_mapped(&self, f: impl FnOnce(*mut u8) -> T) -> T { /// different addresses. However, even if the addresses are different, the underlying memory is /// still the same for these purposes (e.g., it's still a data race if they both write to the /// same underlying byte at the same time). - fn with_pointer_into_page( + pub fn with_pointer_into_page( &self, off: usize, len: usize,