ANDROID: x86: disable CFI for do_syscall_*

x86 doesn't use syscall wrappers in 4.14, which means do_syscall_*
function end up making an indirect call using a mismatching function
pointer. Disable CFI to work around the type mismatch.

Bug: 145297900
Change-Id: I91dd2bd94f9b5174c03cc3d3a1007061f7fe332e
Signed-off-by: Sami Tolvanen <samitolvanen@google.com>
This commit is contained in:
Sami Tolvanen 2020-04-29 17:29:12 -07:00
parent 9355c9b806
commit 09ae6b7b16

View File

@ -271,7 +271,7 @@ __visible inline void syscall_return_slowpath(struct pt_regs *regs)
}
#ifdef CONFIG_X86_64
__visible void do_syscall_64(struct pt_regs *regs)
__nocfi __visible void do_syscall_64(struct pt_regs *regs)
{
struct thread_info *ti = current_thread_info();
unsigned long nr = regs->orig_ax;
@ -305,7 +305,7 @@ __visible void do_syscall_64(struct pt_regs *regs)
* extremely hot in workloads that use it, and it's usually called from
* do_fast_syscall_32, so forcibly inline it to improve performance.
*/
static __always_inline void do_syscall_32_irqs_on(struct pt_regs *regs)
static __nocfi __always_inline void do_syscall_32_irqs_on(struct pt_regs *regs)
{
struct thread_info *ti = current_thread_info();
unsigned int nr = (unsigned int)regs->orig_ax;