Ensure userspace allocation is 8-byte aligned
This commit is contained in:
parent
531752f39a
commit
6f7d1937e2
1 changed files with 4 additions and 1 deletions
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
use crate::arch::asm;
|
||||
use crate::cell::UnsafeCell;
|
||||
use crate::cmp;
|
||||
use crate::convert::TryInto;
|
||||
use crate::mem;
|
||||
use crate::ops::{CoerceUnsized, Deref, DerefMut, Index, IndexMut};
|
||||
|
|
@ -212,7 +213,9 @@ where
|
|||
unsafe {
|
||||
// Mustn't call alloc with size 0.
|
||||
let ptr = if size > 0 {
|
||||
rtunwrap!(Ok, super::alloc(size, T::align_of())) as _
|
||||
// `copy_to_userspace` is more efficient when data is 8-byte aligned
|
||||
let alignment = cmp::max(T::align_of(), 8);
|
||||
rtunwrap!(Ok, super::alloc(size, alignment)) as _
|
||||
} else {
|
||||
T::align_of() as _ // dangling pointer ok for size 0
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue