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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 4 Sep 2015 10:14:28 -0400
From:	Raphaƫl Beamonte <raphael.beamonte@...il.com>
To:	Jiri Olsa <jolsa@...nel.org>
Cc:	Arnaldo Carvalho de Melo <acme@...nel.org>,
	lkml <linux-kernel@...r.kernel.org>,
	David Ahern <dsahern@...il.com>,
	Ingo Molnar <mingo@...nel.org>,
	Namhyung Kim <namhyung@...nel.org>,
	Peter Zijlstra <a.p.zijlstra@...llo.nl>,
	Matt Fleming <matt@...eblueprint.co.uk>,
	Steven Rostedt <rostedt@...dmis.org>
Subject: Re: [PATCH 11/15] tools lib api: Add mount support for fs

2015-09-02 3:56 GMT-04:00 Jiri Olsa <jolsa@...nel.org>:
> Adding name__mount (where name is in sysfs,procfs,debugfs,tracefs)
> interface that tries to mount the filesystem in case no mount is found.
>
> Link: http://lkml.kernel.org/n/tip-ja49vwfiq2qqkmoxx9yk26lm@git.kernel.org
> Signed-off-by: Jiri Olsa <jolsa@...nel.org>
> ---
>  tools/lib/api/fs/fs.c | 44 +++++++++++++++++++++++++++++++++++++++-----
>  tools/lib/api/fs/fs.h | 15 +++++++++++----
>  2 files changed, 50 insertions(+), 9 deletions(-)

Why automatic mounting the **fs filesystems?
Isn't it better to let the user decide when and where to mount it if
s/he forgot to do it before? Forcing a mount is also potentially
forcing to umount then mount when mounting has been forgotten before.


> diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c
> index ef16d2a83a27..bc93baf33fff 100644
> --- a/tools/lib/api/fs/fs.c
> +++ b/tools/lib/api/fs/fs.c
> @@ -9,6 +9,7 @@
>  #include <sys/stat.h>
>  #include <fcntl.h>
>  #include <unistd.h>
> +#include <sys/mount.h>
>
>  #include "debugfs.h"
>  #include "fs.h"
> @@ -215,16 +216,49 @@ static const char *fs__mountpoint(int idx)
>         return fs__get_mountpoint(fs);
>  }
>
> -#define FS__MOUNTPOINT(name, idx)      \
> +static const char *mount_overload(struct fs *fs)
> +{
> +       size_t name_len = strlen(fs->name);
> +       /* "PERF_" + name + "_ENVIRONMENT" + '\0' */
> +       char upper_name[5 + name_len + 12 + 1];
> +
> +       snprintf(upper_name, name_len, "PERF_%s_ENVIRONMENT", fs->name);
> +       mem_toupper(upper_name, name_len);
> +
> +       return getenv(upper_name) ?: *fs->mounts;
> +}
> +
> +static const char *fs__mount(int idx)
> +{
> +       struct fs *fs = &fs__entries[idx];
> +       const char *mountpoint;
> +
> +       if (fs__mountpoint(idx))
> +               return (const char *)fs->path;
> +
> +       mountpoint = mount_overload(fs);
> +
> +       if (mount(NULL, mountpoint, fs->name, 0, NULL) < 0)
> +               return NULL;
> +
> +       return fs__check_mounts(fs) ? fs->path : NULL;
> +}
> +
> +#define FS(name, idx)                  \
>  const char *name##__mountpoint(void)   \
>  {                                      \
>         return fs__mountpoint(idx);     \
> +}                                      \
> +                                       \
> +const char *name##__mount(void)                \
> +{                                      \
> +       return fs__mount(idx);          \
>  }
>
> -FS__MOUNTPOINT(sysfs,   FS__SYSFS);
> -FS__MOUNTPOINT(procfs,  FS__PROCFS);
> -FS__MOUNTPOINT(debugfs, FS__DEBUGFS);
> -FS__MOUNTPOINT(tracefs, FS__TRACEFS);
> +FS(sysfs,   FS__SYSFS);
> +FS(procfs,  FS__PROCFS);
> +FS(debugfs, FS__DEBUGFS);
> +FS(tracefs, FS__TRACEFS);
>
>  int filename__read_int(const char *filename, int *value)
>  {
> diff --git a/tools/lib/api/fs/fs.h b/tools/lib/api/fs/fs.h
> index 9013227ae0d1..a9627ea5e6ae 100644
> --- a/tools/lib/api/fs/fs.h
> +++ b/tools/lib/api/fs/fs.h
> @@ -9,10 +9,17 @@
>  #define PATH_MAX 4096
>  #endif
>
> -const char *sysfs__mountpoint(void);
> -const char *procfs__mountpoint(void);
> -const char *debugfs__mountpoint(void);
> -const char *tracefs__mountpoint(void);
> +#define FS(name)                               \
> +       const char *name##__mountpoint(void);   \
> +       const char *name##__mount(void);
> +
> +FS(sysfs)
> +FS(procfs)
> +FS(debugfs)
> +FS(tracefs)
> +
> +#undef FS
> +
>
>  int filename__read_int(const char *filename, int *value);
>  int sysctl__read_int(const char *sysctl, int *value);
> --
> 2.4.3
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ