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: Wed, 22 May 2019 10:18:32 -0300 From: Arnaldo Carvalho de Melo <arnaldo.melo@...il.com> To: Namhyung Kim <namhyung@...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 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? - Arnaldo > + return ns; > +} > + > static int __thread__set_namespaces(struct thread *thread, u64 timestamp, > struct namespaces_event *event) > { > - struct namespaces *new, *curr = thread__namespaces(thread); > + struct namespaces *new, *curr = __thread__namespaces(thread); > > new = namespaces__new(event); > if (!new) > -- > 2.21.0.1020.gf2820cf01a-goog -- - Arnaldo
Powered by blists - more mailing lists