mm: memcontrol: clarify the uncharge_list() loop
uncharge_list() does an unusual list walk because the function can take regular lists with dedicated list_heads as well as singleton lists where a single page is passed via the page->lru list node. This can sometimes lead to confusion as well as suggestions to replace the loop with a list_for_each_entry(), which wouldn't work. Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Michal Hocko <mhocko@suse.com> Cc: Vladimir Davydov <vdavydov@virtuozzo.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
b6e6edcfa4
commit
8b5926560f
@ -5420,6 +5420,10 @@ static void uncharge_list(struct list_head *page_list)
|
||||
struct list_head *next;
|
||||
struct page *page;
|
||||
|
||||
/*
|
||||
* Note that the list can be a single page->lru; hence the
|
||||
* do-while loop instead of a simple list_for_each_entry().
|
||||
*/
|
||||
next = page_list->next;
|
||||
do {
|
||||
unsigned int nr_pages = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user