[FIX] Correct addr in do_page_fault_j_pre_code
authorAnastasia Lyupa <a.lyupa@samsung.com>
Tue, 23 Apr 2013 13:26:37 +0000 (17:26 +0400)
committerAnastasia Lyupa <a.lyupa@samsung.com>
Tue, 23 Apr 2013 13:26:37 +0000 (17:26 +0400)
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

index 52adc71..ba35334 100644 (file)
@@ -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);