Re: [PATCH v10 7/9] proc: move hidepid values to uapi as they are user interface to mount

From: Kees Cook
Date: Fri Apr 03 2020 - 19:59:30 EST


On Thu, Apr 02, 2020 at 11:58:28AM -0500, Eric W. Biederman wrote:
>
> I will just say that I do not understand exporting this to the uapi
> headers. Why do we want to export the enumeration names?
>
> I understand that the values are uapi. This looks like it will make it
> difficult to make changes that rename enumeration values to make
> the code more readable.
>
> Given that this patchset goes immediately to using string enumerated
> values, I also don't understand the point of exporting
> HIDEPID_NOT_PTRACEABLE. I don't think we need to ever let
> people use the numeric value.
>
> My sense is that if we are switching to string values we should
> just leave the existing numeric values as backwards compatiblity
> and not do anything to make them easier to use.

Yeah, that's what I had suggested too. Let's not export this to UAPI.

-Kees

>
> Eric
>
>
> Alexey Gladkov <gladkov.alexey@xxxxxxxxx> writes:
>
> > Suggested-by: Alexey Dobriyan <adobriyan@xxxxxxxxx>
> > Reviewed-by: Alexey Dobriyan <adobriyan@xxxxxxxxx>
> > Signed-off-by: Alexey Gladkov <gladkov.alexey@xxxxxxxxx>
> > ---
> > include/linux/proc_fs.h | 9 +--------
> > include/uapi/linux/proc_fs.h | 13 +++++++++++++
> > 2 files changed, 14 insertions(+), 8 deletions(-)
> > create mode 100644 include/uapi/linux/proc_fs.h
> >
> > diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
> > index afd38cae2339..d259817ec913 100644
> > --- a/include/linux/proc_fs.h
> > +++ b/include/linux/proc_fs.h
> > @@ -7,6 +7,7 @@
> >
> > #include <linux/types.h>
> > #include <linux/fs.h>
> > +#include <uapi/linux/proc_fs.h>
> >
> > struct proc_dir_entry;
> > struct seq_file;
> > @@ -27,14 +28,6 @@ struct proc_ops {
> > unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
> > };
> >
> > -/* definitions for hide_pid field */
> > -enum {
> > - HIDEPID_OFF = 0,
> > - HIDEPID_NO_ACCESS = 1,
> > - HIDEPID_INVISIBLE = 2,
> > - HIDEPID_NOT_PTRACEABLE = 4, /* Limit pids to only ptraceable pids */
> > -};
> > -
> > /* definitions for proc mount option pidonly */
> > enum {
> > PROC_PIDONLY_OFF = 0,
> > diff --git a/include/uapi/linux/proc_fs.h b/include/uapi/linux/proc_fs.h
> > new file mode 100644
> > index 000000000000..dc6d717aa6ec
> > --- /dev/null
> > +++ b/include/uapi/linux/proc_fs.h
> > @@ -0,0 +1,13 @@
> > +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
> > +#ifndef _UAPI_PROC_FS_H
> > +#define _UAPI_PROC_FS_H
> > +
> > +/* definitions for hide_pid field */
> > +enum {
> > + HIDEPID_OFF = 0,
> > + HIDEPID_NO_ACCESS = 1,
> > + HIDEPID_INVISIBLE = 2,
> > + HIDEPID_NOT_PTRACEABLE = 4,
> > +};
> > +
> > +#endif

--
Kees Cook