diff options
author | Mark Brown <broonie@kernel.org> | 2018-12-14 11:52:31 +0000 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2018-12-14 11:52:31 +0000 |
commit | b6b5ee6576282dc102dfc69463d1147116b2e732 (patch) | |
tree | 9f66ad7e1e3fb1dc53855686f346d6cbba1d8536 /mm | |
parent | 8e064f902b1fac5042f40ab061720693af9026d4 (diff) | |
parent | 5f783fd0a840588ca62b9f658d306277c7127229 (diff) |
Merge branch 'linux-linaro-lsk-v4.4' into linux-linaro-lsk-v4.4-android
Diffstat (limited to 'mm')
-rw-r--r-- | mm/mlock.c | 3 | ||||
-rw-r--r-- | mm/truncate.c | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/mm/mlock.c b/mm/mlock.c index 206e86b98a03..966dbdcfc322 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -504,6 +504,7 @@ static int mlock_fixup(struct vm_area_struct *vma, struct vm_area_struct **prev, int nr_pages; int ret = 0; int lock = !!(newflags & VM_LOCKED); + vm_flags_t old_flags = vma->vm_flags; if (newflags == vma->vm_flags || (vma->vm_flags & VM_SPECIAL) || is_vm_hugetlb_page(vma) || vma == get_gate_vma(current->mm)) @@ -538,6 +539,8 @@ success: nr_pages = (end - start) >> PAGE_SHIFT; if (!lock) nr_pages = -nr_pages; + else if (old_flags & VM_LOCKED) + nr_pages = 0; mm->locked_vm += nr_pages; /* diff --git a/mm/truncate.c b/mm/truncate.c index f4c8270f7b84..aeb1adba329e 100644 --- a/mm/truncate.c +++ b/mm/truncate.c @@ -432,9 +432,13 @@ void truncate_inode_pages_final(struct address_space *mapping) */ spin_lock_irq(&mapping->tree_lock); spin_unlock_irq(&mapping->tree_lock); - - truncate_inode_pages(mapping, 0); } + + /* + * Cleancache needs notification even if there are no pages or shadow + * entries. + */ + truncate_inode_pages(mapping, 0); } EXPORT_SYMBOL(truncate_inode_pages_final); |