hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
kernel/arch/arm64/mm/extable.c
....@@ -9,10 +9,19 @@
99 int fixup_exception(struct pt_regs *regs)
1010 {
1111 const struct exception_table_entry *fixup;
12
+ unsigned long addr;
1213
13
- fixup = search_exception_tables(instruction_pointer(regs));
14
+ addr = instruction_pointer(regs);
15
+
16
+ /* Search the BPF tables first, these are formatted differently */
17
+ fixup = search_bpf_extables(addr);
1418 if (fixup)
15
- regs->pc = (unsigned long)&fixup->fixup + fixup->fixup;
19
+ return arm64_bpf_fixup_exception(fixup, regs);
1620
17
- return fixup != NULL;
21
+ fixup = search_exception_tables(addr);
22
+ if (!fixup)
23
+ return 0;
24
+
25
+ regs->pc = (unsigned long)&fixup->fixup + fixup->fixup;
26
+ return 1;
1827 }