lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <96cb824e-8251-a329-11e5-3618a4e59bc8@asahilina.net>
Date:   Mon, 27 Feb 2023 22:47:37 +0900
From:   Asahi Lina <lina@...hilina.net>
To:     Andreas Hindborg <nmi@...aspace.dk>
Cc:     Miguel Ojeda <ojeda@...nel.org>,
        Alex Gaynor <alex.gaynor@...il.com>,
        Wedson Almeida Filho <wedsonaf@...il.com>,
        Boqun Feng <boqun.feng@...il.com>, Gary Guo <gary@...yguo.net>,
        Björn Roy Baron <bjorn3_gh@...tonmail.com>,
        Masahiro Yamada <masahiroy@...nel.org>,
        Nathan Chancellor <nathan@...nel.org>,
        Nick Desaulniers <ndesaulniers@...gle.com>,
        Nicolas Schier <nicolas@...sle.eu>,
        rust-for-linux@...r.kernel.org, linux-kernel@...r.kernel.org,
        linux-kbuild@...r.kernel.org, asahi@...ts.linux.dev
Subject: Re: [PATCH] rust: Enable the new_uninit feature for kernel and driver
 crates

On 27/02/2023 22.09, Andreas Hindborg wrote:
> 
> Asahi Lina <lina@...hilina.net> writes:
> 
>> The unstable new_uninit feature enables various library APIs to create
>> uninitialized containers, such as `Box::assume_init()`. This is
>> necessary to build abstractions that directly initialize memory at the
>> target location, instead of doing copies through the stack.
>>
>> Will be used by the DRM scheduler abstraction in the kernel crate, and
>> by field-wise initialization (e.g. using `place!()` or a future
>> replacement macro which may itself live in `kernel`) in driver crates.
>>
>> See [1] [2] [3] for background information.
>>
>> [1] https://github.com/Rust-for-Linux/linux/issues/879
>> [2] https://github.com/Rust-for-Linux/linux/issues/2
>> [3] https://github.com/rust-lang/rust/issues/63291
>>
>> Signed-off-by: Asahi Lina <lina@...hilina.net>
>> ---
>>  rust/kernel/lib.rs     | 1 +
>>  scripts/Makefile.build | 2 +-
>>  2 files changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/rust/kernel/lib.rs b/rust/kernel/lib.rs
>> index 223564f9f0cc..1118cd3e0b5f 100644
>> --- a/rust/kernel/lib.rs
>> +++ b/rust/kernel/lib.rs
>> @@ -17,6 +17,7 @@
>>  #![feature(core_ffi_c)]
>>  #![feature(dispatch_from_dyn)]
>>  #![feature(generic_associated_types)]
>> +#![feature(new_uninit)]
>>  #![feature(receiver_trait)]
>>  #![feature(unsize)]
>>  
>> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
>> index a0d5c6cca76d..0f637e1ca8dc 100644
>> --- a/scripts/Makefile.build
>> +++ b/scripts/Makefile.build
>> @@ -277,7 +277,7 @@ $(obj)/%.lst: $(src)/%.c FORCE
>>  # Compile Rust sources (.rs)
>>  # ---------------------------------------------------------------------------
>>  
>> -rust_allowed_features := core_ffi_c
>> +rust_allowed_features := core_ffi_c,new_uninit
> 
> What is the purpose of adding the feature here? The kernel crate seems
> to compile fine without this.

It's for the upcoming DRM abstractions, as I mentioned in the commit
message. There's so many dependencies that I'm trying to get as much as
I can early to avoid having to review very big patchsets down the line ^^

~~ Lina

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ