mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 10:13:54 +00:00
Rollup merge of #118241 - fortanix:raoul/gh-530-make_userspace_types_send, r=Nilstrieb,dtolnay
Making `User<T>` and `User<[T]>` `Send` All `User` types in SGX point to owned memory in userspace. Special care is always needed when accessing this memory as it must be assumed that an attacker is always able to change its content. Therefore, we can also easily transfer this memory between thread boundaries. cc: ``@mzohreva`` ``@vn971`` ``@belalH`` ``@jethrogb``
This commit is contained in:
commit
5e75d46b67
@ -185,6 +185,12 @@ pub struct UserRef<T: ?Sized>(UnsafeCell<T>);
|
||||
#[unstable(feature = "sgx_platform", issue = "56975")]
|
||||
pub struct User<T: UserSafe + ?Sized>(NonNull<UserRef<T>>);
|
||||
|
||||
#[unstable(feature = "sgx_platform", issue = "56975")]
|
||||
unsafe impl<T: UserSafeSized> Send for User<T> {}
|
||||
|
||||
#[unstable(feature = "sgx_platform", issue = "56975")]
|
||||
unsafe impl<T: UserSafeSized> Send for User<[T]> {}
|
||||
|
||||
trait NewUserRef<T: ?Sized> {
|
||||
unsafe fn new_userref(v: T) -> Self;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user