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 F230AC531DF for ; Tue, 20 Aug 2024 09:48:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 94EC76B0088; Tue, 20 Aug 2024 05:48:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8D88D6B0089; Tue, 20 Aug 2024 05:48:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 79FF06B008A; Tue, 20 Aug 2024 05:48:02 -0400 (EDT) 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 5DDFD6B0088 for ; Tue, 20 Aug 2024 05:48:02 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 1250FC1959 for ; Tue, 20 Aug 2024 09:48:02 +0000 (UTC) X-FDA: 82472147604.11.695A637 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by imf01.hostedemail.com (Postfix) with ESMTP id 4530140011 for ; Tue, 20 Aug 2024 09:48:00 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Qc8Y+aoA; spf=pass (imf01.hostedemail.com: domain of aliceryhl@google.com designates 209.85.221.42 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=1724147201; 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=hkbZOyJmmuZ1wf7Nih6xoGcKtCEbVt1IodvD++9LNEM=; b=EqhmdaeLnooRzlu8Fa1XQ7evDSCC/u0R3dyrFav71QImjkGABS2IrLadxsIwmz5TL4bcCX lCyhFgpNF9Q5Gu3HQVse03lw3XMNkHyqIleK/dV6TeHn0+V/qv0ubdbrrC++6FIMRCDupr eiHb/aVd7cDRciQhUAuG7D1O1aTRuJw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1724147201; a=rsa-sha256; cv=none; b=4Hsr6sJ7LX7U9E44rKjSkuvRAJKLwk8DHHwJOefSRrGtYNaWYs7R9Q7z+l7RnHcFV5rYk4 c/Ad/bFrUZmFxOONAk7Iz2oHb97MCoYtQlmnFwMS3eFfqL+PvVDp9nrqmLIoPXSvqistwZ 9C9XuZS6oDWO+xLgFCOv9XHLRqPiEqY= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=Qc8Y+aoA; spf=pass (imf01.hostedemail.com: domain of aliceryhl@google.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=aliceryhl@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-3719896b7c8so2173059f8f.3 for ; Tue, 20 Aug 2024 02:47:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1724147279; x=1724752079; 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=hkbZOyJmmuZ1wf7Nih6xoGcKtCEbVt1IodvD++9LNEM=; b=Qc8Y+aoA453WVw+Pzfw/f+/WCxSip7m6+2JK25VC2GPYGf7OJ7aXGPMg5gMMhhfw6j G5QQLqBLAnnibIOf7jeqDNlIq8FvuIJuNOqeyevdxEA9Y6QrmqfoDbY8tTO/0klYt0vi RFpWzmu88JM7D5AUkr6YWZUwxVu62e2lXTeqbE6Lxf8mgAVybhF8ey5R0BJ7oDdBQfls 6D5U9ybzcUBNS7pK+WutueRbs/mwysPNxNJ+aNNLAzSKts/OZ97yTFQbfivt5pobO1vu lToa0p/YjgQzTq9eD+VMo0iupyN7zaMqlZbKTlyDqBqM0JhCUE205YxClWmYOhGe8kWi k6lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724147279; x=1724752079; 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=hkbZOyJmmuZ1wf7Nih6xoGcKtCEbVt1IodvD++9LNEM=; b=iofw/Xbq7S3ZJBJ1In6N5yGd+3wiqdoFU53811DcjkrrftPiZEybt6vFSDG3Kvf9bl lWVbLd3MKWcCnhlFlIoZPdpqXKfwRvUAeOynu07j7QXJ+9XPZRCAQ74JWq4MtTGAWgJ1 oMVpgchTFlfKBwkhYOP0NKo4wzbdvLxIvxQl+k+ojLQO3FV9P15Qbe0ZOD/RLuaDNN4C SMCCmwm0Mu/JYJoLiI8iSB/RIPuBSB4gP5r2BMdbiX1lZ4J5KuLMoC2BWStu99tgJlRG Qff83qkpcNiBA2VQlM69b0TTsZlNmG92dxFeXr2/j3z/mPHMEaO/XLR0WsNJUXcNwOX8 kqlQ== X-Forwarded-Encrypted: i=1; AJvYcCUg0P0dxZNQDmDG8rYt1i4ZFlmSj5EbiHMpD3bF/MJ+0l7xdouvAVxrLH/zWAdEWND2VRtbCZL+OA==@kvack.org X-Gm-Message-State: AOJu0Yyok5ETIGXFNmz3aVlLCQiwaCFV9seen0hs7VYOUoRJ2Irh70Md T1dWXOQsRK1kYETYfK8FOhTTp8TllhWdne1VwYLfCzb7aGwhiz/2k0TJ3BZ1LrdjtlRFzmU+usg S+uAk1/zVccCrB0dCLkckVf4DajlgaCyfUGk1 X-Google-Smtp-Source: AGHT+IEVUUgMFhEKKPpSyV6A7eW6jCZuMIA6MUx6Pkw8BpG70r3d1xZ/pttplYFiCUfLgBTqFJirTtBuWp0RxHiPvIM= X-Received: by 2002:a05:6000:1844:b0:368:117c:84fd with SMTP id ffacd0b85a97d-371c5fa676dmr1167035f8f.3.1724147278349; Tue, 20 Aug 2024 02:47:58 -0700 (PDT) MIME-Version: 1.0 References: <20240816001216.26575-1-dakr@kernel.org> <20240816001216.26575-10-dakr@kernel.org> In-Reply-To: <20240816001216.26575-10-dakr@kernel.org> From: Alice Ryhl Date: Tue, 20 Aug 2024 11:47:45 +0200 Message-ID: Subject: Re: [PATCH v6 09/26] rust: alloc: implement kernel `Box` To: Danilo Krummrich Cc: ojeda@kernel.org, alex.gaynor@gmail.com, wedsonaf@gmail.com, boqun.feng@gmail.com, gary@garyguo.net, bjorn3_gh@protonmail.com, benno.lossin@proton.me, a.hindborg@samsung.com, akpm@linux-foundation.org, daniel.almeida@collabora.com, faith.ekstrand@collabora.com, boris.brezillon@collabora.com, lina@asahilina.net, mcanal@igalia.com, zhiw@nvidia.com, cjia@nvidia.com, jhubbard@nvidia.com, airlied@redhat.com, ajanulgu@redhat.com, lyude@redhat.com, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 4530140011 X-Stat-Signature: td45uj81oom4o7urhrda5sbjkc9guigo X-HE-Tag: 1724147280-612647 X-HE-Meta: U2FsdGVkX19kQXRgydczwdR8N4t/7GnuvvfCH90cOUSbTpomSw2qroyq26umsl+8iqItUnPQ33STYN8lKJRBod/7pVgGlUOvxp7XVowPM0MnVeYMIl7JXAaJCFBNoehcfV/ySmdPwTgLIfw6nxQWsQ84TGrUYHjpfFRgGi0i5vJebL4UM0khwiN3Ja5ZoVAdl3imdbbAIASJiNtatcM1kndsk2Ftg3FX2m0DafMWaSe3kkMpN9rOC0d7nx7NLqYPXomkRdBTGbxF1//d8FVp/6VdEItBa1pe1nflp+GevOHHr82eztD+ke6Ntu60rJTw6kf7TCsWdY99A0nJmi1XRymozImBcU3/GlD2b5Ns4NMu1/8quAvF6d1jPpLlUOrGWvNqJkR6zk8OOYCFuXSmtQJZmztZkeDGXq+wuqQ7LcaKpQWHj/xuhOw8cJNoRPv5YpoCWKCxDfWnWXM4VrlsYCXJi6qWNA2JVSXjUyu0YQz1ihjw9tWZKb1y9sADqvYZodhVGE6wuZ0iKSfLGD8uazTze9dyXRgDKY4Z0CRxnmuZkz0eF5XP6jw21yMRtjf5kE0IgingSHljIvK3Rmhdzas29+GLZdnevDvygfhmpdglKxi5H6Z1ZudAIGYmS/faDkbNCKbDcHe22tq4OuilOb/+uHY4QhsDdMg4FVWFkB3yTAz0oItgvG2VbPM7BQg+c8O9JN+NUA4pOaw0fmRgmBOghZckS6sKfzONIGvvnuHHeV05P1XNBucP8oFkdQ7HeSNJgtKJq8ibZ3+oeb+/jXLrZ/fkijcTEINm4/tMjiyWcFZkBW+DM0B7llR+0zASKD8XXJsUC2Mv+ppGitb+nheBbcv5+PgrsJQae8ZgHyVb9RmvySih3JUYtnzWimbg+xLFHuMAOlB9fRm7aJRnEx+cbgA/+vb9jyN+73pWe0XlFDXw5g7WVmlJ3hcrf9gFxs4J1iVp/kdPGpbgIWs COjOWZpq A5+wEp7GJ7aysFrLfcPzZg0I9SMoa02e6BmOLQTVFHPKxHDYRyBHvGmBi5uHX9v1mK8AqjTvbJeAgiXy96NN02XpLgnH/s5oUOjappNgR/8qfamIP8Z0pTToNuG1zAN5vzGdOFXKvPdcXblzZT5/uCiLw49wwzqvVwWErNuKHLo8thRHtumG+JBNxFnhPDgVCVGOc+XxV84V5T6Zo8KNDa7bmw6bWvMGttleKhRDVFlHb1dstQj2lO8G6+JJcKUD90ISYAKCZqbsJfqZgFXMlRmFZGcHiX3LLIghX2DR/iJHf/FFHR9rvrBV0C7YB2/dr3thiLzp8Sg+dHQo= X-Bogosity: Ham, tests=bogofilter, spamicity=0.097361, 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, Aug 16, 2024 at 2:13=E2=80=AFAM Danilo Krummrich = wrote: > > `Box` provides the simplest way to allocate memory for a generic type > with one of the kernel's allocators, e.g. `Kmalloc`, `Vmalloc` or > `KVmalloc`. > > In contrast to Rust's `Box` type, the kernel `Box` type considers the > kernel's GFP flags for all appropriate functions, always reports > allocation failures through `Result<_, AllocError>` and remains > independent from unstable features. > > Signed-off-by: Danilo Krummrich Overall looks good to me, but I have a question: > +impl ForeignOwnable for Box > +where > + A: Allocator, > +{ > + type Borrowed<'a> =3D &'a T; > + type BorrowedMut<'a> =3D &'a mut T; > [..] > + unsafe fn borrow_mut<'a>(ptr: *const core::ffi::c_void) -> &'a mut T= { > + // SAFETY: The safety requirements of this method ensure that th= e pointer is valid and that > + // nothing else will access the value for the duration of 'a. > + unsafe { &mut *ptr.cast_mut().cast() } > + } Where does this come from? It looks like you've based the series on top of [1], but I dropped that patch a long time ago, and I don't see it in rust-dev anymore. Alice [1]: https://lore.kernel.org/all/20230710074642.683831-1-aliceryhl@google.c= om/