NFS: Fix error handling in __nfs_pageio_add_request
authorTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 29 May 2014 15:38:15 +0000 (11:38 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 29 May 2014 16:12:26 +0000 (12:12 -0400)
Handle the case where nfs_create_request() returns an error.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/pagelist.c

index fab78d13ee140be2be7d94a689b865545278d7f6..0b8446f1008dbbb65864501869c9e0c4634e2e18 100644 (file)
@@ -947,6 +947,8 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc,
                        subreq = nfs_create_request(req->wb_context,
                                        req->wb_page,
                                        subreq, pgbase, bytes_left);
+                       if (IS_ERR(subreq))
+                               goto err_ptr;
                        nfs_lock_request(subreq);
                        subreq->wb_offset  = offset;
                        subreq->wb_index = req->wb_index;
@@ -955,6 +957,10 @@ static int __nfs_pageio_add_request(struct nfs_pageio_descriptor *desc,
 
        nfs_page_group_unlock(req);
        return 1;
+err_ptr:
+       desc->pg_error = PTR_ERR(subreq);
+       nfs_page_group_unlock(req);
+       return 0;
 }
 
 static int nfs_do_recoalesce(struct nfs_pageio_descriptor *desc)