Re: [PATCH] perf tools: Restore proper cwd on return from mnt ns

From: Jiri Olsa
Date: Tue Nov 20 2018 - 12:42:20 EST


On Tue, Nov 20, 2018 at 12:56:04PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Tue, Nov 20, 2018 at 11:56:18AM +0100, Jiri Olsa escreveu:
> > On Mon, Nov 19, 2018 at 08:10:06AM -0800, Arnaldo Carvalho de Melo wrote:
> > > Em Thu, Nov 01, 2018 at 06:00:01PM +0100, Jiri Olsa escreveu:
> > > > Adding the current working directory to be part of the cookie
> > > > and restoring it in the nsinfo__mountns_exit call.
> > >
> > > > diff --git a/tools/perf/util/namespaces.c b/tools/perf/util/namespaces.c
> > > > index cf8bd123cf73..fb0458b7e6aa 100644
> > > > --- a/tools/perf/util/namespaces.c
> > > > +++ b/tools/perf/util/namespaces.c
> > >
> > > > @@ -199,9 +201,13 @@ void nsinfo__mountns_enter(struct nsinfo *nsi,
> > > > if (snprintf(curpath, PATH_MAX, "/proc/self/ns/mnt") >= PATH_MAX)
> > > > return;
> > >
> > > > + oldcwd = get_current_dir_name();
> > >
> > > Breaks the build with bionic (Android), where get_current_dir_name() is
> > > not available:
> > >
> > > /tmp/build/perf/libperf.a(libperf-in.o):hist.c:function nsinfo__mountns_enter: error: undefined reference to 'get_current_dir_name'
> > > collect2: error: ld returned 1 exit status
> > > Makefile.perf:534: recipe for target '/tmp/build/perf/perf' failed
> > > make[2]: *** [/tmp/build/perf/perf] Error 1
> > > Makefile.perf:206: recipe for target 'sub-make' failed
> > > make[1]: *** [sub-make] Error 2
> > > Makefile:69: recipe for target 'all' failed
> > > make: *** [all] Error 2
> > > make: Leaving directory '/git/linux/tools/perf'
> > > [root@seventh ~]#
> > >
> > > The container builds are ongoing, its possoble that this becomes an
> > > issue in uCLibc, wasn't on musl libc (Alpine Linux).
> >
> > will check, thanks
>
> I fixed this already, by adding a test for that get_current_dir_name()
> function and a simple implementation based on strdup(getcwd(bf)), take a
> look at my perf/urgent branch

ok, I saw it.. but it seems little too much for a single function to me

jirka