Hi, Hillf, Hillf Danton <hillf.zj@xxxxxxxxxxxxxxx> writes: > On Friday, October 28, 2016 1:56 PM Huang, Ying wrote: >> >> @@ -109,9 +118,16 @@ int __add_to_swap_cache(struct page *page, swp_entry_t entry) >> * So add_to_swap_cache() doesn't returns -EEXIST. >> */ >> VM_BUG_ON(error == -EEXIST); >> - set_page_private(page, 0UL); >> ClearPageSwapCache(page); >> - put_page(page); >> + set_page_private(cur_page, 0UL); >> + while (i--) { >> + cur_page--; >> + cur_entry.val--; >> + set_page_private(cur_page, 0UL); >> + radix_tree_delete(&address_space->page_tree, >> + swp_offset(cur_entry)); >> + } > > Pull pages out of radix tree with tree lock held? OOPS, I should hold the tree lock for the error path too. Will update it in the next version. Thanks for pointing out this! Best Regards, Huang, Ying >> + page_ref_sub(page, nr); >> } >> >> return error; >> -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>