[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <5a9ef9a0c8ed688e1566fc7380915837@natalenko.name>
Date: Tue, 13 Nov 2018 18:27:05 +0100
From: Oleksandr Natalenko <oleksandr@...alenko.name>
To: Timofey Titovets <timofey.titovets@...esis.ru>
Cc: linux-doc@...r.kernel.org,
Linux Kernel <linux-kernel@...r.kernel.org>,
linux-mm@...ck.org, Matthew Wilcox <willy@...radead.org>
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)
Powered by blists - more mailing lists