Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d812e575 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: Prevent another deadlock in nfs_release_page()

We should not attempt to free the page if __GFP_FS is not set. Otherwise we
can deadlock as per

  http://bugzilla.kernel.org/show_bug.cgi?id=15578



Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@kernel.org
parent fc7f99cf
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -491,7 +491,8 @@ static int nfs_release_page(struct page *page, gfp_t gfp)
{
	dfprintk(PAGECACHE, "NFS: release_page(%p)\n", page);

	if (gfp & __GFP_WAIT)
	/* Only do I/O if gfp is a superset of GFP_KERNEL */
	if ((gfp & GFP_KERNEL) == GFP_KERNEL)
		nfs_wb_page(page->mapping->host, page);
	/* If PagePrivate() is set, then the page is not freeable */
	if (PagePrivate(page))