[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20171009161737.ea8c62441cc12dfd909ee0b2@linux-foundation.org>
Date: Mon, 9 Oct 2017 16:17:37 -0700
From: Andrew Morton <akpm@...ux-foundation.org>
To: Gargi Sharma <gs051095@...il.com>
Cc: linux-kernel@...r.kernel.org, riel@...riel.com,
julia.lawall@...6.fr, mingo@...nel.org, pasha.tatashin@...cle.com,
ktkhai@...tuozzo.com, oleg@...hat.com, ebiederm@...ssion.com,
hch@...radead.org
Subject: Re: [PATCH v4 1/2] pid: Replace pid bitmap implementation with IDR
API
On Mon, 9 Oct 2017 17:13:43 -0400 Gargi Sharma <gs051095@...il.com> wrote:
> This patch replaces the current bitmap implemetation for
> Process ID allocation. Functions that are no longer required,
> for example, free_pidmap(), alloc_pidmap(), etc. are removed.
> The rest of the functions are modified to use the IDR API.
> The change was made to make the PID allocation less complex by
> replacing custom code with calls to generic API.
>
I can't say I really understand the locking here.
>
> ...
>
> @@ -240,17 +230,11 @@ void zap_pid_ns_processes(struct pid_namespace *pid_ns)
> *
> */
> read_lock(&tasklist_lock);
> - nr = next_pidmap(pid_ns, 1);
> - while (nr > 0) {
> - rcu_read_lock();
> -
> - task = pid_task(find_vpid(nr), PIDTYPE_PID);
> + nr = 2;
> + idr_for_each_entry_continue(&pid_ns->idr, pid, nr) {
> + task = pid_task(pid, PIDTYPE_PID);
> if (task && !__fatal_signal_pending(task))
> send_sig_info(SIGKILL, SEND_SIG_FORCED, task);
> -
> - rcu_read_unlock();
> -
> - nr = next_pidmap(pid_ns, nr);
> }
> read_unlock(&tasklist_lock);
Especially here. I don't think pidmap_lock is held. Is that IDR
iteration safe?
Powered by blists - more mailing lists