From 3fc1c8298f68d3a13ecac97f4068c1ccffb7d76b Mon Sep 17 00:00:00 2001 From: Anastasia Lyupa Date: Tue, 23 Apr 2013 17:26:37 +0400 Subject: [PATCH] [FIX] Correct addr in do_page_fault_j_pre_code do_page_fault: x86 -> do_page_fault(struct pt_regs *regs, unsigned long error_code) unsigned long address = read_cr2(); arm -> do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) --- driver/us_proc_inst.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/driver/us_proc_inst.c b/driver/us_proc_inst.c index 52adc71..ba35334 100644 --- a/driver/us_proc_inst.c +++ b/driver/us_proc_inst.c @@ -634,7 +634,14 @@ void do_page_fault_j_pre_code(unsigned long addr, unsigned int fsr, struct pt_re } if (is_us_instrumentation()) { + // for x86 do_page_fault is do_page_fault(struct pt_regs *regs, unsigned long error_code) + // instead of do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) for arm +#ifdef CONFIG_X86 + unsigned long address = read_cr2(); + swap_put_entry_data((void *)address, &sa_dpf); +#else /* CONFIG_X86 */ swap_put_entry_data((void *)addr, &sa_dpf); +#endif /* CONFIG_X86 */ } } EXPORT_SYMBOL_GPL(do_page_fault_j_pre_code); -- 2.7.4