--- x/fs/btrfs/extent_io.c +++ y/fs/btrfs/extent_io.c @@ -1516,7 +1516,8 @@ done: PAGE_SIZE, !ret); mapping_set_error(page->mapping, ret); } - unlock_page(page); + if (PageLocked(page)) + unlock_page(page); ASSERT(ret <= 0); return ret; }