diff options
author | Vyacheslav Cherkashin <v.cherkashin@samsung.com> | 2013-06-18 11:08:58 +0400 |
---|---|---|
committer | Vyacheslav Cherkashin <v.cherkashin@samsung.com> | 2013-06-18 11:08:58 +0400 |
commit | df4cea89d9e13e810f5fffa6a9bf32345c7a4bf4 (patch) | |
tree | d2053fe5e732653c59ddd834dc2ca0b39d444514 /us_manager | |
parent | 8cb77c42fba70f8de76b9fe6d24367fb3d88fd57 (diff) | |
download | swap-modules-df4cea89d9e13e810f5fffa6a9bf32345c7a4bf4.tar.gz swap-modules-df4cea89d9e13e810f5fffa6a9bf32345c7a4bf4.tar.bz2 swap-modules-df4cea89d9e13e810f5fffa6a9bf32345c7a4bf4.zip |
[REFACTOR] redesign ret_handler_cp()
Diffstat (limited to 'us_manager')
-rw-r--r-- | us_manager/helper.c | 13 | ||||
-rw-r--r-- | us_manager/pf/pf_group.c | 1 |
2 files changed, 6 insertions, 8 deletions
diff --git a/us_manager/helper.c b/us_manager/helper.c index d2b8590b..62ebc7fa 100644 --- a/us_manager/helper.c +++ b/us_manager/helper.c @@ -118,20 +118,17 @@ static int ret_handler_cp(struct kretprobe_instance *ri, struct pt_regs *regs) { struct task_struct *task = (struct task_struct *)regs_return_value(regs); - return 0; - if(!task || IS_ERR(task)) goto out; if(task->mm != current->mm) { /* check flags CLONE_VM */ rm_uprobes_child(task); - if (check_task(current)) { - struct sspt_proc *proc; - - proc = sspt_proc_create(task); - sspt_proc_install(proc); - } + /* + * Ignoring page_addr, because it is + * first calling call_page_fault() + */ + call_page_fault(task, 0xbadc0de); } out: return 0; diff --git a/us_manager/pf/pf_group.c b/us_manager/pf/pf_group.c index e1c15080..3501e5ac 100644 --- a/us_manager/pf/pf_group.c +++ b/us_manager/pf/pf_group.c @@ -235,6 +235,7 @@ void call_page_fault(struct task_struct *task, unsigned long page_addr) struct pf_group *pfg; list_for_each_entry(pfg, &pfg_list, list) { + /* FIXME: install page more then once */ install_page_by_pfg(pfg, task, page_addr); } } |