diff --git a/mm/page_io.c b/mm/page_io.c index e91f008af794..6a88629a5806 100644 --- a/mm/page_io.c +++ b/mm/page_io.c @@ -398,11 +398,12 @@ int swap_readpage(struct page *page, bool synchronous) ret = bdev_read_page(sis->bdev, swap_page_sector(page), page); if (!ret) { - if (trylock_page(page)) { - swap_slot_free_notify(page); - unlock_page(page); - } - + /* + * 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); count_vm_event(PSWPIN); goto out; }