mirror of https://gitee.com/openkylin/linux.git
Make nfs_file_cred more robust.
As not all files have an associated open_context (e.g. device special files), it is safest to test for the existence of the open context before de-referencing it. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
18de973530
commit
504e518953
|
@ -1659,8 +1659,10 @@ nfs4_proc_setattr(struct dentry *dentry, struct nfs_fattr *fattr,
|
|||
struct nfs_open_context *ctx;
|
||||
|
||||
ctx = nfs_file_open_context(sattr->ia_file);
|
||||
cred = ctx->cred;
|
||||
state = ctx->state;
|
||||
if (ctx) {
|
||||
cred = ctx->cred;
|
||||
state = ctx->state;
|
||||
}
|
||||
}
|
||||
|
||||
status = nfs4_do_setattr(inode, cred, fattr, sattr, state);
|
||||
|
|
|
@ -367,8 +367,12 @@ static inline struct nfs_open_context *nfs_file_open_context(struct file *filp)
|
|||
|
||||
static inline struct rpc_cred *nfs_file_cred(struct file *file)
|
||||
{
|
||||
if (file != NULL)
|
||||
return nfs_file_open_context(file)->cred;
|
||||
if (file != NULL) {
|
||||
struct nfs_open_context *ctx =
|
||||
nfs_file_open_context(file);
|
||||
if (ctx)
|
||||
return ctx->cred;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue