mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-09-13 11:07:46 +10:00
rust: alloc: fix rusttest
by providing Cmalloc::aligned_layout
too
[ Upstream commit0f580d5d3d
] Commitfde578c862
("rust: alloc: replace aligned_size() with Kmalloc::aligned_layout()") provides a public `aligned_layout` function in `Kamlloc`, but not in `Cmalloc`, and thus uses of it will trigger an error in `rusttest`. Such a user appeared in the following commit22ab0641b9
("rust: drm: ensure kmalloc() compatible Layout"): error[E0599]: no function or associated item named `aligned_layout` found for struct `alloc::allocator_test::Cmalloc` in the current scope --> rust/kernel/drm/device.rs💯31 | 100 | let layout = Kmalloc::aligned_layout(Layout:🆕:<Self>()); | ^^^^^^^^^^^^^^ function or associated item not found in `Cmalloc` | ::: rust/kernel/alloc/allocator_test.rs:19:1 | 19 | pub struct Cmalloc; | ------------------ function or associated item `aligned_layout` not found for this struct Thus add an equivalent one for `Cmalloc`. Fixes:fde578c862
("rust: alloc: replace aligned_size() with Kmalloc::aligned_layout()") Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Link: https://lore.kernel.org/r/20250816204215.2719559-1-ojeda@kernel.org Signed-off-by: Danilo Krummrich <dakr@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
bce19c62ed
commit
a0d2e6f9d3
@ -22,6 +22,17 @@ pub type Kmalloc = Cmalloc;
|
||||
pub type Vmalloc = Kmalloc;
|
||||
pub type KVmalloc = Kmalloc;
|
||||
|
||||
impl Cmalloc {
|
||||
/// Returns a [`Layout`] that makes [`Kmalloc`] fulfill the requested size and alignment of
|
||||
/// `layout`.
|
||||
pub fn aligned_layout(layout: Layout) -> Layout {
|
||||
// Note that `layout.size()` (after padding) is guaranteed to be a multiple of
|
||||
// `layout.align()` which together with the slab guarantees means that `Kmalloc` will return
|
||||
// a properly aligned object (see comments in `kmalloc()` for more information).
|
||||
layout.pad_to_align()
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
#[link_name = "aligned_alloc"]
|
||||
fn libc_aligned_alloc(align: usize, size: usize) -> *mut crate::ffi::c_void;
|
||||
|
Loading…
Reference in New Issue
Block a user