|
@@ -2783,11 +2783,13 @@ static unsigned long deferred_split_scan(struct shrinker *shrink,
|
|
|
|
|
|
list_for_each_safe(pos, next, &list) {
|
|
|
page = list_entry((void *)pos, struct page, mapping);
|
|
|
- lock_page(page);
|
|
|
+ if (!trylock_page(page))
|
|
|
+ goto next;
|
|
|
/* split_huge_page() removes page from list on success */
|
|
|
if (!split_huge_page(page))
|
|
|
split++;
|
|
|
unlock_page(page);
|
|
|
+next:
|
|
|
put_page(page);
|
|
|
}
|
|
|
|