struct sspt_procs *procs;
procs = sspt_procs_get_by_task_or_new(task);
if (procs) {
- unsigned long page = addr & PAGE_MASK;
- sspt_procs_install_page(procs, page);
+ if (procs->first_install) {
+ unsigned long page = addr & PAGE_MASK;
+ sspt_procs_install_page(procs, page);
+ } else {
+ sspt_procs_install(procs);
+ }
}
}
procs->task = task;
procs->dentry = dentry;
procs->sm = NULL;
+ procs->first_install = 0;
INIT_LIST_HEAD(&procs->file_list);
}
struct task_struct *task = procs->task;
struct mm_struct *mm;
+ procs->first_install = 1;
+
atomic = in_atomic();
mm_read_lock(task, mm, atomic, lock);