Commit 807d66d8 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4: nfs4_open_done first must check that GETATTR decoded a file type

...before it can check the validity of that file type.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 25a1a621
...@@ -1537,7 +1537,8 @@ static void nfs4_open_done(struct rpc_task *task, void *calldata) ...@@ -1537,7 +1537,8 @@ static void nfs4_open_done(struct rpc_task *task, void *calldata)
return; return;
if (task->tk_status == 0) { if (task->tk_status == 0) {
switch (data->o_res.f_attr->mode & S_IFMT) { if (data->o_res.f_attr->valid & NFS_ATTR_FATTR_TYPE) {
switch (data->o_res.f_attr->mode & S_IFMT) {
case S_IFREG: case S_IFREG:
break; break;
case S_IFLNK: case S_IFLNK:
...@@ -1548,6 +1549,7 @@ static void nfs4_open_done(struct rpc_task *task, void *calldata) ...@@ -1548,6 +1549,7 @@ static void nfs4_open_done(struct rpc_task *task, void *calldata)
break; break;
default: default:
data->rpc_status = -ENOTDIR; data->rpc_status = -ENOTDIR;
}
} }
renew_lease(data->o_res.server, data->timestamp); renew_lease(data->o_res.server, data->timestamp);
if (!(data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM)) if (!(data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment