diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 98b18aaf45c9..90bc4025ca3c 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -1431,8 +1431,10 @@ static int nfs_finish_open(struct nfs_open_context *ctx, err = finish_open(file, dentry, do_open, opened); if (err) goto out; - nfs_file_set_open_context(file, ctx); - + if (S_ISREG(file->f_path.dentry->d_inode->i_mode)) + nfs_file_set_open_context(file, ctx); + else + err = -ESTALE; out: return err; }