rust/library/std/src
Yuki Okushi ea1a0d76af
Rollup merge of #111139 - fortanix:raoul/fix_mxcsr_configuration_dependent_timing, r=thomcc
Fix MXCSR configuration dependent timing

Dependent on the (potentially secret) data some vector instructions operate on, and the content in MXCSR, instruction retirement may be delayed by one cycle. This is a potential side channel.

This PR fixes this vulnerability for the `x86_64-fortanix-unknown-sgx` platform by loading MXCSR with `0x1fbf` through an `xrstor` instruction when the enclave is entered and executing an `lfence` immediately after. Other changes of the MXCSR happen only when the enclave is about to be exited and no vector instructions will be executed before it will actually do so. Users of EDP who change the MXCSR and do wish to defend against this side channel, will need to implement the software mitigation described [here](https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/best-practices/mxcsr-configuration-dependent-timing.html).

cc: `@jethrogb` `@monokles`
2023-05-06 09:09:32 +09:00
..
backtrace Use implicit capture syntax in format_args 2022-03-10 10:23:40 -05:00
collections rm const traits in libcore 2023-04-16 06:49:27 +00:00
env std: move "mod tests/benches" to separate files 2020-08-31 02:56:59 +00:00
error remove fn backtrace 2022-08-01 20:10:40 +00:00
f32 Remove some cfg(not(bootstrap)) 2022-12-11 01:20:18 -05:00
f64 Remove some cfg(not(bootstrap)) 2022-12-11 01:20:18 -05:00
ffi remove some unneeded imports 2023-04-12 19:27:18 +02:00
fs Correctly convert an NT path to a Win32 path 2023-05-03 10:24:56 +01:00
io replace version placeholders 2023-04-28 08:47:55 -07:00
net Inline AsInner implementations 2023-05-01 13:25:09 +02:00
num rustc_expand: Mark inner #![test] attributes as soft-unstable 2020-11-20 19:35:03 +03:00
os Inline AsRawFd implementations 2023-05-01 13:28:19 +02:00
panic review: fix nits and move panic safety tests to the correct place 2020-09-25 23:10:24 +02:00
path make many std tests work in Miri 2022-08-18 18:07:39 -04:00
personality Define UNWIND_DATA_REG for loongarch64 2023-04-08 00:09:54 +08:00
prelude correct std::prelude comment 2023-04-27 15:56:57 +02:00
process Implement read_buf for a few more types 2023-03-06 12:24:15 +01:00
sync replace version placeholders 2023-04-28 08:47:55 -07:00
sys Rollup merge of #111139 - fortanix:raoul/fix_mxcsr_configuration_dependent_timing, r=thomcc 2023-05-06 09:09:32 +09:00
sys_common Rollup merge of #105695 - joboet:remove_generic_parker, r=m-ou-se 2023-05-03 16:42:48 -07:00
thread avoid duplicating TLS state between test std and realstd 2023-04-28 17:24:16 +02:00
time Rollup merge of #103056 - beetrees:timespec-bug-fix, r=thomcc 2023-05-05 18:40:32 +05:30
alloc.rs Revert "Remove #[alloc_error_handler] from the compiler and library" 2023-04-25 00:08:35 +02:00
ascii.rs Add the basic ascii::Char type 2023-05-03 22:09:33 -07:00
backtrace.rs Replace libstd, libcore, liballoc in docs. 2022-12-30 14:00:40 +01:00
env.rs Rollup merge of #109894 - fleetingbytes:109893-var_os-never-returns-an-error, r=cuviper 2023-04-11 20:28:46 -07:00
error.rs remove cfg(bootstrap) 2022-09-26 10:14:45 +02:00
f32.rs Cover edge cases for {f32, f64}.hypot() docs 2023-04-13 22:41:55 +01:00
f64.rs Cover edge cases for {f32, f64}.hypot() docs 2023-04-13 22:41:55 +01:00
fs.rs Inline AsInner implementations 2023-05-01 13:25:09 +02:00
keyword_docs.rs Spelling library/ 2023-04-26 02:10:22 -04:00
lib.rs Revert "Report allocation errors as panics" 2023-04-25 00:08:37 +02:00
macros.rs Add tidy check for dbg 2022-12-31 15:32:09 +05:30
num.rs Add Saturating type (based on Wrapping type) 2021-08-10 19:27:01 +02:00
panic.rs review 2023-03-17 21:00:10 -07:00
panicking.rs Revert "Report allocation errors as panics" 2023-04-25 00:08:37 +02:00
path.rs Rollup merge of #109540 - marcospb19:edit-Path-with_file_name-example, r=m-ou-se 2023-05-01 17:10:22 +02:00
personality.rs Move personality functions to std 2022-08-23 16:12:58 +08:00
primitive_docs.rs Mention array<->tuple convs in docs 2023-05-03 20:34:47 +00:00
process.rs Inline AsInner implementations 2023-05-01 13:25:09 +02:00
rt.rs Replace libstd, libcore, liballoc in line comments. 2022-12-30 14:00:42 +01:00
time.rs update wasi_clock_time_api ref. 2023-04-29 19:04:16 +08:00