diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-01 09:04:59 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-03-01 09:04:59 -0800 |
commit | 2d28e01dca1a233468319517b4834783e1aaf517 (patch) | |
tree | d057513afe10e56091011848759becd127f2efad /fs | |
parent | 6357c8127bea35c52085a0ae0f97e73de2419825 (diff) | |
parent | cb6acd01e2e43fd8bad11155752b7699c3d0fb76 (diff) | |
download | linux-2d28e01dca1a233468319517b4834783e1aaf517.tar.gz linux-2d28e01dca1a233468319517b4834783e1aaf517.tar.bz2 linux-2d28e01dca1a233468319517b4834783e1aaf517.zip |
Merge branch 'akpm' (patches from Andrew)
Merge misc fixes from Andrew Morton:
"2 fixes"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
hugetlbfs: fix races and page leaks during migration
kasan: turn off asan-stack for clang-8 and earlier
Diffstat (limited to 'fs')
-rw-r--r-- | fs/hugetlbfs/inode.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 32920a10100e..a7fa037b876b 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -859,6 +859,18 @@ static int hugetlbfs_migrate_page(struct address_space *mapping, rc = migrate_huge_page_move_mapping(mapping, newpage, page); if (rc != MIGRATEPAGE_SUCCESS) return rc; + + /* + * page_private is subpool pointer in hugetlb pages. Transfer to + * new page. PagePrivate is not associated with page_private for + * hugetlb pages and can not be set here as only page_huge_active + * pages can be migrated. + */ + if (page_private(page)) { + set_page_private(newpage, page_private(page)); + set_page_private(page, 0); + } + if (mode != MIGRATE_SYNC_NO_COPY) migrate_page_copy(newpage, page); else |