This prepares for upcoming checks in page freeing path.
Signed-off-by: Zi Yan <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: [email protected]
---
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