diff options
author | Boqun Feng <[email protected]> | 2023-07-29 18:29:02 -0700 |
---|---|---|
committer | Miguel Ojeda <[email protected]> | 2023-08-04 17:10:31 +0200 |
commit | b3d8aa84bbfe9b58ccc5332cacf8ea17200af310 (patch) | |
tree | 896f78de27e1336c7c2b5eb3ed6bbc413e6ef2bf /drivers/usb/cdns3/cdns3-trace.c | |
parent | 6eaae198076080886b9e7d57f4ae06fa782f90ef (diff) |
rust: allocator: Prevent mis-aligned allocation
Currently the rust allocator simply passes the size of the type Layout
to krealloc(), and in theory the alignment requirement from the type
Layout may be larger than the guarantee provided by SLAB, which means
the allocated object is mis-aligned.
Fix this by adjusting the allocation size to the nearest power of two,
which SLAB always guarantees a size-aligned allocation. And because Rust
guarantees that the original size must be a multiple of alignment and
the alignment must be a power of two, then the alignment requirement is
satisfied.
Suggested-by: Vlastimil Babka <[email protected]>
Co-developed-by: "Andreas Hindborg (Samsung)" <[email protected]>
Signed-off-by: "Andreas Hindborg (Samsung)" <[email protected]>
Signed-off-by: Boqun Feng <[email protected]>
Cc: [email protected] # v6.1+
Acked-by: Vlastimil Babka <[email protected]>
Fixes: 247b365dc8dc ("rust: add `kernel` crate")
Link: https://github.com/Rust-for-Linux/linux/issues/974
Link: https://lore.kernel.org/r/[email protected]
[ Applied rewording of comment as discussed in the mailing list. ]
Signed-off-by: Miguel Ojeda <[email protected]>
Diffstat (limited to 'drivers/usb/cdns3/cdns3-trace.c')
0 files changed, 0 insertions, 0 deletions