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 9897EC04FF8 for ; Thu, 18 Apr 2024 17:52:27 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F20AF6B0083; Thu, 18 Apr 2024 13:52:26 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EA99C6B0085; Thu, 18 Apr 2024 13:52:26 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D23346B0087; Thu, 18 Apr 2024 13:52:26 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id AEBD96B0083 for ; Thu, 18 Apr 2024 13:52:26 -0400 (EDT) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 5734E1C1030 for ; Thu, 18 Apr 2024 17:52:26 +0000 (UTC) X-FDA: 82023397092.17.EB09C18 Received: from mail-yb1-f182.google.com (mail-yb1-f182.google.com [209.85.219.182]) by imf03.hostedemail.com (Postfix) with ESMTP id 7545320016 for ; Thu, 18 Apr 2024 17:52:24 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=umich.edu header.s=google-2016-06-03 header.b=h2goFb9x; spf=pass (imf03.hostedemail.com: domain of tmgross@umich.edu designates 209.85.219.182 as permitted sender) smtp.mailfrom=tmgross@umich.edu; dmarc=pass (policy=none) header.from=umich.edu ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713462744; 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=fezWjsLogxXqyEuKKr9Hy9rCs7/m/0D7LZfJ5JnAum0=; b=Vux/yiEuwmbKCr0/IPIWT0zYEIyTnMphtwwlwGFnk+0U+XwfNn9ne7Y2PprymjJAs3xIZj R4F8YHbv/RQpAeAkgHH9FnOYPWl6RHXhJOJkozZUE3HuUY9tehUk5vFMu6pE658Ab7iQQR pBweFSXzxIA2BJ5Ek2AhAyb3CP8QP30= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=umich.edu header.s=google-2016-06-03 header.b=h2goFb9x; spf=pass (imf03.hostedemail.com: domain of tmgross@umich.edu designates 209.85.219.182 as permitted sender) smtp.mailfrom=tmgross@umich.edu; dmarc=pass (policy=none) header.from=umich.edu ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713462744; a=rsa-sha256; cv=none; b=0Eo1vqhbfzlOQB9DcobzHoK0WilIBi2O9cgjs4oqmF16wheq0AHIhnlRWqIDZs4DMSZYtM 4No4LfVYH3qHpFb0EXR6mNgnStHfZIjVRVflzvoxnUB2Uzdcakd13lBefZ7iTg9hnLihVO duZ4Qvv91QmvCB1Wm3bnPHqWqjHmV2s= Received: by mail-yb1-f182.google.com with SMTP id 3f1490d57ef6-dcd9e34430cso1386692276.1 for ; Thu, 18 Apr 2024 10:52:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=umich.edu; s=google-2016-06-03; t=1713462743; x=1714067543; 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=fezWjsLogxXqyEuKKr9Hy9rCs7/m/0D7LZfJ5JnAum0=; b=h2goFb9xNatrGFnR26MNQ99xZUhHNpbJUj4mhbLYZK1YchjbpmyVfXsJQdLJv2ckuw rFFAmWHbJEA65EDIHc+4Vd+QP+ktSB5t68kxKC7g/cRgJOykI7y5yq+Pb/XwlODY7+XY HYURrgUoj8gszLIfWFUSfuSw10LumJlf2sJh7pv/JpOoI6eqp4zX3l5ellEXFyqj78K7 k0cATd8FeKHynmWtPvQ99afu6YM4w2PNYLjdeM2uzLRbs1frT51xppCWOtX8vUJEoOQ6 5u+S4lk7ga1mWvLLwMJD9hwSc7io3YnwniIZpZnvhAn4zT8cFIpGdT2T7uSJ2iUGDVf2 BKnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713462743; x=1714067543; 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=fezWjsLogxXqyEuKKr9Hy9rCs7/m/0D7LZfJ5JnAum0=; b=iusEBpNluCCo0EYI+CPkVeYXEmC3B3K4oYoaWxlP/w/h4vfyI7bj2nk2Q3TScvsUXN ktWSU5iTyNxlO9FFrJJ5DEINKjdps4FF+FI6Oqv6kqFUECQr9AtZV1zEJDo4qsfl/rq1 mxCvCyftfKJ9LjXSg923bNkVleupbBn5ep/ZeHZAfqCxk5JR7tduNHzITBnI35uPMhih +Mvoz/LQaQ9vmVL480e6i9dfLpCre6LjRUmYfBtOm63SzztllUcHUBXwA6OcXnr/5Q+b fDPbKpJ/TzfuT0jUAvi9Ea3rGyVzesSkqwmiL7i28iSHZ4XLtIRA8Xr82L8YLMGFdOuD bTkg== X-Forwarded-Encrypted: i=1; AJvYcCViQ8o8Z/uO5HVCxV3xJ6GvLH9r54qK6xStjvJshsuAB810UUfTn3YLn40vfrN9X/9a4jv4uagOpXXklqGXTb6WlNs= X-Gm-Message-State: AOJu0Yw4F0tM28ZiKuuNptLMsl/DlKPKwaQy39bfcSvR8JmPeL+diWiD sx282khEXIZx8gJ1Lz03MM2g6hp2+UiyFfkFV0r1Klfb0UhSSBxhLqrwq1a+4IZjVP6HGdI65VO CMOO9lJZ79rxye6zA7SEywGNqmKiH3h8Xe9kigw== X-Google-Smtp-Source: AGHT+IHLIxLV6AmwYctLpvdfNF/hPmIXNgahPf3Z+946bF20hsA3skulNWrlmiOhkxE68LjMsdpOYru+qXDZ9OIWRJE= X-Received: by 2002:a25:8586:0:b0:dc6:4d0c:e9de with SMTP id x6-20020a258586000000b00dc64d0ce9demr4057848ybk.0.1713462743430; Thu, 18 Apr 2024 10:52:23 -0700 (PDT) MIME-Version: 1.0 References: <20240418-alice-mm-v6-0-cb8f3e5d688f@google.com> <20240418-alice-mm-v6-3-cb8f3e5d688f@google.com> <5fd684d8-d46d-4009-bcf8-134dab342322@proton.me> In-Reply-To: <5fd684d8-d46d-4009-bcf8-134dab342322@proton.me> From: Trevor Gross Date: Thu, 18 Apr 2024 13:52:12 -0400 Message-ID: Subject: Re: [PATCH v6 3/4] rust: uaccess: add typed accessors for userspace pointers To: Benno Lossin , Boqun Feng Cc: Alice Ryhl , Miguel Ojeda , Matthew Wilcox , Al Viro , Andrew Morton , Kees Cook , Alex Gaynor , Wedson Almeida Filho , Gary Guo , =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= , Andreas Hindborg , Greg Kroah-Hartman , =?UTF-8?B?QXJ2ZSBIasO4bm5ldsOlZw==?= , Todd Kjos , Martijn Coenen , Joel Fernandes , Carlos Llamas , Suren Baghdasaryan , Arnd Bergmann , linux-mm@kvack.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Christian Brauner Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Stat-Signature: 145qs83x4wwxzu51ay35p1o1aieo6b1q X-Rspamd-Queue-Id: 7545320016 X-Rspamd-Server: rspam02 X-Rspam-User: X-HE-Tag: 1713462744-244233 X-HE-Meta: U2FsdGVkX19TUAQd+gjGM02QCettEtd2pivOwm1IfgbEUQOcvu0gTftoEPRxh22kos/2Z46Tz28HJetDjWFKNXPiAIVLwJgFzupD2jmgB6EOv5OclzX2xqFztFM58wBujRYMMnO23xgr0MWO02v8g5UKVwNltEKyXdQ/myVdEmWpcMv6oVmLlwuI0UIUHcoywAIoyWQO1xaTTcr1JHPrxscpmcQ8vrxt1AiT9Rlhe+1NhmkH5qekDTk8hfdVmUSmFFtxODOlnZCDIO/RgU6i6rWe6ycLfsS16nOis91AaxBWk3ARYQvTx2drDMKVARVk9KSGgDny7VV1/KNOU607qgob1y/d2Ss+GjAAcNG77cMGHXusc3tIEIf55x1HDaREA91t9AmgL9A2U2H0KtYTmeCtb/Gu4xxkTco2vEQyLz+jMeZTEsfSgTGPCQLHsGiG607qQxxW5HRvVDwVxOinOnMIKoJUGG3AvKnRAS8+lFTzJFhtE4YPvq2+T8Iz8tNtP/A/2dEDDKdgdXJa4eamoQ8ps2jMaMqq4EPwlwnAUbEoq1eagtUSlSsTP9nRLKQ53Y6QARdWHq9JkkGFgSaKrKc2ohjW3TLYH+4MUqNj6m/cVg8eGcGEb97kjHBx2QFRO5wtw3gu6dwJ/ZZNvdoALTNw2DOCroAz+6PfU5u5TvyKMGWtW8Rvs4h38ZgOPt6oBG2gPGPERTJVxlZKZAguEevlkVpATdGxbC7umI72hEzuK7oocrWy3zFJ/nDpm8olPrh2GbYiP0RZRnshD/0Q7p0qrxQFcYvCfiQgJ9BC/nOIzzLc13l0iXZ7mUNK/qaPBTLGO9o9An1IWinuFMoZCxKaelAeGmQFVh2LOTlbpPTayyNKJVqCaa/l3kXF3o/AJndqLUjfq3EKyd9BKy7rQ/nq8EgnCekDac7GQ3F5unrvU5hRgG60rDp8qtHFTiVLv8Cjw8LftygXIWNscb7 b0YGeKBr fQE45gcdQf/ATF7/XzIN3ny8/hqEAd6LO+xw1HB37Id+EnXlOfRFAI9uHPSB26K+Q1MSwDp0QPCudfusHtXq/uC6KB4Z5DjKX049nTnKtl4B4N3UP2PFtAl5ShTjjFezJs4bvHr0oaOviEF9Jzzp3vH5pg/jEOVTl4Khcxcj1Fb63qmbkZ0iK2CDW+YxfgK/S3dmDa4wgsmmvOwNdh79i55peFnPZ+LW3JKtr0r9WC0ey99wCDR/WB+cIgaWvV86ZGi64NGhn3GpbZAGWoAqlz7Gjs93paIy+DD1bxtm+tI021n0lbZN5bUT2ejFYlHiPwGLUV0oXVWdpKStYZjkty7wESN6jDhA8OIDrIJl1vlL+IcBGg+9EqXNpumgP02Onu22fWljHyngraLqR6XxbWopPCY6nAHAB/Bk5tN27HFKQhK0zMU5m+4lBTy7J0HNQS7YsMqtxU/yKwXpwl8IcvwU5SEZZsETLSL6E8mfyE3eTEjY= 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 Thu, Apr 18, 2024 at 9:03=E2=80=AFAM Benno Lossin wrote: > > On 18.04.24 10:59, Alice Ryhl wrote: > > diff --git a/rust/kernel/types.rs b/rust/kernel/types.rs > > index 8fad61268465..9c57c6c75553 100644 > > --- a/rust/kernel/types.rs > > +++ b/rust/kernel/types.rs > > @@ -409,3 +409,67 @@ pub enum Either { > > /// Constructs an instance of [`Either`] containing a value of typ= e `R`. > > Right(R), > > } > > + > > +/// Types for which any bit pattern is valid. > > +/// > > +/// Not all types are valid for all values. For example, a `bool` must= be either zero or one, so > > +/// reading arbitrary bytes into something that contains a `bool` is n= ot okay. > > +/// > > +/// It's okay for the type to have padding, as initializing those byte= s has no effect. > > +/// > > +/// # Safety > > +/// > > +/// All bit-patterns must be valid for this type. This type must not h= ave interior mutability. > > What is the reason for disallowing interior mutability here? I agree > that it is necessary for `AsBytes`, but I don't think we need it here. > For example it is fine to convert `u8` to `UnsafeCell`. Niches also > should not be a problem, since eg `Option>>` > already fails the "All bit-patterns must be valid for this type". > > -- > Cheers, > Benno > > > +pub unsafe trait FromBytes {} See also the reasoning in zerocopy [1] and bytemuck [2] [1]: https://docs.rs/zerocopy/latest/zerocopy/derive.FromBytes.html#analysi= s [2]: https://docs.rs/bytemuck/latest/bytemuck/trait.AnyBitPattern.html#safe= ty