diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-08-25 18:02:27 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-08-25 18:02:27 -0700 |
commit | b3242dba9ff285962fe84d1135cafe9383d721f0 (patch) | |
tree | cf4399b9a45bca863a0b404bfc7edfeff670ab1e /fs | |
parent | 67a3b5cb33633f39db8809ae56c8c1752b541daa (diff) | |
parent | 91b540f98872a206ea1c49e4aa6ea8eed0886644 (diff) | |
download | linux-stable-b3242dba9ff285962fe84d1135cafe9383d721f0.tar.gz linux-stable-b3242dba9ff285962fe84d1135cafe9383d721f0.tar.bz2 linux-stable-b3242dba9ff285962fe84d1135cafe9383d721f0.zip |
Merge branch 'akpm' (patches from Andrew)
Merge misc fixes from Andrew Morton:
"6 fixes"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
mm/memblock.c: reversed logic in memblock_discard()
fork: fix incorrect fput of ->exe_file causing use-after-free
mm/madvise.c: fix freeing of locked page with MADV_FREE
dax: fix deadlock due to misaligned PMD faults
mm, shmem: fix handling /sys/kernel/mm/transparent_hugepage/shmem_enabled
PM/hibernate: touch NMI watchdog when creating snapshot
Diffstat (limited to 'fs')
-rw-r--r-- | fs/dax.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -1383,6 +1383,16 @@ static int dax_iomap_pmd_fault(struct vm_fault *vmf, trace_dax_pmd_fault(inode, vmf, max_pgoff, 0); + /* + * Make sure that the faulting address's PMD offset (color) matches + * the PMD offset from the start of the file. This is necessary so + * that a PMD range in the page table overlaps exactly with a PMD + * range in the radix tree. + */ + if ((vmf->pgoff & PG_PMD_COLOUR) != + ((vmf->address >> PAGE_SHIFT) & PG_PMD_COLOUR)) + goto fallback; + /* Fall back to PTEs if we're going to COW */ if (write && !(vma->vm_flags & VM_SHARED)) goto fallback; |