diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-03-18 19:45:14 -0400 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-03-25 12:04:10 -0400 |
commit | c58c844187df61ef7cc103d0abb5dd6198bcfcd6 (patch) | |
tree | 0e435c37318e290346f3bed74bba05350ec4dd2f /fs/nfs/pagelist.c | |
parent | 5d422301f97b821301efcdb6fc9d1a83a5c102d6 (diff) | |
download | linux-c58c844187df61ef7cc103d0abb5dd6198bcfcd6.tar.gz linux-c58c844187df61ef7cc103d0abb5dd6198bcfcd6.tar.bz2 linux-c58c844187df61ef7cc103d0abb5dd6198bcfcd6.zip |
NFS: Don't accept more reads/writes if the open context recovery failed
If the state recovery failed, we want to ensure that the application
doesn't try to use the same file descriptor for more reads or writes.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r-- | fs/nfs/pagelist.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index e56e846e9d2d..7f0933086b36 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c @@ -104,6 +104,8 @@ nfs_create_request(struct nfs_open_context *ctx, struct inode *inode, struct nfs_page *req; struct nfs_lock_context *l_ctx; + if (test_bit(NFS_CONTEXT_BAD, &ctx->flags)) + return ERR_PTR(-EBADF); /* try to allocate the request struct */ req = nfs_page_alloc(); if (req == NULL) |