lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 23 May 2019 11:36:38 +0900 From: Namhyung Kim <namhyung@...nel.org> To: Arnaldo Carvalho de Melo <acme@...nel.org> Cc: Jiri Olsa <jolsa@...hat.com>, LKML <linux-kernel@...r.kernel.org>, Krister Johansen <kjlx@...pleofstupid.com>, Hari Bathini <hbathini@...ux.vnet.ibm.com> Subject: Re: [PATCH 1/3] perf tools: Protect reading thread's namespace Hi Arnaldo, On Wed, May 22, 2019 at 10:18:32AM -0300, Arnaldo Carvalho de Melo wrote: > Em Wed, May 22, 2019 at 02:32:48PM +0900, Namhyung Kim escreveu: > > It seems that the current code lacks holding the namespace lock in > > thread__namespaces(). Otherwise it can see inconsistent results. > > > > Signed-off-by: Namhyung Kim <namhyung@...nel.org> > > --- > > tools/perf/util/thread.c | 15 +++++++++++++-- > > 1 file changed, 13 insertions(+), 2 deletions(-) > > > > diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c > > index 403045a2bbea..b413ba5b9835 100644 > > --- a/tools/perf/util/thread.c > > +++ b/tools/perf/util/thread.c > > @@ -133,7 +133,7 @@ void thread__put(struct thread *thread) > > } > > } > > > > -struct namespaces *thread__namespaces(const struct thread *thread) > > +static struct namespaces *__thread__namespaces(const struct thread *thread) > > { > > if (list_empty(&thread->namespaces_list)) > > return NULL; > > @@ -141,10 +141,21 @@ struct namespaces *thread__namespaces(const struct thread *thread) > > return list_first_entry(&thread->namespaces_list, struct namespaces, list); > > } > > > > +struct namespaces *thread__namespaces(const struct thread *thread) > > +{ > > + struct namespaces *ns; > > + > > + down_read((struct rw_semaphore *)&thread->namespaces_lock); > > + ns = __thread__namespaces(thread); > > + up_read((struct rw_semaphore *)&thread->namespaces_lock); > > + > > Humm, so we need to change thread__namespaces() to remove that const > instead of throwing it away with that cast, right? Yes, that's possible too. Note that thread__comm_str() has the same issue as well. Thanks, Namhyung
Powered by blists - more mailing lists