Commit 015f0212 authored by Jeff Layton's avatar Jeff Layton Committed by Trond Myklebust
Browse files

nfs: handle lock context allocation failures in nfs_create_request



nfs_get_lock_context can return NULL on an allocation failure.
Regression introduced by commit f11ac8db.

Reported-by: default avatarSteve Dickson <steved@redhat.com>
Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Cc: stable@kernel.org
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 568a810d
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -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;
}