diff --git a/mm/page_io.c b/mm/page_io.c index 6a88629a5806..e91f008af794 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -398,12 +398,11 @@ int swap_readpage(struct page *page, bool synchronous) ret = bdev_read_page(sis->bdev, swap_page_sector(page), page); if (!ret) { - /* - * Moto huangzq2: We either remove the trylock_page or use lock_page - * here, becuase trylock will always return false due to page_endio - * in zram_rw_page. - */ - swap_slot_free_notify(page); + if (trylock_page(page)) { + swap_slot_free_notify(page); + unlock_page(page); + } + count_vm_event(PSWPIN); goto out; }