diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2025-06-01 21:41:07 -0700 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2025-06-01 21:41:07 -0700 |
| commit | 4f9786035f9e519db41375818e1d0b5f20da2f10 (patch) | |
| tree | b307ecc9ab55c44ace462e59549c6d7976da5bfd /rust/kernel/alloc/allocator_test.rs | |
| parent | ca39500f6af9cfe6823dc5aa8fbaed788d6e35b2 (diff) | |
| parent | a95ef0199e80f3384eb992889322957d26c00102 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.16 merge window.
Diffstat (limited to 'rust/kernel/alloc/allocator_test.rs')
| -rw-r--r-- | rust/kernel/alloc/allocator_test.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/rust/kernel/alloc/allocator_test.rs b/rust/kernel/alloc/allocator_test.rs index e3240d16040b..c37d4c0c64e9 100644 --- a/rust/kernel/alloc/allocator_test.rs +++ b/rust/kernel/alloc/allocator_test.rs @@ -62,6 +62,24 @@ unsafe impl Allocator for Cmalloc { )); } + // ISO C (ISO/IEC 9899:2011) defines `aligned_alloc`: + // + // > The value of alignment shall be a valid alignment supported by the implementation + // [...]. + // + // As an example of the "supported by the implementation" requirement, POSIX.1-2001 (IEEE + // 1003.1-2001) defines `posix_memalign`: + // + // > The value of alignment shall be a power of two multiple of sizeof (void *). + // + // and POSIX-based implementations of `aligned_alloc` inherit this requirement. At the time + // of writing, this is known to be the case on macOS (but not in glibc). + // + // Satisfy the stricter requirement to avoid spurious test failures on some platforms. + let min_align = core::mem::size_of::<*const crate::ffi::c_void>(); + let layout = layout.align_to(min_align).map_err(|_| AllocError)?; + let layout = layout.pad_to_align(); + // 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; |
