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 A4B21E69189 for ; Fri, 22 Nov 2024 18:51:26 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 352936B0088; Fri, 22 Nov 2024 13:51:26 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 303396B0089; Fri, 22 Nov 2024 13:51:26 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1F0E66B008A; Fri, 22 Nov 2024 13:51:26 -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 0474B6B0088 for ; Fri, 22 Nov 2024 13:51:25 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 63C8780D75 for ; Fri, 22 Nov 2024 18:51:25 +0000 (UTC) X-FDA: 82814622996.18.31FCD54 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by imf29.hostedemail.com (Postfix) with ESMTP id DE999120004 for ; Fri, 22 Nov 2024 18:50:09 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=2JjVBSNj; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf29.hostedemail.com: domain of aliceryhl@google.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=aliceryhl@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732301390; 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=gpPPN3R1McXWozDvHX/daHUfjmdWOz+ThDGU7hiahks=; b=4Z74FOz81TSTFg+ADJ7wqkCXlHGwTe70MIpagy45sHjsIlrWyIVaeafXprGeQTUf6sbJ2V OI7xe18oPbTVesY3JzcSFIbK1F8eWwBiH657n0IIEE3zQa2G735npmKm7AmtDurXPOg2rr bD91eL8S8AEsyr+03SdzrE37C/qZ5Lw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=2JjVBSNj; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf29.hostedemail.com: domain of aliceryhl@google.com designates 209.85.128.53 as permitted sender) smtp.mailfrom=aliceryhl@google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732301390; a=rsa-sha256; cv=none; b=eELpzacn1FxuS39wmp8X7r4WDHqQ+gPu3QTHe7lEbg9kRKAOICuB6HkrE1h2ZLeXlh7N2v 5iApKD6j9ib7pxOXVrEMmS/xewkQb79iZXcJAQG+gOaskdN+7ZJCcoXg37ZiwM4el4xp9c JihMp2tFm0gqOsN8v37u0MuZWiGl+00= Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-4315f24a6bbso20048035e9.1 for ; Fri, 22 Nov 2024 10:51:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1732301482; x=1732906282; 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=gpPPN3R1McXWozDvHX/daHUfjmdWOz+ThDGU7hiahks=; b=2JjVBSNjK8OTordnKKFbC0l/ypOY0tLGP00oqDYuS58PGolOCQ/a6plGAnEPVRmpRo 2DZCcFdfa8PbZkPC82Vv1z9kV5+bOyK4QpUU2+p9cp2s9YFF28JxgP36Lw2oo9wm21/3 xLmeGo1WA77DDxV68nbqZu8CbVlXhrnmEzHjHTP0bLIxgjPeqiTLN+JarVx428cjenjG TjUgmSjlRRDCMubIF7VSH1ZPz6zKt0vNtQOjk6TbamMPnVb1cOkUj7adu4Hw9FVhjVGg XKSFqXtSqZbWKMghN+vqyrmjOQSOeAqMcGoV6lYcThcbRUZ8Ew9YExeZH+jdc24pxvvx 7sTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732301482; x=1732906282; 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=gpPPN3R1McXWozDvHX/daHUfjmdWOz+ThDGU7hiahks=; b=U0lmylntZckArXflxtqqPR79Ix5/rW3SjBKkrQixI5TsYuQEtuH8pnuBr3FV30dTeo jm7nRIxQN7SZWd3bnEmJGYqmLjh/W3bjY8Wi32qKFFsoCEZDgAvdik4oziQFqZ8lDmrk f3wNWlgOZJ1tSu25X8bDj8Xi5a5HCP5+fMjZfNh7Gbxaw3IUgqgqOoFLXFoSlcHjxGiN htHFHA8Bi3jUol7srR6eH5v4VziCCkpl9Ldi5TJKaPX0wgy5egWsfUdKOON9tuJj8MWN CTAIC3pwX6sUMXp/fIUE6Opsrt/wCobs5OLnAbViEdbRbAVUWHWyviIySQPo7F0w6N3Q K/Lg== X-Forwarded-Encrypted: i=1; AJvYcCU3A3hSDt2Spf6Rld/TbVmbArwsaSPUBAZ+5idd6SQvEocw0bW2JEr1kS2pl6bWxCbBLklvfZh4uw==@kvack.org X-Gm-Message-State: AOJu0YzzkN2ChmJY7NMwaFvMrJsgZXVrifCY4mh8qAlz9WZYlecP8wTV /5tkGx4M4GpNfsYN0XSbi73gyHwOAh66JDBUbgrJWGnm+sEvaM7BDO8vbcpLZFEZPQRMEPQ679e JeBvj0VxWDpmmcEbUI19M1enl6/V3kf6xikxz X-Gm-Gg: ASbGncuzWZ4QQ3tx1u+mxsDevHPr8zQOIWJhAzUSAmyDi2ITImXrB2XdO5bg8TBdLuT JgMcaLMg2IDTEuHQuWiBjKao/IJoojUmS X-Google-Smtp-Source: AGHT+IG60MHKWjpS7HL7BdSocFUswkPE6VjI5QZYufrqTtnaXwwR0eY35AZS63m+jOBxtRcZRh13iR5ORrpJEqRMoRU= X-Received: by 2002:a05:600c:1f88:b0:431:60d0:9088 with SMTP id 5b1f17b1804b1-433ce426feamr37670195e9.13.1732301482043; Fri, 22 Nov 2024 10:51:22 -0800 (PST) MIME-Version: 1.0 References: <20241122-vma-v9-0-7127bfcdd54e@google.com> <20241122-vma-v9-8-7127bfcdd54e@google.com> <44ef7154-0f38-46c0-b87d-e598b146f4a4@lucifer.local> In-Reply-To: <44ef7154-0f38-46c0-b87d-e598b146f4a4@lucifer.local> From: Alice Ryhl Date: Fri, 22 Nov 2024 19:51:10 +0100 Message-ID: Subject: Re: [PATCH v9 8/8] task: rust: rework how current is accessed To: Lorenzo Stoakes Cc: Miguel Ojeda , Matthew Wilcox , Vlastimil Babka , John Hubbard , "Liam R. Howlett" , Andrew Morton , Greg Kroah-Hartman , Arnd Bergmann , Christian Brauner , Jann Horn , 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-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: DE999120004 X-Stat-Signature: t8t9sif1ufdjbz7fsbpdjw6cgqxcz7eo X-HE-Tag: 1732301409-653090 X-HE-Meta: U2FsdGVkX18fpSQmWxMYHqk3mc7eQBvlrPDUuA/iU6ldNT0DTdUeI3SB3sDe6f5Iaz/20pqHo2gDIosk9xl5iESWkxna8wvWDNZes+GjW5gxQGRSjelR2FZmziOjwjCz/1xsXGoRyd1cPZVTdBXSVIidHq3AzjSOwBTKsx9rqVJzExqa9Wl/eGX2Hkoe47FnEE3IIoZzWw3Gqcy1tw11V2coPIOGw66WTJx7ZVpx4evHg/Hma1p3R6XtfTWv2zqLaz9FrXG/+FVoHOBTG7FIWK3aDUqWArD2nSeHFwF1352Eqc6ZVqAbkzDXhsZ4PhEsc4s/nnY5XM3Jpf6CiiMDhpIINVIQdml6hjZV7aLaDb2Oda1StBBCuvztJktc5z2ER/3RbxkvLENyqDWGSF2ZwK/6qGtyWHII4dfKuyssG3zOJH73791WlWK4fDbuXK7lwSJcgrbDtYLU5uwIQbKAkQEsa78Ofl0VzHNt5vy70dTEdoMcT+f5u87wN7+5dNqIYEto15nd4TdvxqWzM7z0VgArPcHBdUG64/mCDCoIkEZOTSbXycs+fP7Ic5rl+nYdJ9l3kmmTj/3dYUrDpKr+iFmNtvojDYMaFBhPWBj8zw/TlSbBYt7CqH6Aokao9X/YMs+hNR8HXulwLivj0l+Rfd2tCZU3b/ThL+s3sM3LAnYW1R3IKexIm4h90aq2oK7I+ELN7K2vKI775ua3F0+H6HceU+RL7xOvTIxfn4rZVnwAP5nq8y9zFvtjAGyRNt3e2IcPf0SA33iv9VkXNQI7rTkLYIAy53hdXoF53LDrlkU0HBy9etu+6+UHSk04KwpGt7TRtpnSUYKK9/HF96ulkNAXikRKCN83OkhXonZpx3BnRjxPenYFMWsk6aGD5MOK0Bv+zpQ6jh9EUfCb+v8Gb3Xc7TmfByucjHVcvSDNpsx4lmb1MovbXLxtwq74JsjoNpsavVL1xAyWNWMWjcr v0oOtONr jOgM/Fg7AbsZaFE3rxoF2vJUiQ9528p32Jn2+Yo/bxNKbdA7TcMAqVIojOeU3U6o8hq0ExlMQkFpsHVkVKLDdd5kqVk51DC+DGo3jETqEFkbdnpaM6OJKV3Fl2l+7WdvYuNg6jPwBv6YSOgZlSNkbChsoRaxkZsfXCXpn4GCYgs7xUN74NDZ8lVUb9KizxlEATGIsUAdmZNDF/WbDgA675Ml8iDn2URF8tvsXmlD5HNQtrNQ4t+slBit/PqE4Y1jHN4dKfcBrOk0MNTqOPz8A3pTCray8zsad+6bi1VESGFJZzLvXHGjOYF3Ibw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.001201, 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 6:55=E2=80=AFPM Lorenzo Stoakes wrote: > > On Fri, Nov 22, 2024 at 03:40:33PM +0000, Alice Ryhl wrote: > > Introduce a new type called `CurrentTask` that lets you perform various > > operations that are only safe on the `current` task. Use the new type t= o > > provide a way to access the current mm without incrementing its > > refcount. > > Nice! > > > > > With this change, you can write stuff such as > > > > let vma =3D current!().mm().lock_vma_under_rcu(addr); > > > > without incrementing any refcounts. > > > > Signed-off-by: Alice Ryhl > > On assumption that the problem you reference with the rust imports is > corrected in v10, and that what you are doing with current_raw() is > sensible, then: > > Acked-by: Lorenzo Stoakes > > Thanks! > > > --- > > Reviewers: Does accessing task->mm on a non-current task require rcu > > protection? > > Hm I am not actually sure, but it seems like you probably do, and I would= say > you need the task lock right? > > Looking at find_lock_task_mm() as used by the oomk for instance suggests = as much. Okay, sounds complicated. I'm not going to bother with that right now. > > /// The type of process identifiers (PIDs). > > type Pid =3D bindings::pid_t; > > > > @@ -121,27 +141,25 @@ pub fn current_raw() -> *mut bindings::task_struc= t { > > /// # Safety > > /// > > /// Callers must ensure that the returned object doesn't outlive t= he current task/thread. > > - pub unsafe fn current() -> impl Deref { > > - struct TaskRef<'a> { > > - task: &'a Task, > > - _not_send: NotThreadSafe, > > + pub unsafe fn current() -> impl Deref { > > + struct TaskRef { > > + task: *const CurrentTask, > > } > > Why do we drop the NotThreadSafe bit here? And it seems like the 'a lifet= ime > stuff has gone too? > > I'm guessing the lifetime stuff is because of the SAFETY comment below ab= out > assumptions about lifetime? I dropped the lifetime because it's not doing anything. As for NotThreadSaf= e: 1. See thread with Boqun. 2. Raw pointers are already considered not thread safe by default, so the *const CurrentTask field has the same effect. Alice