[FIX] Correct addr in do_page_fault_j_pre_code
[kernel/swap-modules.git] / 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);