Skip to content

Commit 894909f

Browse files
committed
Merge tag 'x86_urgent_for_v6.1_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Borislav Petkov: - Do not hold fpregs lock when inheriting FPU permissions because the fpregs lock disables preemption on RT but fpu_inherit_perms() does spin_lock_irq(), which, on RT, uses rtmutexes and they need to be preemptible. - Check the page offset and the length of the data supplied by userspace for overflow when specifying a set of pages to add to an SGX enclave * tag 'x86_urgent_for_v6.1_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/fpu: Drop fpregs lock before inheriting FPU permissions x86/sgx: Add overflow check in sgx_validate_offset_length()
2 parents d4f754c + 36b0387 commit 894909f

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

arch/x86/kernel/cpu/sgx/ioctl.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,9 @@ static int sgx_validate_offset_length(struct sgx_encl *encl,
356356
if (!length || !IS_ALIGNED(length, PAGE_SIZE))
357357
return -EINVAL;
358358

359+
if (offset + length < offset)
360+
return -EINVAL;
361+
359362
if (offset + length - PAGE_SIZE >= encl->size)
360363
return -EINVAL;
361364

arch/x86/kernel/fpu/core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -605,9 +605,9 @@ int fpu_clone(struct task_struct *dst, unsigned long clone_flags, bool minimal)
605605
if (test_thread_flag(TIF_NEED_FPU_LOAD))
606606
fpregs_restore_userregs();
607607
save_fpregs_to_fpstate(dst_fpu);
608+
fpregs_unlock();
608609
if (!(clone_flags & CLONE_THREAD))
609610
fpu_inherit_perms(dst_fpu);
610-
fpregs_unlock();
611611

612612
/*
613613
* Children never inherit PASID state.

0 commit comments

Comments
 (0)