Loading fs/nfsd/export.c +11 −4 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ static struct svc_export *svc_export_update(struct svc_export *new, struct svc_export *old); static struct svc_export *svc_export_lookup(struct svc_export *); static int check_export(struct inode *inode, int flags, unsigned char *uuid) static int check_export(struct inode *inode, int *flags, unsigned char *uuid) { /* Loading @@ -367,6 +367,13 @@ static int check_export(struct inode *inode, int flags, unsigned char *uuid) !S_ISREG(inode->i_mode)) return -ENOTDIR; /* * Mountd should never pass down a writeable V4ROOT export, but, * just to make sure: */ if (*flags & NFSEXP_V4ROOT) *flags |= NFSEXP_READONLY; /* There are two requirements on a filesystem to be exportable. * 1: We must be able to identify the filesystem from a number. * either a device number (so FS_REQUIRES_DEV needed) Loading @@ -375,7 +382,7 @@ static int check_export(struct inode *inode, int flags, unsigned char *uuid) * This means that s_export_op must be set. */ if (!(inode->i_sb->s_type->fs_flags & FS_REQUIRES_DEV) && !(flags & NFSEXP_FSID) && !(*flags & NFSEXP_FSID) && uuid == NULL) { dprintk("exp_export: export of non-dev fs without fsid\n"); return -EINVAL; Loading Loading @@ -590,7 +597,7 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen) goto out4; } err = check_export(exp.ex_path.dentry->d_inode, exp.ex_flags, err = check_export(exp.ex_path.dentry->d_inode, &exp.ex_flags, exp.ex_uuid); if (err) goto out4; Loading Loading @@ -1029,7 +1036,7 @@ exp_export(struct nfsctl_export *nxp) goto finish; } err = check_export(path.dentry->d_inode, nxp->ex_flags, NULL); err = check_export(path.dentry->d_inode, &nxp->ex_flags, NULL); if (err) goto finish; err = -ENOMEM; Loading Loading
fs/nfsd/export.c +11 −4 Original line number Diff line number Diff line Loading @@ -355,7 +355,7 @@ static struct svc_export *svc_export_update(struct svc_export *new, struct svc_export *old); static struct svc_export *svc_export_lookup(struct svc_export *); static int check_export(struct inode *inode, int flags, unsigned char *uuid) static int check_export(struct inode *inode, int *flags, unsigned char *uuid) { /* Loading @@ -367,6 +367,13 @@ static int check_export(struct inode *inode, int flags, unsigned char *uuid) !S_ISREG(inode->i_mode)) return -ENOTDIR; /* * Mountd should never pass down a writeable V4ROOT export, but, * just to make sure: */ if (*flags & NFSEXP_V4ROOT) *flags |= NFSEXP_READONLY; /* There are two requirements on a filesystem to be exportable. * 1: We must be able to identify the filesystem from a number. * either a device number (so FS_REQUIRES_DEV needed) Loading @@ -375,7 +382,7 @@ static int check_export(struct inode *inode, int flags, unsigned char *uuid) * This means that s_export_op must be set. */ if (!(inode->i_sb->s_type->fs_flags & FS_REQUIRES_DEV) && !(flags & NFSEXP_FSID) && !(*flags & NFSEXP_FSID) && uuid == NULL) { dprintk("exp_export: export of non-dev fs without fsid\n"); return -EINVAL; Loading Loading @@ -590,7 +597,7 @@ static int svc_export_parse(struct cache_detail *cd, char *mesg, int mlen) goto out4; } err = check_export(exp.ex_path.dentry->d_inode, exp.ex_flags, err = check_export(exp.ex_path.dentry->d_inode, &exp.ex_flags, exp.ex_uuid); if (err) goto out4; Loading Loading @@ -1029,7 +1036,7 @@ exp_export(struct nfsctl_export *nxp) goto finish; } err = check_export(path.dentry->d_inode, nxp->ex_flags, NULL); err = check_export(path.dentry->d_inode, &nxp->ex_flags, NULL); if (err) goto finish; err = -ENOMEM; Loading