| From b8fb9c30f25e45dab5d2cd310ab6913b6861d00f Mon Sep 17 00:00:00 2001 |
| From: Trond Myklebust <trond.myklebust@primarydata.com> |
| Date: Mon, 13 Oct 2014 10:56:12 -0400 |
| Subject: NFS: Fix a bogus warning in nfs_generic_pgio |
| |
| From: Trond Myklebust <trond.myklebust@primarydata.com> |
| |
| commit b8fb9c30f25e45dab5d2cd310ab6913b6861d00f upstream. |
| |
| It is OK for pageused == pagecount in the loop, as long as we don't add |
| another entry to the *pages array. Move the test so that it only triggers |
| in that case. |
| |
| Reported-by: Steve Dickson <SteveD@redhat.com> |
| Fixes: bba5c1887a92 (nfs: disallow duplicate pages in pgio page vectors) |
| Cc: Weston Andros Adamson <dros@primarydata.com> |
| Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/nfs/pagelist.c | 7 +++---- |
| 1 file changed, 3 insertions(+), 4 deletions(-) |
| |
| --- a/fs/nfs/pagelist.c |
| +++ b/fs/nfs/pagelist.c |
| @@ -744,12 +744,11 @@ int nfs_generic_pgio(struct nfs_pageio_d |
| nfs_list_remove_request(req); |
| nfs_list_add_request(req, &hdr->pages); |
| |
| - if (WARN_ON_ONCE(pageused >= pagecount)) |
| - return nfs_pgio_error(desc, hdr); |
| - |
| if (!last_page || last_page != req->wb_page) { |
| - *pages++ = last_page = req->wb_page; |
| pageused++; |
| + if (pageused > pagecount) |
| + break; |
| + *pages++ = last_page = req->wb_page; |
| } |
| } |
| if (WARN_ON_ONCE(pageused != pagecount)) |