diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/nfs4proc.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 21cfac7c2ff8..68438aa4f08e 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -1537,7 +1537,8 @@ static void nfs4_open_done(struct rpc_task *task, void *calldata) | |||
1537 | return; | 1537 | return; |
1538 | 1538 | ||
1539 | if (task->tk_status == 0) { | 1539 | if (task->tk_status == 0) { |
1540 | switch (data->o_res.f_attr->mode & S_IFMT) { | 1540 | if (data->o_res.f_attr->valid & NFS_ATTR_FATTR_TYPE) { |
1541 | switch (data->o_res.f_attr->mode & S_IFMT) { | ||
1541 | case S_IFREG: | 1542 | case S_IFREG: |
1542 | break; | 1543 | break; |
1543 | case S_IFLNK: | 1544 | case S_IFLNK: |
@@ -1548,6 +1549,7 @@ static void nfs4_open_done(struct rpc_task *task, void *calldata) | |||
1548 | break; | 1549 | break; |
1549 | default: | 1550 | default: |
1550 | data->rpc_status = -ENOTDIR; | 1551 | data->rpc_status = -ENOTDIR; |
1552 | } | ||
1551 | } | 1553 | } |
1552 | renew_lease(data->o_res.server, data->timestamp); | 1554 | renew_lease(data->o_res.server, data->timestamp); |
1553 | if (!(data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM)) | 1555 | if (!(data->o_res.rflags & NFS4_OPEN_RESULT_CONFIRM)) |