Message ID | 1472483029-135090-1-git-send-email-seth.forshee@canonical.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 29/08/16 17:03, Seth Forshee wrote: > Mounting proc in user namespace containers fails if the xenbus > filesystem is mounted on /proc/xen because this directory fails > the "permanently empty" test. proc_create_mount_point() exists > specifically to create such mountpoints in proc but is currently > proc-internal. Export this interface to modules, then use it in > xenbus when creating /proc/xen. > > Signed-off-by: Seth Forshee <seth.forshee@canonical.com> > --- > drivers/xen/xenbus/xenbus_probe.c | 2 +- > fs/proc/generic.c | 1 + > fs/proc/internal.h | 1 - > include/linux/proc_fs.h | 2 ++ > 4 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c > index 33a31cfef55d..b5c1dec4a7c2 100644 > --- a/drivers/xen/xenbus/xenbus_probe.c > +++ b/drivers/xen/xenbus/xenbus_probe.c > @@ -826,7 +826,7 @@ static int __init xenbus_init(void) > * Create xenfs mountpoint in /proc for compatibility with > * utilities that expect to find "xenbus" under "/proc/xen". > */ > - proc_mkdir("xen", NULL); > + proc_create_mount_point("xen"); > #endif > > out_error: > diff --git a/fs/proc/generic.c b/fs/proc/generic.c > index c633476616e0..be014c544d50 100644 > --- a/fs/proc/generic.c > +++ b/fs/proc/generic.c > @@ -477,6 +477,7 @@ struct proc_dir_entry *proc_create_mount_point(const char *name) > } > return ent; > } > +EXPORT_SYMBOL(proc_create_mount_point); EXPORT_SYMBOL_GPL()? Juergen
On 29/08/16 16:03, Seth Forshee wrote: > Mounting proc in user namespace containers fails if the xenbus > filesystem is mounted on /proc/xen because this directory fails > the "permanently empty" test. proc_create_mount_point() exists > specifically to create such mountpoints in proc but is currently > proc-internal. Export this interface to modules, then use it in > xenbus when creating /proc/xen. Acked-by: David Vrabel <david.vrabel@citrix.com> This either needs to be acked by the fs maintainer or go via their tree but you don't appear to have Cc'd the relevant people or lists. David
On Tue, Aug 30, 2016 at 04:48:08PM +0200, Juergen Gross wrote: > On 29/08/16 17:03, Seth Forshee wrote: > > Mounting proc in user namespace containers fails if the xenbus > > filesystem is mounted on /proc/xen because this directory fails > > the "permanently empty" test. proc_create_mount_point() exists > > specifically to create such mountpoints in proc but is currently > > proc-internal. Export this interface to modules, then use it in > > xenbus when creating /proc/xen. > > > > Signed-off-by: Seth Forshee <seth.forshee@canonical.com> > > --- > > drivers/xen/xenbus/xenbus_probe.c | 2 +- > > fs/proc/generic.c | 1 + > > fs/proc/internal.h | 1 - > > include/linux/proc_fs.h | 2 ++ > > 4 files changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c > > index 33a31cfef55d..b5c1dec4a7c2 100644 > > --- a/drivers/xen/xenbus/xenbus_probe.c > > +++ b/drivers/xen/xenbus/xenbus_probe.c > > @@ -826,7 +826,7 @@ static int __init xenbus_init(void) > > * Create xenfs mountpoint in /proc for compatibility with > > * utilities that expect to find "xenbus" under "/proc/xen". > > */ > > - proc_mkdir("xen", NULL); > > + proc_create_mount_point("xen"); > > #endif > > > > out_error: > > diff --git a/fs/proc/generic.c b/fs/proc/generic.c > > index c633476616e0..be014c544d50 100644 > > --- a/fs/proc/generic.c > > +++ b/fs/proc/generic.c > > @@ -477,6 +477,7 @@ struct proc_dir_entry *proc_create_mount_point(const char *name) > > } > > return ent; > > } > > +EXPORT_SYMBOL(proc_create_mount_point); > > EXPORT_SYMBOL_GPL()? Other similar sorts of calls in proc (proc_mkdir in particular) are EXPORT_SYMBOL, so I guessed this one should follow suit. But if it should be EXPORT_SYMOBL_GPL then that's fine too. Thanks, Seth
On Tue, Aug 30, 2016 at 04:00:03PM +0100, David Vrabel wrote: > On 29/08/16 16:03, Seth Forshee wrote: > > Mounting proc in user namespace containers fails if the xenbus > > filesystem is mounted on /proc/xen because this directory fails > > the "permanently empty" test. proc_create_mount_point() exists > > specifically to create such mountpoints in proc but is currently > > proc-internal. Export this interface to modules, then use it in > > xenbus when creating /proc/xen. > > Acked-by: David Vrabel <david.vrabel@citrix.com> > > This either needs to be acked by the fs maintainer or go via their tree > but you don't appear to have Cc'd the relevant people or lists. Huh. I use a script which uses get_maintainer.pl to add the relevant maintainers and lists, but appaerntly that failed me this time. Even running get_maintainer.pl by hand though it doesn't suggest linux-fsdevel though, and it seems it should. Thanks, Seth
On 30/08/16 16:10, Seth Forshee wrote: > On Tue, Aug 30, 2016 at 04:00:03PM +0100, David Vrabel wrote: >> On 29/08/16 16:03, Seth Forshee wrote: >>> Mounting proc in user namespace containers fails if the xenbus >>> filesystem is mounted on /proc/xen because this directory fails >>> the "permanently empty" test. proc_create_mount_point() exists >>> specifically to create such mountpoints in proc but is currently >>> proc-internal. Export this interface to modules, then use it in >>> xenbus when creating /proc/xen. >> >> Acked-by: David Vrabel <david.vrabel@citrix.com> >> >> This either needs to be acked by the fs maintainer or go via their tree >> but you don't appear to have Cc'd the relevant people or lists. > > Huh. I use a script which uses get_maintainer.pl to add the relevant > maintainers and lists, but appaerntly that failed me this time. Even > running get_maintainer.pl by hand though it doesn't suggest > linux-fsdevel though, and it seems it should. I tend not rely on get_maintainer.pl because it isn't very reliable. From MAINTAINERS you want: FILESYSTEMS (VFS and infrastructure) M: Alexander Viro <viro@zeniv.linux.org.uk> L: linux-fsdevel@vger.kernel.org S: Maintained F: fs/* David
diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c index 33a31cfef55d..b5c1dec4a7c2 100644 --- a/drivers/xen/xenbus/xenbus_probe.c +++ b/drivers/xen/xenbus/xenbus_probe.c @@ -826,7 +826,7 @@ static int __init xenbus_init(void) * Create xenfs mountpoint in /proc for compatibility with * utilities that expect to find "xenbus" under "/proc/xen". */ - proc_mkdir("xen", NULL); + proc_create_mount_point("xen"); #endif out_error: diff --git a/fs/proc/generic.c b/fs/proc/generic.c index c633476616e0..be014c544d50 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c @@ -477,6 +477,7 @@ struct proc_dir_entry *proc_create_mount_point(const char *name) } return ent; } +EXPORT_SYMBOL(proc_create_mount_point); struct proc_dir_entry *proc_create_data(const char *name, umode_t mode, struct proc_dir_entry *parent, diff --git a/fs/proc/internal.h b/fs/proc/internal.h index 7931c558c192..ff7259559d70 100644 --- a/fs/proc/internal.h +++ b/fs/proc/internal.h @@ -195,7 +195,6 @@ static inline bool is_empty_pde(const struct proc_dir_entry *pde) { return S_ISDIR(pde->mode) && !pde->proc_iops; } -struct proc_dir_entry *proc_create_mount_point(const char *name); /* * inode.c diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index b97bf2ef996e..8bd2f726436a 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h @@ -21,6 +21,7 @@ extern struct proc_dir_entry *proc_mkdir_data(const char *, umode_t, struct proc_dir_entry *, void *); extern struct proc_dir_entry *proc_mkdir_mode(const char *, umode_t, struct proc_dir_entry *); +struct proc_dir_entry *proc_create_mount_point(const char *name); extern struct proc_dir_entry *proc_create_data(const char *, umode_t, struct proc_dir_entry *, @@ -56,6 +57,7 @@ static inline struct proc_dir_entry *proc_symlink(const char *name, struct proc_dir_entry *parent,const char *dest) { return NULL;} static inline struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent) {return NULL;} +static inline struct proc_dir_entry *proc_create_mount_point(const char *name) { return NULL; } static inline struct proc_dir_entry *proc_mkdir_data(const char *name, umode_t mode, struct proc_dir_entry *parent, void *data) { return NULL; } static inline struct proc_dir_entry *proc_mkdir_mode(const char *name,
Mounting proc in user namespace containers fails if the xenbus filesystem is mounted on /proc/xen because this directory fails the "permanently empty" test. proc_create_mount_point() exists specifically to create such mountpoints in proc but is currently proc-internal. Export this interface to modules, then use it in xenbus when creating /proc/xen. Signed-off-by: Seth Forshee <seth.forshee@canonical.com> --- drivers/xen/xenbus/xenbus_probe.c | 2 +- fs/proc/generic.c | 1 + fs/proc/internal.h | 1 - include/linux/proc_fs.h | 2 ++ 4 files changed, 4 insertions(+), 2 deletions(-)