Re: [PATCH 1/2] mm/filemap: fix find_lock_entries hang on 32-bit THP

Matthew Wilcox
2021-04-22T01:07:33Z

On Wed, Apr 21, 2021 at 05:37:33PM -0700, Hugh Dickins wrote:
> - if (!xa_is_value(page) && PageTransHuge(page))
> - xas_set(&xas, page->index + thp_nr_pages(page));
> + if (!xa_is_value(page) && PageTransHuge(page)) {
> + unsigned int nr_pages = thp_nr_pages(page);
> +
> + /* Final THP may cross MAX_LFS_FILESIZE on 32-bit */
> + xas_set(&xas, page->index + nr_pages);
> + if (xas.xa_index < nr_pages)
> + break;
> + }

Aargh. We really need to get the multi-index support in; this works
perfectly when the xas_set() hack isn't needed any more.