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 50180E77188 for ; Fri, 10 Jan 2025 13:35:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C21B56B00B4; Fri, 10 Jan 2025 08:35:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BD1246B00C3; Fri, 10 Jan 2025 08:35:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A2FA36B00C4; Fri, 10 Jan 2025 08:35:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 466F06B00B4 for ; Fri, 10 Jan 2025 08:35:10 -0500 (EST) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 21B87160A9E for ; Fri, 10 Jan 2025 13:35:04 +0000 (UTC) X-FDA: 82991638128.29.615B287 Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by imf21.hostedemail.com (Postfix) with ESMTP id 20D491C000A for ; Fri, 10 Jan 2025 13:35:01 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=X2EOHXyQ; spf=pass (imf21.hostedemail.com: domain of aliceryhl@google.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=aliceryhl@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=1736516102; 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=groF09OQmy2qoF9yby9+EWDsjHj5SaTCekdQxNqyZiA=; b=0VGWR7mBkF/pAoJKajpXMUmzenuSyk2ZKPTkXZKrV7GhA0qwSP2GRU2bslT+obgvwnOqiJ /G5BCsCVVebqtQ45H39xhnfMPLkLYF2+r5/BnlcJC2cNSeP4Ew30Qg53XAWjQfL31V35eM b5E/Gx8Vq2Uerrb912LenZ/Qv77LFMI= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736516102; a=rsa-sha256; cv=none; b=yLtf3oQgVwdnuRfvaDpOAdlFbW6jYO1v0ChDqJDMJLwIVxRUUh5vchZKFrR8yKMnTdDEKr EdUsmYPzChnRPZA5WKce7ANw2ECuwlFHPErxUqJGJ23qTagWeOoM/DZ5yfnLciWtajoGWk 8iuwiTzD6yf2A2YlU4dWZycep0mj4F0= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=X2EOHXyQ; spf=pass (imf21.hostedemail.com: domain of aliceryhl@google.com designates 209.85.128.49 as permitted sender) smtp.mailfrom=aliceryhl@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-4361f664af5so24103045e9.1 for ; Fri, 10 Jan 2025 05:35:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736516101; x=1737120901; 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=groF09OQmy2qoF9yby9+EWDsjHj5SaTCekdQxNqyZiA=; b=X2EOHXyQSVAGAdsTzqE9VXZXkaTNvGaZIWoJR2JYLOuUF/xCMnM3tqI4pNhFxvb5/c W+S1Rb9pCZuKxY/XU3N1WscdYxoog8UgGgbwN7UHsrMd1WRETxf2pYFVK3T/RiVy8jJ7 dMUkOQ0jBqRK42CspWT+LUi8I9k/i0g3oUCUxOCM2gPg16hUegeAXTWTsa5P00cgFGPJ 4mVhJsZ6CqjhLE1S6/lrxox/WmL9zd8hbN/tvaPC5p3f66tZgIy1pNoA1mt/C6nchGWV 4Qi4AzJIzvGXAxJA5IpX78HyMw3fXpan5o9pa3hGe9sxZKpWQ4Eo4ILqYsowVrBwA0o8 DuFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736516101; x=1737120901; 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=groF09OQmy2qoF9yby9+EWDsjHj5SaTCekdQxNqyZiA=; b=vl3KXPIkw50HuWYzZQacZvVUTQ7Vyzas9+dUDEPawnt675uRmpxyLMsDpHdkXEzaJH UIe2R6WAJ/sdYj+EnmUQAzV/F4jlc6cY/iW/xZWqEf6bmcdrOEHiLnVi2+U8PwBIKsHJ Zc5BJB4j+yxI4IZxBKZW/uQLeY3bzL07uXxKLi53LCmC8qvtRoa6tfuP35/27mIH3g1j 7QhelVYtDSlJpqGrSvr76jP8qZvGbXOcleSLaHc0HWhYXQmlf9SktuG0hV2SmyO38Gt3 LyH3LMW+lz2WIekJbqQzRxx/bonuCW4N+j4rm0vvnRFjgrLn3aSu0Cz+Kl0zNxpGtyPe vPgw== X-Forwarded-Encrypted: i=1; AJvYcCXZesAg1h0NFAPLs1im8HvVHC0zwUXhvNOIHAKnXjSTlGh51RmWtF4GShAYdW4IqwO1Gq7Uz804mw==@kvack.org X-Gm-Message-State: AOJu0YzpL6bDMaJZ1S5wmIpcAvm+wGmHKqE38GFAAkY9YJyYbAMRqY57 2LYW6SwBq6bxKlg7xP1sN2oTqqYs6KEK5jaZCTcQnK9YUQPufs7xUAV7gtPOoiw5RV49b//Z07t Oq9ai3VgWLA2qvIa7g0Lb46QLNkvmglUQLw2E X-Gm-Gg: ASbGncumkMwH38utdkHdsI1vl904KeNvoEN3ZPDd5aFE3+TpwjCnCOmhcga6J0RdkbV qfCjzOJ5U9I1+OjRU0c4OGWFHx9e99lRUBVUMqW1u5wmU495u6Ez0OIsbE9Z1lgvP X-Google-Smtp-Source: AGHT+IFB52D/ZL+wt7G2Cs59yUudbla2PXy69byShnaypRyRMEHd9Q1CwiZLkUWwL1fDM2YzhaSOMDplgsVQDqTJ+Zg= X-Received: by 2002:a05:600c:4446:b0:434:f335:849 with SMTP id 5b1f17b1804b1-436e271cce0mr99607745e9.29.1736516100577; Fri, 10 Jan 2025 05:35:00 -0800 (PST) MIME-Version: 1.0 References: <20241211-vma-v11-0-466640428fc3@google.com> <20241211-vma-v11-6-466640428fc3@google.com> In-Reply-To: <20241211-vma-v11-6-466640428fc3@google.com> From: Alice Ryhl Date: Fri, 10 Jan 2025 14:34:48 +0100 X-Gm-Features: AbW1kvaSiSAuotZrGPmJJS0_zS2yev1GBb2ZPCFYhZexLVD7AONRUOsarSEJWmw Message-ID: Subject: Re: [PATCH v11 6/8] mm: rust: add VmAreaNew for f_ops->mmap() To: Lorenzo Stoakes , Frederick Mayle Cc: Alex Gaynor , Boqun Feng , Gary Guo , =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Trevor Gross , linux-kernel@vger.kernel.org, linux-mm@kvack.org, rust-for-linux@vger.kernel.org, Miguel Ojeda , Matthew Wilcox , Vlastimil Babka , John Hubbard , "Liam R. Howlett" , Andrew Morton , Greg Kroah-Hartman , Arnd Bergmann , Christian Brauner , Jann Horn , Suren Baghdasaryan Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Queue-Id: 20D491C000A X-Rspam-User: X-Rspamd-Server: rspam07 X-Stat-Signature: yxq1ens3w33icfpoe9539aw7hdo3e9ub X-HE-Tag: 1736516101-567692 X-HE-Meta: U2FsdGVkX1+rDrgS+aywV/vuHCWsOxjpfzuCqQfdzoiJq2WMYU0yDdkKCoiGOorEVsMLR6KhDTnOPOTTapxEFzxYzwiV+j2ay7ms52DrUWK7e6gokTUWYfzs5tHSutp2UWARrDFEiQgeL9+OgRLeEEWUIY6cehA2b1q74H4V93yKagJ5JtXahwplNLdT0SIdDg5pN+8JdFBkilzHNB6C0wjFX1fXgg/MnhHuv9l6Vxb0jqh5Em3vs7aV5cxBNwpvwBeR6OcNjOY2KUzWhfvrU0D/pZ03JT7/ON1hP39ky2Br4ZTRlwC8EAhRyHhJgm6A7fkF1L2sXNIzfnWTiu6r1C0LamDdbN8v8gIU0rv/R7/yiWrkAjlQ6tbM45RUjpxMZ/cxcshxTJyrrgR5oyOwKfYzZwTuxkuzhzaGl10Rnhrs/eF+XYOY3VTQ+xuKSgy2e9XovKcZvmz3F0tvZZao3DgGIyPVfpjRf7Vv0msDoYDyyffSz4raRJSG2Vp/6X6e1DXfJRUDg/nCrvz+CQjc+h73qIs27dc95kFHrgaqbTZABVN1qMWE2CYF+dJyiOezL6mWLSuU7Xgb4x08dVzpIQoO4uB2uU/9GmkAh+87/J+B17GM/sSjpnguO3iGJHoO/Me6FQSUlwEqa+Ws/qa0LU3rWR1Up0QnmnOp3/nLI7DXnLJASQ0SKsKpdnRciBauW5+yGJ41E3EcQcCojAJF8hxcmJfLIeVcIpsM+N+5Di8C6dqdGq2p5uQnfxRa42BH3hpHHxgzOwBcm0Psd3tNCh8VU1gmH2GIsklzoNrBqqgWgyvWZSkOivacxRsQQNAPSVhRqgBkhI1GvZmFs/TPdrhYJzLrYYQn013LCZa/Y8rSOH/6qn54WlTqOCy5NaKVIy0lQUMSl9ec/tZUeR+0g0mbpUkDXYVDOq6KIKYTHlUbuOV5NlM0r6xk8wKTaio/Iw6dIeSMKrC+XLPahdZ XpwM6wFk vgiQiBSMwxd9x8yN/zgDxM/KfX/MrE6cnkQ+X5Zllxmx4BY8L5Naj3ck+UU9Y7EECC/jK+Pb2UZG+dqQUCmvzWn2BDQbK+AHC5t8blwd5DaPSpyP9h24P1WvfRAy9svYaf8W6MfnDvDPwdLCUp2OztcX2o8hQN6gE2mcrIWVtQ9l8cKEbN8MzHqUCbV5gu2igmM8oKXZmky4B7j0a+nFpm75D+F4jrjXCIQfw8zouTcnhNKV9vTzEVfzR7C/xuBThnGH6eFx9D1kivMWZ+rlr/M6ub/f040eSBnjmzRToTKoujQfvEL4K6Qno2Da0aC8FTacR5ao2Lr5528UF3aw6SG8UYx/s/i09/iu31xySh3clrhBHdb2c45kBLx5v9KXgeIcC X-Bogosity: Unsure, tests=bogofilter, spamicity=0.499454, 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 Wed, Dec 11, 2024 at 11:37=E2=80=AFAM Alice Ryhl = wrote: > > 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. > > Acked-by: Lorenzo Stoakes (for mm bits) > Reviewed-by: Jann Horn > Signed-off-by: Alice Ryhl [...] > +impl VmAreaNew { > + /// Access a virtual memory area given a raw pointer. > + /// > + /// # Safety > + /// > + /// Callers must ensure that `vma` is undergoing initial vma setup f= or the duration of 'a. > + #[inline] > + pub unsafe fn from_raw<'a>(vma: *const bindings::vm_area_struct) -> = &'a Self { > + // SAFETY: The caller ensures that the invariants are satisfied = for the duration of 'a. > + unsafe { &*vma.cast() } > + } It was suggested at https://r.android.com/3389887 that this should take a mutable raw pointer for better intent. That's fine with me (Rust doesn't care). Lorenzo, what do you think? Alice