On Fri 19-01-18 13:02:59, Kirill A. Shutemov wrote: > On Thu, Jan 18, 2018 at 06:22:13PM +0100, Michal Hocko wrote: > > On Thu 18-01-18 18:40:26, Kirill A. Shutemov wrote: > > [...] > > > + /* > > > + * Make sure that pages are in the same section before doing pointer > > > + * arithmetics. > > > + */ > > > + if (page_to_section(pvmw->page) != page_to_section(page)) > > > + return false; > > > > OK, THPs shouldn't cross memory sections AFAIK. My brain is meltdown > > these days so this might be a completely stupid question. But why don't > > you simply compare pfns? This would be just simpler, no? > > In original code, we already had pvmw->page around and I thought it would > be easier to get page for the pte intead of looking for pfn for both > sides. > > We these changes it's no longer the case. > > Do you care enough to send a patch? :)
Well, memory sections are sparsemem concept IIRC. Unless I've missed something page_to_section is quarded by SECTION_IN_PAGE_FLAGS and that is conditional to CONFIG_SPARSEMEM. THP is a generic code so using it there is wrong unless I miss some subtle detail here. Comparing pfn should be generic enough. -- Michal Hocko SUSE Labs