]> www.infradead.org Git - users/hch/misc.git/commit
x86/sgx: Fix size overflows in sgx_encl_create()
authorJarkko Sakkinen <jarkko@kernel.org>
Wed, 5 Mar 2025 05:00:05 +0000 (07:00 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 5 Mar 2025 08:51:41 +0000 (09:51 +0100)
commit0d3e0dfd68fb9e6b0ec865be9f3377cc3ff55733
tree098ea7d7ca41f6f5508bdb359bf969837d957f6c
parentf6bdaab79ee4228a143ee1b4cb80416d6ffc0c63
x86/sgx: Fix size overflows in sgx_encl_create()

The total size calculated for EPC can overflow u64 given the added up page
for SECS.  Further, the total size calculated for shmem can overflow even
when the EPC size stays within limits of u64, given that it adds the extra
space for 128 byte PCMD structures (one for each page).

Address this by pre-evaluating the micro-architectural requirement of
SGX: the address space size must be power of two. This is eventually
checked up by ECREATE but the pre-check has the additional benefit of
making sure that there is some space for additional data.

Fixes: 888d24911787 ("x86/sgx: Add SGX_IOC_ENCLAVE_CREATE")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Dave Hansen <dave.hansen@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Link: https://lore.kernel.org/r/20250305050006.43896-1-jarkko@kernel.org
Closes: https://lore.kernel.org/linux-sgx/c87e01a0-e7dd-4749-a348-0980d3444f04@stanley.mountain/
arch/x86/kernel/cpu/sgx/ioctl.c