Re: [PATCH] selftest: mm: Test if hugepage does not get leaked during __bio_release_pages()

From: David Hildenbrand
Date: Thu May 23 2024 - 16:40:41 EST


On 23.05.24 21:13, Andrew Morton wrote:
On Thu, 23 May 2024 01:39:05 -0500 Donet Tom <donettom@xxxxxxxxxxxxx> wrote:

Commit 1b151e2435fc ("block: Remove special-casing of compound
pages") caused a change in behaviour when releasing the pages
if the buffer does not start at the beginning of the page. This
was because the calculation of the number of pages to release
was incorrect.
This was fixed by commit 38b43539d64b ("block: Fix page refcounts
for unaligned buffers in __bio_release_pages()").

We pin the user buffer during direct I/O writes. If this buffer is a
hugepage, bio_release_page() will unpin it and decrement all references
and pin counts at ->bi_end_io. However, if any references to the hugepage
remain post-I/O, the hugepage will not be freed upon unmap, leading
to a memory leak.

This patch verifies that a hugepage, used as a user buffer for DIO
operations, is correctly freed upon unmapping, regardless of whether
the offsets are aligned or unaligned w.r.t page boundary.



Two SOF, is there a Co-developed-by: missing?

You have stable@xxxxxxxxxxxxxxx in the mail headers, so I assume you're
proposing this for backporting. When doing this, please include

Cc: <stable@xxxxxxxxxxxxxxx>

in the changelog footers and also include a Fixes: target. I'm
assuming the suitable Fixes: target for this patch is 38b43539d64b?

This adds a new selfest to make sure what was fixed (and backported to stable) remains fixed.

--
Cheers,

David / dhildenb