linux/rust
Benno Lossin 701608bd03 rust: sync: reduce stack usage of UniqueArc::try_new_uninit
`UniqueArc::try_new_uninit` calls `Arc::try_new(MaybeUninit::uninit())`.
This results in the uninitialized memory being placed on the stack,
which may be arbitrarily large due to the generic `T` and thus could
cause a stack overflow for large types.

Change the implementation to use the pin-init API which enables in-place
initialization. In particular it avoids having to first construct and
then move the uninitialized memory from the stack into the final location.

Signed-off-by: Benno Lossin <benno.lossin@proton.me>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Reviewed-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Andreas Hindborg <a.hindborg@samsung.com>
Link: https://lore.kernel.org/r/20230408122429.1103522-15-y86-dev@protonmail.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2023-04-12 18:41:05 +02:00
..
alloc rust: alloc: vec: Add some try_* methods we need 2023-04-10 23:55:43 +02:00
bindings rust: sync: add Arc for ref-counted allocations 2023-01-16 22:20:03 +01:00
kernel rust: sync: reduce stack usage of UniqueArc::try_new_uninit 2023-04-12 18:41:05 +02:00
macros rust: init: add PinnedDrop trait and macros 2023-04-12 18:41:05 +02:00
.gitignore kbuild: rust: move rust/target.json to scripts/ 2023-01-22 23:43:33 +09:00
bindgen_parameters rust: bindgen: Add alt_instr as opaque type 2023-03-02 22:44:15 +01:00
build_error.rs rust: add build_error crate 2022-12-04 01:59:16 +01:00
compiler_builtins.rs rust: compiler_builtins: make stubs non-global 2023-01-16 21:04:34 +01:00
exports.c rust: add build_error crate 2022-12-04 01:59:16 +01:00
helpers.c rust: error: Add a helper to convert a C ERR_PTR to a Result 2023-04-12 18:41:04 +02:00
Makefile Kbuild updates for v6.3 2023-02-26 11:53:25 -08:00