On 7/22/21 1:52 PM, Yu-cheng Yu wrote: > + if (fpregs_state_valid(fpu, smp_processor_id())) { > + rdmsrl(MSR_IA32_PL3_SSP, ssp); > + } else { > + struct cet_user_state *p; > + > + /* > + * When !fpregs_state_valid() and get_xsave_addr() returns > + * null, XFEAUTRE_CET_USER is in init state. Shadow stack > + * pointer is null in this case, so return zero. > + */ > + p = get_xsave_addr(&fpu->state.xsave, XFEATURE_CET_USER); > + if (p) > + ssp = p->user_ssp; > + } > + > + fpregs_unlock(); Why are we even calling into this code if shadow stacks might be disabled? Seems like we should have just errored out long before getting here.