Drop __used annotations for extable handlers, and use an "X" constraint.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
}
#ifdef __i386__
-static bool __used ex_pf_user(struct cpu_regs *regs,
- const struct extable_entry *ex)
+static bool ex_pf_user(struct cpu_regs *regs, const struct extable_entry *ex)
{
if ( regs->entry_vector == X86_EXC_PF && read_cr2() == 0xfff )
{
_ASM_EXTABLE_HANDLER(1b, 3b, ex_pf_user)
_ASM_EXTABLE_HANDLER(0xfff, 2b, ex_pf_user)
: "+a" (leaked)
- : [ptr] "r" (0xfff));
+ : [ptr] "r" (0xfff),
+ "X" (ex_pf_user));
if ( leaked )
panic("Xen's SMEP/SMAP settings leaked into guest context.\n"
* Custom extable handler, linked to all `invlpg` instruction which are
* expected not to fault.
*/
-static bool __used ex_fail(struct cpu_regs *regs,
- const struct extable_entry *ex)
+static bool ex_fail(struct cpu_regs *regs, const struct extable_entry *ex)
{
char buf[16];
: [zero] "q" (0),
[ad] "i" (_PAGE_AD),
[pte1] "m" (pae_l1_identmap[1]),
- [pte2] "m" (pae_l1_identmap[2])
+ [pte2] "m" (pae_l1_identmap[2]),
+ "X" (ex_fail)
: "memory");
return ((test_ad(pae_l1_identmap[1]) << 0) |
: [zero] "q" (0),
[ad] "i" (_PAGE_AD),
[pte1] "m" (pae_l1_identmap[1]),
- [pte2] "m" (pae_l1_identmap[2])
+ [pte2] "m" (pae_l1_identmap[2]),
+ "X" (ex_fail)
: "memory");
return ((test_ad(pae_l1_identmap[1]) << 0) |
asm volatile (_ASM_MAYBE_XEN_FEP
"1: invlpg %%fs:(%0); 2:"
_ASM_EXTABLE_HANDLER(1b, 2b, ex_fail)
- :: "r" (linear));
+ :: "r" (linear), "X" (ex_fail));
}
static void test_no_fault(void)
}
static bool test_extable_handler_handler_run;
-static bool __used test_extable_handler_handler(struct cpu_regs *regs,
- const struct extable_entry *ex)
+static bool test_extable_handler_handler(struct cpu_regs *regs,
+ const struct extable_entry *ex)
{
test_extable_handler_handler_run = true;
regs->ip = ex->fixup;
asm volatile ("1: ud2a; 2:"
_ASM_EXTABLE_HANDLER(1b, 2b,
- test_extable_handler_handler));
+ test_extable_handler_handler)
+ :: "X" (test_extable_handler_handler));
if ( !test_extable_handler_handler_run )
xtf_failure("Fail: Custom handler didn't run\n");