Patch "mm: khugepaged: fix radix tree node leak in shmem collapse error path" has been added to the 4.9-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
mm: khugepaged: fix radix tree node leak in shmem collapse error path
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
mm-khugepaged-fix-radix-tree-node-leak-in-shmem-collapse-error-path.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
59749e6ce53735d8b696763742225f126e94603fMon Sep 17 00:00:00 2001
From: Johannes Weiner <[email protected]>
Date: Mon, 12 Dec 2016 16:43:35 -0800
Subject: mm: khugepaged: fix radix tree node leak in shmem collapse error path
From: Johannes Weiner <[email protected]>
commit 59749e6ce53735d8b696763742225f126e94603f upstream.
The radix tree counts valid entries in each tree node. Entries stored in the tree cannot be removed by simpling storing NULL in the slot or the internal counters will be off and the node never gets freed again.
When collapsing a shmem page fails, restore the holes that were filled with radix_tree_insert() with a proper radix tree deletion.
--- mm/khugepaged.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
mm/khugepaged.c +4 -2
@@ -1525,9 +1525,11 @@ tree_unlocked:if (!page || iter.index < page->index) {if (!nr_none)break ; -/* Put holes back where they were */ -radix_tree_replace_slot (slot,NULL ); nr_none--; +/* Put holes back where they were */ +radix_tree_delete (&mapping->page_tree, + iter.index); + slot =radix_tree_iter_next (&iter);continue ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/mm-khugepaged-fix-radix-tree-node-leak-in-shmem-collapse-error-path.patch queue-4.9/mm-khugepaged-close-use-after-free-race-during-shmem-collapsing.patch