On Thu, 23 May 2024 01:39:05 -0500 Donet Tom donettom@linux.ibm.com 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.
You have stable@vger.kernel.org in the mail headers, so I assume you're proposing this for backporting. When doing this, please include
in the changelog footers and also include a Fixes: target. I'm assuming the suitable Fixes: target for this patch is 38b43539d64b?