Lines Matching refs:ssp
50 static int create_rstor_token(unsigned long ssp, unsigned long *token_addr)
55 if (!IS_ALIGNED(ssp, 8))
58 addr = ssp - SS_FRAME_SIZE;
64 ssp |= BIT(0);
66 if (write_user_shstk_64((u64 __user *)addr, (u64)ssp))
90 * READ_ONCE(ssp); // read+discard top element on stack
91 * ssp += nr_to_pop * 8; // move the shadow stack
92 * READ_ONCE(ssp-8); // read+discard last popped stack element
238 unsigned long long ssp;
242 rdmsrl(MSR_IA32_PL3_SSP, ssp);
246 return ssp;
280 static int shstk_push_sigframe(unsigned long *ssp)
282 unsigned long target_ssp = *ssp;
288 *ssp -= SS_FRAME_SIZE;
289 if (put_shstk_data((void __user *)*ssp, target_ssp))
295 static int shstk_pop_sigframe(unsigned long *ssp)
308 if (!IS_ALIGNED(*ssp, 8))
311 need_to_check_vma = PAGE_ALIGN(*ssp) == *ssp;
316 err = get_shstk_data(&token_addr, (unsigned long __user *)*ssp);
321 vma = find_vma(current->mm, *ssp);
338 *ssp = token_addr;
350 unsigned long ssp;
360 ssp = get_user_shstk_addr();
361 if (unlikely(!ssp))
364 err = shstk_push_sigframe(&ssp);
369 ssp -= SS_FRAME_SIZE;
370 err = write_user_shstk_64((u64 __user *)ssp, (u64)restorer);
375 wrmsrl(MSR_IA32_PL3_SSP, ssp);
383 unsigned long ssp;
390 ssp = get_user_shstk_addr();
391 if (unlikely(!ssp))
394 err = shstk_pop_sigframe(&ssp);
399 wrmsrl(MSR_IA32_PL3_SSP, ssp);