[PATCH v1 04/11] blk-mq: zero page->private when freeing pages

From: Zi Yan

Date: Sun Feb 22 2026 - 22:32:58 EST


This prepares for upcoming checks in page freeing path.

Signed-off-by: Zi Yan <ziy@xxxxxxxxxx>
Cc: Jens Axboe <axboe@xxxxxxxxx>
Cc: linux-block@xxxxxxxxxxxxxxx
---
block/blk-mq-tag.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
index 33946cdb5716..2d4bdf8df51d 100644
--- a/block/blk-mq-tag.c
+++ b/block/blk-mq-tag.c
@@ -589,14 +589,18 @@ static void blk_mq_free_tags_callback(struct rcu_head *head)
struct page *page;

while (!list_empty(&tags->page_list)) {
+ int order;
+
page = list_first_entry(&tags->page_list, struct page, lru);
list_del_init(&page->lru);
+ order = page->private;
/*
* Remove kmemleak object previously allocated in
* blk_mq_alloc_rqs().
*/
kmemleak_free(page_address(page));
- __free_pages(page, page->private);
+ set_page_private(page, 0);
+ __free_pages(page, order);
}
kfree(tags);
}
--
2.51.0