The patch titled Subject: mm-support-thps-in-zero_user_segments-fix has been removed from the -mm tree. Its filename was mm-support-thps-in-zero_user_segments-fix.patch This patch was dropped because it was folded into mm-support-thps-in-zero_user_segments.patch ------------------------------------------------------ From: Matthew Wilcox <willy@xxxxxxxxxxxxx> Subject: mm-support-thps-in-zero_user_segments-fix I didn't realise start1 was allowed to be less than start2. Reported-by: Naresh Kamboju <naresh.kamboju@xxxxxxxxxx> Cc: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> Cc: Yang Shi <shy828301@xxxxxxxxx> Cc: Jan Kara <jack@xxxxxxx> Cc: Michal Hocko <mhocko@xxxxxxxx> Cc: Zi Yan <ziy@xxxxxxxxxx> Cc: Song Liu <songliubraving@xxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/highmem.c | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) --- a/mm/highmem.c~mm-support-thps-in-zero_user_segments-fix +++ a/mm/highmem.c @@ -379,46 +379,39 @@ void zero_user_segments(struct page *pag BUG_ON(end1 > page_size(page) || end2 > page_size(page)); for (i = 0; i < compound_nr(page); i++) { - void *kaddr; - unsigned this_end; + void *kaddr = NULL; - if (end1 == 0 && start2 >= PAGE_SIZE) { - start2 -= PAGE_SIZE; - end2 -= PAGE_SIZE; - continue; - } + if (start1 < PAGE_SIZE || start2 < PAGE_SIZE) + kaddr = kmap_atomic(page + i); if (start1 >= PAGE_SIZE) { start1 -= PAGE_SIZE; end1 -= PAGE_SIZE; - if (start2) { - start2 -= PAGE_SIZE; - end2 -= PAGE_SIZE; - } - continue; - } - - kaddr = kmap_atomic(page + i); + } else { + unsigned this_end = min_t(unsigned, end1, PAGE_SIZE); - this_end = min_t(unsigned, end1, PAGE_SIZE); - if (end1 > start1) - memset(kaddr + start1, 0, this_end - start1); - end1 -= this_end; - start1 = 0; + if (end1 > start1) + memset(kaddr + start1, 0, this_end - start1); + end1 -= this_end; + start1 = 0; + } if (start2 >= PAGE_SIZE) { start2 -= PAGE_SIZE; end2 -= PAGE_SIZE; } else { - this_end = min_t(unsigned, end2, PAGE_SIZE); + unsigned this_end = min_t(unsigned, end2, PAGE_SIZE); + if (end2 > start2) memset(kaddr + start2, 0, this_end - start2); end2 -= this_end; start2 = 0; } - kunmap_atomic(kaddr); - flush_dcache_page(page + i); + if (kaddr) { + kunmap_atomic(kaddr); + flush_dcache_page(page + i); + } if (!end1 && !end2) break; _ Patches currently in -mm which might be from willy@xxxxxxxxxxxxx are sparc-fix-handling-of-page-table-constructor-failure.patch mm-move-free_unref_page-to-mm-internalh.patch mm-page-flags-fix-comment.patch mm-page_alloc-add-__free_pages-documentation.patch mm-support-thps-in-zero_user_segments.patch mm-make-pagecache-tagged-lookups-return-only-head-pages.patch mm-shmem-use-pagevec_lookup-in-shmem_unlock_mapping.patch mm-swap-optimise-get_shadow_from_swap_cache.patch mm-add-fgp_entry.patch mm-filemap-rename-find_get_entry-to-mapping_get_entry.patch mm-filemap-add-helper-for-finding-pages.patch mm-filemap-add-helper-for-finding-pages-fix.patch mm-filemap-add-mapping_seek_hole_data.patch mm-filemap-add-mapping_seek_hole_data-fix.patch iomap-use-mapping_seek_hole_data.patch mm-add-and-use-find_lock_entries.patch mm-add-and-use-find_lock_entries-fix.patch mm-add-an-end-parameter-to-find_get_entries.patch mm-add-an-end-parameter-to-pagevec_lookup_entries.patch mm-remove-nr_entries-parameter-from-pagevec_lookup_entries.patch mm-pass-pvec-directly-to-find_get_entries.patch mm-remove-pagevec_lookup_entries.patch