projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
inode->i_op is never NULL
[firefly-linux-kernel-4.4.55.git]
/
fs
/
nfsd
/
vfs.c
diff --git
a/fs/nfsd/vfs.c
b/fs/nfsd/vfs.c
index 4433c8f001635862419edb603ecf5725462f3222..5245a3965004259f2d156d495875260b7d254a6b 100644
(file)
--- a/
fs/nfsd/vfs.c
+++ b/
fs/nfsd/vfs.c
@@
-671,6
+671,7
@@
__be32
nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
int access, struct file **filp)
{
nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
int access, struct file **filp)
{
+ const struct cred *cred = current_cred();
struct dentry *dentry;
struct inode *inode;
int flags = O_RDONLY|O_LARGEFILE;
struct dentry *dentry;
struct inode *inode;
int flags = O_RDONLY|O_LARGEFILE;
@@
-725,7
+726,7
@@
nfsd_open(struct svc_rqst *rqstp, struct svc_fh *fhp, int type,
DQUOT_INIT(inode);
}
*filp = dentry_open(dget(dentry), mntget(fhp->fh_export->ex_path.mnt),
DQUOT_INIT(inode);
}
*filp = dentry_open(dget(dentry), mntget(fhp->fh_export->ex_path.mnt),
-
flags
);
+
flags, cred
);
if (IS_ERR(*filp))
host_err = PTR_ERR(*filp);
out_nfserr:
if (IS_ERR(*filp))
host_err = PTR_ERR(*filp);
out_nfserr:
@@
-1169,7
+1170,7
@@
nfsd_create_setattr(struct svc_rqst *rqstp, struct svc_fh *resfhp,
* send along the gid on create when it tries to implement
* setgid directories via NFS:
*/
* send along the gid on create when it tries to implement
* setgid directories via NFS:
*/
- if (current
->fsuid
!= 0)
+ if (current
_fsuid()
!= 0)
iap->ia_valid &= ~(ATTR_UID|ATTR_GID);
if (iap->ia_valid)
return nfsd_setattr(rqstp, resfhp, iap, 0, (time_t)0);
iap->ia_valid &= ~(ATTR_UID|ATTR_GID);
if (iap->ia_valid)
return nfsd_setattr(rqstp, resfhp, iap, 0, (time_t)0);
@@
-1210,7
+1211,7
@@
nfsd_create(struct svc_rqst *rqstp, struct svc_fh *fhp,
dirp = dentry->d_inode;
err = nfserr_notdir;
dirp = dentry->d_inode;
err = nfserr_notdir;
- if
(!dirp->i_op ||
!dirp->i_op->lookup)
+ if
(
!dirp->i_op->lookup)
goto out;
/*
* Check whether the response file handle has been verified yet.
goto out;
/*
* Check whether the response file handle has been verified yet.
@@
-1346,7
+1347,7
@@
nfsd_create_v3(struct svc_rqst *rqstp, struct svc_fh *fhp,
/* Get all the sanity checks out of the way before
* we lock the parent. */
err = nfserr_notdir;
/* Get all the sanity checks out of the way before
* we lock the parent. */
err = nfserr_notdir;
- if
(!dirp->i_op ||
!dirp->i_op->lookup)
+ if
(
!dirp->i_op->lookup)
goto out;
fh_lock_nested(fhp, I_MUTEX_PARENT);
goto out;
fh_lock_nested(fhp, I_MUTEX_PARENT);
@@
-1481,7
+1482,7
@@
nfsd_readlink(struct svc_rqst *rqstp, struct svc_fh *fhp, char *buf, int *lenp)
inode = dentry->d_inode;
err = nfserr_inval;
inode = dentry->d_inode;
err = nfserr_inval;
- if (!inode->i_op
|| !inode->i_op
->readlink)
+ if (!inode->i_op->readlink)
goto out;
touch_atime(fhp->fh_export->ex_path.mnt, dentry);
goto out;
touch_atime(fhp->fh_export->ex_path.mnt, dentry);
@@
-2001,7
+2002,7
@@
nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
IS_APPEND(inode)? " append" : "",
__mnt_is_readonly(exp->ex_path.mnt)? " ro" : "");
dprintk(" owner %d/%d user %d/%d\n",
IS_APPEND(inode)? " append" : "",
__mnt_is_readonly(exp->ex_path.mnt)? " ro" : "");
dprintk(" owner %d/%d user %d/%d\n",
- inode->i_uid, inode->i_gid, current
->fsuid, current->fsgid
);
+ inode->i_uid, inode->i_gid, current
_fsuid(), current_fsgid()
);
#endif
/* Normally we reject any write/sattr etc access on a read-only file
#endif
/* Normally we reject any write/sattr etc access on a read-only file
@@
-2044,7
+2045,7
@@
nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
* with NFSv3.
*/
if ((acc & NFSD_MAY_OWNER_OVERRIDE) &&
* with NFSv3.
*/
if ((acc & NFSD_MAY_OWNER_OVERRIDE) &&
- inode->i_uid == current
->fsuid
)
+ inode->i_uid == current
_fsuid()
)
return 0;
/* This assumes NFSD_MAY_{READ,WRITE,EXEC} == MAY_{READ,WRITE,EXEC} */
return 0;
/* This assumes NFSD_MAY_{READ,WRITE,EXEC} == MAY_{READ,WRITE,EXEC} */
@@
-2161,7
+2162,7
@@
nfsd_set_posix_acl(struct svc_fh *fhp, int type, struct posix_acl *acl)
size_t size;
int error;
size_t size;
int error;
- if (!IS_POSIXACL(inode) ||
!inode->i_op ||
+ if (!IS_POSIXACL(inode) ||
!inode->i_op->setxattr || !inode->i_op->removexattr)
return -EOPNOTSUPP;
switch(type) {
!inode->i_op->setxattr || !inode->i_op->removexattr)
return -EOPNOTSUPP;
switch(type) {