mm, thp: lock filemap when truncating page cache
[sfrench/cifs-2.6.git] / fs / open.c
index daa324606a41f8141567cf4395d26458db76a924..9ec3cfca3b1a59aa78bb700d03bc4380829f7e54 100644 (file)
--- a/fs/open.c
+++ b/fs/open.c
@@ -856,8 +856,11 @@ static int do_dentry_open(struct file *f,
                 * of THPs into the page cache will fail.
                 */
                smp_mb();
-               if (filemap_nr_thps(inode->i_mapping))
+               if (filemap_nr_thps(inode->i_mapping)) {
+                       filemap_invalidate_lock(inode->i_mapping);
                        truncate_pagecache(inode, 0);
+                       filemap_invalidate_unlock(inode->i_mapping);
+               }
        }
 
        return 0;