Merge tag 'core_urgent_for_v5.16_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull signal handlign fix from Borislav Petkov: - Prevent lock contention on the new sigaltstack lock on the common-case path, when no changes have been made to the alternative signal stack. * tag 'core_urgent_for_v5.16_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: signal: Skip the altstack update when not needed
This commit is contained in:
@@ -4185,6 +4185,15 @@ do_sigaltstack (const stack_t *ss, stack_t *oss, unsigned long sp,
|
|||||||
ss_mode != 0))
|
ss_mode != 0))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return before taking any locks if no actual
|
||||||
|
* sigaltstack changes were requested.
|
||||||
|
*/
|
||||||
|
if (t->sas_ss_sp == (unsigned long)ss_sp &&
|
||||||
|
t->sas_ss_size == ss_size &&
|
||||||
|
t->sas_ss_flags == ss_flags)
|
||||||
|
return 0;
|
||||||
|
|
||||||
sigaltstack_lock();
|
sigaltstack_lock();
|
||||||
if (ss_mode == SS_DISABLE) {
|
if (ss_mode == SS_DISABLE) {
|
||||||
ss_size = 0;
|
ss_size = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user