summaryrefslogtreecommitdiffstats
path: root/rust/kernel/alloc/allocator_test.rs
diff options
context:
space:
mode:
authorBenjamin Tissoires <bentiss@kernel.org>2025-09-30 16:31:10 +0200
committerBenjamin Tissoires <bentiss@kernel.org>2025-09-30 16:31:10 +0200
commitd325efac5938efa3c2a25df72a1bd1af16cd0ed8 (patch)
tree6bb0db4f21bd6359bb32f3beeb63231477b09ef3 /rust/kernel/alloc/allocator_test.rs
parentbba920e6f803138587248079de47ad3464a396f6 (diff)
parentd1dd75c6500c74b91c5286fd3277710371d3e3ca (diff)
downloadlinux-d325efac5938efa3c2a25df72a1bd1af16cd0ed8.tar.gz
linux-d325efac5938efa3c2a25df72a1bd1af16cd0ed8.zip
Merge branch 'for-6.18/core' into for-linus
- allow HID-BPF to rebind a driver to hid-multitouch (Benjamin Tissoires) - Change hid_driver to use a const char* for .name (Rahul Rameshbabu)
Diffstat (limited to 'rust/kernel/alloc/allocator_test.rs')
-rw-r--r--rust/kernel/alloc/allocator_test.rs13
1 files changed, 12 insertions, 1 deletions
diff --git a/rust/kernel/alloc/allocator_test.rs b/rust/kernel/alloc/allocator_test.rs
index d19c06ef0498..90dd987d40e4 100644
--- a/rust/kernel/alloc/allocator_test.rs
+++ b/rust/kernel/alloc/allocator_test.rs
@@ -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;
@@ -82,7 +93,7 @@ unsafe impl Allocator for Cmalloc {
// SAFETY: Returns either NULL or a pointer to a memory allocation that satisfies or
// exceeds the given size and alignment requirements.
- let dst = unsafe { libc_aligned_alloc(layout.align(), layout.size()) } as *mut u8;
+ let dst = unsafe { libc_aligned_alloc(layout.align(), layout.size()) }.cast::<u8>();
let dst = NonNull::new(dst).ok_or(AllocError)?;
if flags.contains(__GFP_ZERO) {