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 C4960D6ED0E for ; Thu, 21 Nov 2024 11:39:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 656F46B007B; Thu, 21 Nov 2024 06:39:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 5E2E66B0093; Thu, 21 Nov 2024 06:39:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 480EC6B0098; Thu, 21 Nov 2024 06:39:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 269326B007B for ; Thu, 21 Nov 2024 06:39:53 -0500 (EST) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id CB0121A12D8 for ; Thu, 21 Nov 2024 11:39:52 +0000 (UTC) X-FDA: 82809906564.15.E5038DE Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) by imf17.hostedemail.com (Postfix) with ESMTP id 7DCA740008 for ; Thu, 21 Nov 2024 11:39:10 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=smsd3z1i; spf=pass (imf17.hostedemail.com: domain of aliceryhl@google.com designates 209.85.221.54 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=1732189007; 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=2IZyw4FOcZ6R/V4mnMHgpIhe+XP7mjUrhnLeyIz/iRg=; b=BJaRe5+01Hc1xPFcOpVhuoELJJOsha7hZSvknpx6E8ye9jhFuVxKqBtGleTyhh98fYZvM8 ys3qj4yFKSX5ZA1aroJT4mKUWGjwI4quoNFtGAikzhWX1TGMHKLhk3EbGhmkTdBzzXG1+2 r1yM1EHR9WZ/qwfyW1Za1TMK9XHrZas= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=smsd3z1i; spf=pass (imf17.hostedemail.com: domain of aliceryhl@google.com designates 209.85.221.54 as permitted sender) smtp.mailfrom=aliceryhl@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732189007; a=rsa-sha256; cv=none; b=7cm18nk42nradMzfz2ptX2d61Wph6IMxwdhJSGQuYLzzy7xTcjLnY3yL4Xnqcxbv9P8E2S X9T3BoRn9/OESLPnLw86W/brUIyesNHDD6DWQKxSmrF3hRClEhXzAWXMAGSpcsiXbRE5SR ue8Mkl+9pdBf9b8bydNk7hOBKvJ9ykk= Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-382376fcc4fso448973f8f.2 for ; Thu, 21 Nov 2024 03:39:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1732189189; x=1732793989; 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=2IZyw4FOcZ6R/V4mnMHgpIhe+XP7mjUrhnLeyIz/iRg=; b=smsd3z1ic0i7kvrDzO7zhswGbk5aV923jcZ5tL6gEV6w9WflpE68Lhc2RbW91EoqQD WpB5cjsxIb+yYj069zCQGw6TWRxkZ5lU8V/feA16j2LaAFQNc5cGQTgE5wf2aLzBNl6W Oij/Ar2FUgejZlq43dXNr5S7EpVtjzIYNvNw/ckWTUA5TfjkHRdZvk984VCkQnUHzf1r kmG4AiwkKRM8tApLttwyY1CJ7tuWm5cDQCVuLyTCk+vWQRYl0bWcBdKe2jxvfDkmfDCr EKA6+yR6wBjuJVXUPB6wqZyL9Qx4bcX1/JICVzit5k4XxLM57yAQGEblncqesLNpYIMX cUlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732189189; x=1732793989; 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=2IZyw4FOcZ6R/V4mnMHgpIhe+XP7mjUrhnLeyIz/iRg=; b=sQsmyofIdtFdDV5gtUfCvdCC2v0qQK/UhjNORZ8wfFDx1Cw7D4b8eHxewA4za4iEjK Nvb5+sHSRcjbX6tCln1rEopoWlohk8IHRgExIRdDgitwZHyYIgjqXo4JMCQ9gJ1Oh4w5 /Ozzxz7VIE4clWTtdFbAzttFW8oF6urwVTySG/l+5aFowHoaYC0/k9NvjoKw3+ccMFx0 Jr0p8Hh2/lhGm46OAilzT2wvkdPVrGOCnQEDBdFJXogZqbV/kQ1xZpWA5KdgB29r9biN m33O7mjzHYQK1Yvt85kn78J3U+feqKGjzS2wnzcJ2K5tlRnycWmq3yvIMrqjYnL0fdLe wENQ== X-Forwarded-Encrypted: i=1; AJvYcCVs6MEMhsAHKwTrtlhh/tcCfsOxH18M9tiQLanoVf7TjyFOjC73ysjORDsBU96nLNw/riQ3Z9doSg==@kvack.org X-Gm-Message-State: AOJu0YzxggCZHUzs8CmD1oWIB+xmksmSxXYtHmt1HEpkAGv/lDvzSuqN uWDa4BG83M88Y6pz80L2rtnvwiUn+uOC+oP7Qektus0IY85RQAwiWdf5YWlq1smio0vVzpdhzRC gwZ9uKvEUfW0zRwqxpnbAFO4GTb8EFKJrEiVN X-Gm-Gg: ASbGncvtQ0BKmzU26TykLFegeVEdX9u+xFDaY00njoEoK8ocSWHxVrK4lvrJbVy3T4u acG/xJOV5dvZlcS7KYL4bx5zyJ7Go4fT87bFkjzOH/6vQk0PrszIuvx/oA0VFgg== X-Google-Smtp-Source: AGHT+IHOUT5TK9qW8nVjhNy0VpEtuheP882P7CKZcuAtr3r08tu4OVDN35SCuTs2d/vi/YNbZK0QGKu6hwSa17GxWlo= X-Received: by 2002:a5d:47af:0:b0:382:44e0:c5e9 with SMTP id ffacd0b85a97d-38254af9c4fmr4724755f8f.25.1732189189300; Thu, 21 Nov 2024 03:39:49 -0800 (PST) MIME-Version: 1.0 References: <20241120-vma-v8-0-eb31425da66b@google.com> <20241120-vma-v8-5-eb31425da66b@google.com> <5762ab92-3091-46cf-9565-f59cf917b470@lucifer.local> In-Reply-To: <5762ab92-3091-46cf-9565-f59cf917b470@lucifer.local> From: Alice Ryhl Date: Thu, 21 Nov 2024 12:39:37 +0100 Message-ID: Subject: Re: [PATCH v8 5/7] mm: rust: add mmput_async support To: Lorenzo Stoakes Cc: Miguel Ojeda , Matthew Wilcox , Vlastimil Babka , John Hubbard , "Liam R. Howlett" , Andrew Morton , Greg Kroah-Hartman , Arnd Bergmann , Christian Brauner , 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: rspam09 X-Rspamd-Queue-Id: 7DCA740008 X-Stat-Signature: m9nyqmbxogjb37mjhqgkpz7txf36z6ou X-Rspam-User: X-HE-Tag: 1732189150-365317 X-HE-Meta: U2FsdGVkX19ehjjaMicd5A7HUNBbyQOVoBNhmlpjEAYzAOUSMPQy7g5wVYnkxv5aaPVdpqAZFi2RUtPXmOGA7je2DNc/oO9jRm9pjiDr1EIXKio2e0pvyO0/fawklk/S1FwQFeqxVjNBDjTWTHyS//JjKTehUpAw/WqcJ/rp6c+jfItfjc6zoIFmdHIWez3Z1T504pwIX7+YV26sPwDsWyG40muNafkRqNoq4nQW9ETCM9CLwDTikMP1ZN8ZhI594X71p43csVu38IhcMPLMVfFiqW93KCFZ7t22xB7VDfL62m4Tlu7dPOBbtcGr7s3LvwDD6C2WNqifRnSq0hvgS0tKRpi1McPTWp/Mui9SumxbB9Cy9l44o5ApcUP9TF1EycphqdezZnbeG+pHzzI7XVT41wuxGAfpxbHBhm9osumoc4tj/TVmOPx4vxtXIiG/nuMHI3Un77Cay4haDPSenS3/pN8/cSuegTJTAFQg8LvnwPf9t4Ggg7C0Xc6a5koMe4dy/33Hx3Ha6eA+x3l/aPkSBrU3QwmweFMy9a/GDZqgvOId9fDSDto5mjPxstA3IKyiIWgiB4O/+bxapYElHA34UThu7tmcdrp+HA3KvK9Sx6pZlVLCYrvje3I6p9zEYtbxmM2ddKbw+7HMZXjEbgu/ddxleI9Uf1/S4WnK1Go6ZCnNgntf3G8LsSkFasjmF/HmJAb/Ib63HfFQNDAEdKITqN+QSKjKibJ0nGw+QKXLT/lWPKpwG/UF8xKSP5Cv5DIgSyALdAam1+qM9x1gGnYDJ5JPRiwORqLwktXvlukl//cnBc0ET8Nx9ucbqc/qaztquzR95ZTrhyJpYYwxFwrDHSDU41spNSuECqjy+EPemJaEg2PKgfUURCLYmw3iJRE8zSpFbnbm6iSp7NbTYgaofeIHPn2qY44cMoweOVLWsapr7a49+XpfT+sngK2uYq0SuhlvY+T5Q7upn96 k4d9NS/I dy0AZ+RmmsXjpvo8OyHWq58xSAPRIlXmsEOmkjToZygq0gwCysBDAryehSvrabILNXPS4BDWilWNtAWBqal9/OWqgDgI9mGNLR0Sj5NqnS5ddFT8y2f7fBrGlnmdu59m9zl7I3U/b6WmnyC8HJ7ZmECzJNQo8ppyzazD7Hc8Pzr8LJ+9k4+bcMB04UZQaqcWewVa1I1beYWnf2sgIF+GCS/+h67EKWD6AzCEcwBVimeh2uVdguZBMqAUbg3O1RQmv3uwQe7UO7NwMUv7NLIggvDSISQ== 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 Wed, Nov 20, 2024 at 8:47=E2=80=AFPM Lorenzo Stoakes wrote: > > On Wed, Nov 20, 2024 at 02:49:59PM +0000, Alice Ryhl wrote: > > Adds an MmWithUserAsync type that uses mmput_async when dropped but is > > otherwise identical to MmWithUser. This has to be done using a separate > > type because the thing we are changing is the destructor. > > > > Rust Binder needs this to avoid a certain deadlock. See commit > > 9a9ab0d96362 ("binder: fix race between mmput() and do_exit()") for > > details. It's also needed in the shrinker to avoid cleaning up the mm i= n > > the shrinker's context. > > Oh Lord, I didn't even know this existed... I see it was (re-)added in co= mmit > a1b2289cef92 ("android: binder: drop lru lock in isolate callback") back = in 2017 > so quite a history of being necessary for binder. > > I see mmdrop_async(), I guess that's not needed for anything binder-ish? = A quick > look in the code suggests this is invoked in free_signal_struct() and is = there > due to some softirq stuff on x86... so yeah I guess not :) I didn't know it was so binder-specific. I assumed it would be a relatively common use-case. > > // These methods are safe to call even if `mm_users` is zero. > > impl Mm { > > /// Call `mmgrab` on `current.mm`. > > @@ -171,6 +213,13 @@ pub unsafe fn from_raw<'a>(ptr: *const bindings::m= m_struct) -> &'a MmWithUser { > > unsafe { &*ptr.cast() } > > } > > > > + /// Use `mmput_async` when dropping this refcount. > > + #[inline] > > + pub fn use_mmput_async(me: ARef) -> ARef { > > Again, nitty, but I wonder if this should be as_xxx()? > > But I guess this makes sense too. In this case, the as_ prefix is incorrect because this is an owned -> owned conversion. See the API guidelines: https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-f= ollow-as_-to_-into_-conventions-c-conv If we wish to use a prefix, the correct prefix is into_. Alice