diff options
author | Kirill A. Shutemov <[email protected]> | 2017-04-13 14:56:20 -0700 |
---|---|---|
committer | Linus Torvalds <[email protected]> | 2017-04-13 18:24:20 -0700 |
commit | ced108037c2aa542b3ed8b7afd1576064ad1362a (patch) | |
tree | 9bbfcea14b7f7098f667e213a6cc5851e7adc105 /tools/perf/scripts/python/export-to-postgresql.py | |
parent | 0a85e51d37645e9ce57e5e1a30859e07810ed07c (diff) |
thp: fix MADV_DONTNEED vs. numa balancing race
In case prot_numa, we are under down_read(mmap_sem). It's critical to
not clear pmd intermittently to avoid race with MADV_DONTNEED which is
also under down_read(mmap_sem):
CPU0: CPU1:
change_huge_pmd(prot_numa=1)
pmdp_huge_get_and_clear_notify()
madvise_dontneed()
zap_pmd_range()
pmd_trans_huge(*pmd) == 0 (without ptl)
// skip the pmd
set_pmd_at();
// pmd is re-established
The race makes MADV_DONTNEED miss the huge pmd and don't clear it
which may break userspace.
Found by code analysis, never saw triggered.
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Kirill A. Shutemov <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Hillf Danton <[email protected]>
Cc: <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions