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] [day] [month] [year] [list]
Date:   Thu, 14 Mar 2019 13:29:12 -0400
From:   "J. Bruce Fields" <bfields@...ldses.org>
To:     David Howells <dhowells@...hat.com>
Cc:     viro@...iv.linux.org.uk, Jeff Layton <jlayton@...nel.org>,
        linux-nfs@...r.kernel.org, linux-fsdevel@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH 20/38] vfs: Convert nfsctl to fs_context

Fine by me.

(Are these for 5.1 or 5.2?  Just wondering what to do with some other
ongoing work in the same area.  Any conflicts are probably trivial,
though, so no big deal either way.)

--b.

On Thu, Mar 14, 2019 at 04:11:34PM +0000, David Howells wrote:
> Signed-off-by: David Howells <dhowells@...hat.com>
> cc: "J. Bruce Fields" <bfields@...ldses.org>
> cc: Jeff Layton <jlayton@...nel.org>
> cc: linux-nfs@...r.kernel.org
> ---
> 
>  fs/nfsd/nfsctl.c |   33 ++++++++++++++++++++++++++-------
>  1 file changed, 26 insertions(+), 7 deletions(-)
> 
> diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> index f2feb2d11bae..d4eb4f34a94c 100644
> --- a/fs/nfsd/nfsctl.c
> +++ b/fs/nfsd/nfsctl.c
> @@ -7,6 +7,7 @@
>  #include <linux/slab.h>
>  #include <linux/namei.h>
>  #include <linux/ctype.h>
> +#include <linux/fs_context.h>
>  
>  #include <linux/sunrpc/svcsock.h>
>  #include <linux/lockd/lockd.h>
> @@ -1146,7 +1147,7 @@ static ssize_t write_v4_end_grace(struct file *file, char *buf, size_t size)
>   *	populating the filesystem.
>   */
>  
> -static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
> +static int nfsd_fill_super(struct super_block *sb, struct fs_context *fc)
>  {
>  	static const struct tree_descr nfsd_files[] = {
>  		[NFSD_List] = {"exports", &exports_nfsd_operations, S_IRUGO},
> @@ -1176,15 +1177,33 @@ static int nfsd_fill_super(struct super_block * sb, void * data, int silent)
>  #endif
>  		/* last one */ {""}
>  	};
> -	get_net(sb->s_fs_info);
> +
>  	return simple_fill_super(sb, 0x6e667364, nfsd_files);
>  }
>  
> -static struct dentry *nfsd_mount(struct file_system_type *fs_type,
> -	int flags, const char *dev_name, void *data)
> +static int nfsd_fs_get_tree(struct fs_context *fc)
> +{
> +	fc->s_fs_info = get_net(fc->net_ns);
> +	return vfs_get_super(fc, vfs_get_keyed_super, nfsd_fill_super);
> +}
> +
> +static void nfsd_fs_free_fc(struct fs_context *fc)
> +{
> +	if (fc->s_fs_info)
> +		put_net(fc->s_fs_info);
> +}
> +
> +static const struct fs_context_operations nfsd_fs_context_ops = {
> +	.free		= nfsd_fs_free_fc,
> +	.get_tree	= nfsd_fs_get_tree,
> +};
> +
> +static int nfsd_init_fs_context(struct fs_context *fc)
>  {
> -	struct net *net = current->nsproxy->net_ns;
> -	return mount_ns(fs_type, flags, data, net, net->user_ns, nfsd_fill_super);
> +	put_user_ns(fc->user_ns);
> +	fc->user_ns = get_user_ns(fc->net_ns->user_ns);
> +	fc->ops = &nfsd_fs_context_ops;
> +	return 0;
>  }
>  
>  static void nfsd_umount(struct super_block *sb)
> @@ -1198,7 +1217,7 @@ static void nfsd_umount(struct super_block *sb)
>  static struct file_system_type nfsd_fs_type = {
>  	.owner		= THIS_MODULE,
>  	.name		= "nfsd",
> -	.mount		= nfsd_mount,
> +	.init_fs_context = nfsd_init_fs_context,
>  	.kill_sb	= nfsd_umount,
>  };
>  MODULE_ALIAS_FS("nfsd");

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ