From mboxrd@z Thu Jan 1 00:00:00 1970 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 0368ED65559 for ; Tue, 26 Nov 2024 21:30:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 428956B0093; Tue, 26 Nov 2024 16:30:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3D8B36B0095; Tue, 26 Nov 2024 16:30:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2C7926B0099; Tue, 26 Nov 2024 16:30:08 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 092066B0093 for ; Tue, 26 Nov 2024 16:30:08 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 7475EA1279 for ; Tue, 26 Nov 2024 21:30:07 +0000 (UTC) X-FDA: 82829539002.08.B1AB79D Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) by imf20.hostedemail.com (Postfix) with ESMTP id 7B1681C001E for ; Tue, 26 Nov 2024 21:29:59 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=avOLaSlL; spf=pass (imf20.hostedemail.com: domain of jannh@google.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=jannh@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732656602; 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=kBRiUmH5cK1KW9rqacSmoJx+dyswngEhwrAEnw8m73s=; b=Cgb2FWmF3/QOSykr8w4ioT7wMyzLGr+3W2Jhda5ulOtgErf3OpEsAyHPu+m0N6Zir7Bu7E 3sPI+lBLM5kjrxtfhpXJQqvSeoflQdsuF1TLbd3m4SfXuOcSJgnCcCu6DrbpXIJKzJb7m7 +gX0zc0f078PRZ8V0/VEN+O5idOpBPg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732656602; a=rsa-sha256; cv=none; b=c1VmEUeNYzqGXzDNKqakV36icSbi376J3ZyhyBy5DeQ16Auazf+//59fUK9rlmYkJqp8+b DJA0UJUCCnb8YmDiAVnUClV7cKggXWGRW160MASUtPxQAkNoloius/0wBIS5jsBLecCCFs F/qisvWrGE7p30rIIGYOHRYFwq1jhlY= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=avOLaSlL; spf=pass (imf20.hostedemail.com: domain of jannh@google.com designates 209.85.208.48 as permitted sender) smtp.mailfrom=jannh@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-5cfc18d5259so324a12.1 for ; Tue, 26 Nov 2024 13:30:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1732656604; x=1733261404; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=kBRiUmH5cK1KW9rqacSmoJx+dyswngEhwrAEnw8m73s=; b=avOLaSlLCvSrwiHZR0JEKxmaBMD0GcG89Bd8FAAFTAqdejIRwJEC41/gQrPhGZSz8M O8WcrH/IT1Ju4qURAUqd4JlyNzb80xMxXEQtOTG6XGwn5BHl9+bXKLcj08pNKfa4IKYQ pfiinnVCcG1j/7ZxpJTy+WlPUknaw3DYqvSwgvM7E4k0li01BJSW9/fxlcKxU3hEIfgn uh8cxlmszMP6WzL+A4cO/E2oQlNDcMe3ReBDtKKZTo1Tkb+Yn1Y4oPBUPCbnL046Kcca qMiCl1a6xclaxfrnn8vTWCP+TNCArXy13RbQqZKTWfa6F1j9HZHcQudb2B6s2RIHEGv2 Wr6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732656604; x=1733261404; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kBRiUmH5cK1KW9rqacSmoJx+dyswngEhwrAEnw8m73s=; b=bBOasonbKedFofSPfJgjNe0xkMspKHv4isdjPbQGb+GpoEDy8EywHFWt63CHUOhJrH 2VfCW7OiPnq7ZCqGhrkWJdSzu2OV2Bf0NYH/asbgz+TgUqKlT3gyT0GnfnbUPkO0Zjkm hH0ImWg2+OoBfZWS5Wx6QkOeICeA/uBDzQkseiMM/zBWMO4kTQ/g+0tjpR9Xi9EbChgJ ZR9Rwqmu1sbz15fHer/gG46EjyHxUa/F890KKNhxQkEc87LD0AascIhdJEZtjmxIl2Ef YXyRY5FaesD2pC8LMb22WQqtIBpTxULkIoYEuvplh8tYeWoa+IP1fq8YE2WyGdwqYtoA bz3w== X-Forwarded-Encrypted: i=1; AJvYcCXdlUBLE5Vtyal6dv85XwR3743lpJ+rFgE+Ur6Qs48SzM5IyBB5+dFMiWZH3b9hDg0o90kALVTtCw==@kvack.org X-Gm-Message-State: AOJu0YzKC6c3m02YVYAH+summQoZaDqMWgC+j3d9a/wBGTCYhrMC9UVg Qg6hSOImnVY55GdgAL8/k80KJqPTUYKOG51Ti/Yn+fkWJvEx7q1u6FTAA8T4CuHQpXn1I/qWKjw nxwZMFJmrDO7CBVd1OhhvgAfBRHo6jl++5iqF X-Gm-Gg: ASbGncsGkMOVSgAk4u6hJFx4TACTrghmpFLejkwXcGodde4pTx9az3m64jHook3eq63 uoXwtsb4Jfh3BPXxgr04mkOKJ3mxNpGaCXQkWXN02iagswLpc3E5Ii3bxYcs= X-Google-Smtp-Source: AGHT+IGGQKkkUZxUMrUHr4jl8Bz6Q4s3UsJS3XnfpswWphcVs7mNeidA9bI4rEX/3MP/EhElClBSv9DdpnmMbSwW+Fo= X-Received: by 2002:a05:6402:394:b0:5cf:c23c:2bee with SMTP id 4fb4d7f45d1cf-5d0810ab5cemr20794a12.0.1732656603448; Tue, 26 Nov 2024 13:30:03 -0800 (PST) MIME-Version: 1.0 References: <20241122-vma-v9-0-7127bfcdd54e@google.com> <20241122-vma-v9-6-7127bfcdd54e@google.com> In-Reply-To: <20241122-vma-v9-6-7127bfcdd54e@google.com> From: Jann Horn Date: Tue, 26 Nov 2024 22:29:27 +0100 Message-ID: Subject: Re: [PATCH v9 6/8] mm: rust: add VmAreaNew for f_ops->mmap() To: Alice Ryhl Cc: Miguel Ojeda , Matthew Wilcox , Lorenzo Stoakes , Vlastimil Babka , John Hubbard , "Liam R. Howlett" , Andrew Morton , Greg Kroah-Hartman , Arnd Bergmann , Christian Brauner , Suren Baghdasaryan , Alex Gaynor , Boqun Feng , Gary Guo , =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , linux-kernel@vger.kernel.org, linux-mm@kvack.org, rust-for-linux@vger.kernel.org, Andreas Hindborg Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 7B1681C001E X-Stat-Signature: 4nrf81ao9ekp1rs3km33o5ns49rtqdcf X-Rspam-User: X-HE-Tag: 1732656599-646909 X-HE-Meta: U2FsdGVkX18b0Wxx0JdMwwBV50++pewvoLv0CL2zaQMGhmQTmqEIXQ7aXdA23s9bJ6QwjZI9ZQ+n3yKnQduvWrfu/yQ+AnSnE6flVuHu3eOOPXUEqXRkA1HgtFmYBjZiZ8oKCGfI1irSFFwCsq9oxBT3otYaPf+xk+fucOWGlvSgwsMWabhrEWENLDmOFj0mV8/Hegf8TKuKfh2TREgFccVPkEcczpBZqJeu+7ZfSj3UxivgBVem4OjtMi5Us9zAE6gRXN35zqjKLKuXp8YEPaykSEuDq6IJrQGAiLej8fBXrbToIa8aJKAAzDjbu5aYQX9CAJyh5ApbH5u25FPo2haPZq2XANr5XmE141B1NbDZVsTYdUC3oWDSZBWbJMc/9PSf84Perehqss4H7y9QXIBLT/xBx5MVXFL6CDKj1EjS+bgUNhneID9I8hf9AXldbQZh6pl6qR8hYFq7rOISF6JgDUjzzUze19jgB2QnpU5iWBj0DhX2K2/ID/Lku3sp/Sa49pbYGUs/vccaxTKNt41nIhiu8hPGxgWkflKL9JVGmuvjO3JINs/9JQRy35N0+R9Ftq+7OKIbCNw5caM50l9SwLTyT9FovHKpxijjORxVbjGtQF0oFscavwTVorqbeGBNDkCdU9W/QjKZPUtKlsNMmJC+W3w5lyOJ3Uni0vDppUQa5DJQJ13tChy2viVBF9FeJGi1O7KMxr8CfX9iF+o2Q/96JTHqbssQLHI03mBhxLRK1d6a3v9phx5426dwBt/QqddoKzG+fxWMmHkBcVqIaBqO+jAdGweB+a8W9w9RseehdvnArrMzFE90eKv3tbhnAo40iMHEUOk3BLHegsl3ZvSuAIkOwVIbeOovWGoP7PlGXnVRV9MOvqjcP/KHv5PxVopp2+Pmgyj4ki/K8erb4yzGW0K3WXZD70UWCFaKwZMxU6zqlWUngEQmuOd7jMt6pRdZYov2++Nn0/r /p7/7eJE o6Z2LW8u6fm0yu8q82xefbsLg1gIIe89WONobq4A8UZUzT6ikwg00alVQp6ONCGodOP1jxHLKrTWWO43JNaJJqnxMHHA4tjGQ5QnpG0q4ugKqtNwGbFEBWZozzHYPUlZY5ctSTb4JxjbGXHMbeIkwit7cTK9I1uvhxzcwwGCfAqBHODQFy+LVUS17HhXVqmVmE1yoX4EMsOnoIDhlr7G7VvoyEifPLVEv48NZ8tGynGfbj8vl03yK0B7463O1cmgvpqgW+9LdjCU4KI0WXubJn43uLmriNWTvuV6MLa8f24q/rVyKN2g8jcWd0jHDWyhtwgymSU2//fsk8gsYSFfxy8yvUA== 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: On Fri, Nov 22, 2024 at 4:41=E2=80=AFPM Alice Ryhl w= rote: > This type will be used when setting up a new vma in an f_ops->mmap() > hook. Using a separate type from VmAreaRef allows us to have a separate > set of operations that you are only able to use during the mmap() hook. > For example, the VM_MIXEDMAP flag must not be changed after the initial > setup that happens during the f_ops->mmap() hook. > > To avoid setting invalid flag values, the methods for clearing > VM_MAYWRITE and similar involve a check of VM_WRITE, and return an error > if VM_WRITE is set. Trying to use `try_clear_maywrite` without checking > the return value results in a compilation error because the `Result` > type is marked #[must_use]. > > For now, there's only a method for VM_MIXEDMAP and not VM_PFNMAP. When > we add a VM_PFNMAP method, we will need some way to prevent you from > setting both VM_MIXEDMAP and VM_PFNMAP on the same vma. > > Signed-off-by: Alice Ryhl Thanks, this looks really neat! Reviewed-by: Jann Horn > + /// Set the `VM_IO` flag on this vma. > + /// > + /// This marks the vma as being a memory-mapped I/O region. nit: VM_IO isn't really exclusively used for MMIO; the header comment says "Memory mapped I/O or similar", while the comment in remap_pfn_range_internal() says "VM_IO tells people not to look at these pages (accesses can have side effects)". But I don't really have a good definition of what VM_IO actually means; so I don't really have a concrete suggestion for what do do here. So my comment isn't very actionable, I guess it's fine to leave this as-is unless someone actually has a good definition... > + #[inline] > + pub fn set_io(&self) { > + // SAFETY: Setting the VM_IO flag is always okay. > + unsafe { self.update_flags(flags::IO, 0) }; > + }