mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
rust: alloc: fix rusttest
by providing Cmalloc::aligned_layout
too
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>
This commit is contained in:
parent
a44458dfd5
commit
0f580d5d3d
@ -22,6 +22,17 @@ pub type Kmalloc = Cmalloc;
|
|||||||
pub type Vmalloc = Kmalloc;
|
pub type Vmalloc = Kmalloc;
|
||||||
pub type KVmalloc = 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" {
|
extern "C" {
|
||||||
#[link_name = "aligned_alloc"]
|
#[link_name = "aligned_alloc"]
|
||||||
fn libc_aligned_alloc(align: usize, size: usize) -> *mut crate::ffi::c_void;
|
fn libc_aligned_alloc(align: usize, size: usize) -> *mut crate::ffi::c_void;
|
||||||
|
Loading…
Reference in New Issue
Block a user