summaryrefslogtreecommitdiffstats
path: root/fs/nfs/pagelist.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 15:13:05 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-28 15:13:05 -0700
commita0e3390787ef523699ae1f3f3ea0ca953e630be2 (patch)
tree0769becdd64b31489be18fdda583e0f38eca146f /fs/nfs/pagelist.c
parent2d3b07c07b39c4b7d9b6641052a02d996cd5d87c (diff)
parent12364a4f05295cb1e4a161d36b486c248c11c485 (diff)
downloadop-kernel-dev-a0e3390787ef523699ae1f3f3ea0ca953e630be2.zip
op-kernel-dev-a0e3390787ef523699ae1f3f3ea0ca953e630be2.tar.gz
Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6
* 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: nfs4: The difference of 2 pointers is ptrdiff_t nfs: testing the wrong variable nfs: handle lock context allocation failures in nfs_create_request Fixed Regression in NFS Direct I/O path
Diffstat (limited to 'fs/nfs/pagelist.c')
-rw-r--r--fs/nfs/pagelist.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index 9194902..137b549 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -65,6 +65,13 @@ nfs_create_request(struct nfs_open_context *ctx, struct inode *inode,
if (req == NULL)
return ERR_PTR(-ENOMEM);
+ /* get lock context early so we can deal with alloc failures */
+ req->wb_lock_context = nfs_get_lock_context(ctx);
+ if (req->wb_lock_context == NULL) {
+ nfs_page_free(req);
+ return ERR_PTR(-ENOMEM);
+ }
+
/* Initialize the request struct. Initially, we assume a
* long write-back delay. This will be adjusted in
* update_nfs_request below if the region is not locked. */
@@ -79,7 +86,6 @@ nfs_create_request(struct nfs_open_context *ctx, struct inode *inode,
req->wb_pgbase = offset;
req->wb_bytes = count;
req->wb_context = get_nfs_open_context(ctx);
- req->wb_lock_context = nfs_get_lock_context(ctx);
kref_init(&req->wb_kref);
return req;
}
OpenPOWER on IntegriCloud