|
@@ -303,13 +303,6 @@ void signal_handler(int signum, siginfo_t *si, void *vucontext)
|
|
|
dump_mem(pkru_ptr - 128, 256);
|
|
|
pkey_assert(*pkru_ptr);
|
|
|
|
|
|
- si_pkey_ptr = (u32 *)(((u8 *)si) + si_pkey_offset);
|
|
|
- dprintf1("si_pkey_ptr: %p\n", si_pkey_ptr);
|
|
|
- dump_mem(si_pkey_ptr - 8, 24);
|
|
|
- siginfo_pkey = *si_pkey_ptr;
|
|
|
- pkey_assert(siginfo_pkey < NR_PKEYS);
|
|
|
- last_si_pkey = siginfo_pkey;
|
|
|
-
|
|
|
if ((si->si_code == SEGV_MAPERR) ||
|
|
|
(si->si_code == SEGV_ACCERR) ||
|
|
|
(si->si_code == SEGV_BNDERR)) {
|
|
@@ -317,6 +310,13 @@ void signal_handler(int signum, siginfo_t *si, void *vucontext)
|
|
|
exit(4);
|
|
|
}
|
|
|
|
|
|
+ si_pkey_ptr = (u32 *)(((u8 *)si) + si_pkey_offset);
|
|
|
+ dprintf1("si_pkey_ptr: %p\n", si_pkey_ptr);
|
|
|
+ dump_mem((u8 *)si_pkey_ptr - 8, 24);
|
|
|
+ siginfo_pkey = *si_pkey_ptr;
|
|
|
+ pkey_assert(siginfo_pkey < NR_PKEYS);
|
|
|
+ last_si_pkey = siginfo_pkey;
|
|
|
+
|
|
|
dprintf1("signal pkru from xsave: %08x\n", *pkru_ptr);
|
|
|
/* need __rdpkru() version so we do not do shadow_pkru checking */
|
|
|
dprintf1("signal pkru from pkru: %08x\n", __rdpkru());
|