Messages in this thread | | | Date | Tue, 13 Nov 2018 18:27:05 +0100 | From | Oleksandr Natalenko <> | Subject | Re: [PATCH V3] KSM: allow dedup all tasks memory |
| |
On 13.11.2018 18:10, Timofey Titovets wrote: > You mean try do something, like that right? > > read_lock(&tasklist_lock); > <get reference to task> > task_lock(task); > read_unlock(&tasklist_lock); > last_pid = task_pid_nr(task); > ksm_import_task_vma(task); > task_unlock(task);
No, task_lock() uses spin_lock() under the bonnet, so this will be the same.
Since the sole reason you have to lock/acquire/get a reference to task_struct here is to prevent it from disappearing, I was thinking about using get_task_struct(), which just increases atomic task_struct.usage value (IOW, takes a reference). I *hope* this will be enough to prevent task_struct from disappearing in the meantime.
Someone, correct me if I'm wrong.
-- Oleksandr Natalenko (post-factum)
| |