diff --git a/[refs] b/[refs] index 3583341fbf4c..7a4bab91d6a1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: eb8abb927ae2fd1730e24ea94cd9527f3c086292 +refs/heads/master: d88c0922fa0e2c021a028b310a641126c6d4b7dc diff --git a/trunk/mm/filemap.c b/trunk/mm/filemap.c index 75572b5f2374..61ba5e405791 100644 --- a/trunk/mm/filemap.c +++ b/trunk/mm/filemap.c @@ -1563,8 +1563,10 @@ int filemap_fault(struct vm_area_struct *vma, struct vm_fault *vmf) goto no_cached_page; } - if (!lock_page_or_retry(page, vma->vm_mm, vmf->flags)) + if (!lock_page_or_retry(page, vma->vm_mm, vmf->flags)) { + page_cache_release(page); return ret | VM_FAULT_RETRY; + } /* Did it get truncated? */ if (unlikely(page->mapping != mapping)) {