diff options
Diffstat (limited to 'fs')
-rw-r--r-- | fs/fuse/file.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index 18c215c..b075ed8 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c @@ -674,8 +674,10 @@ static int fuse_readpages_fill(void *_data, struct page *page) return -ENOMEM; } + lock_page(newpage); err = replace_page_cache_page(oldpage, newpage, GFP_KERNEL); if (err) { + unlock_page(newpage); __free_page(newpage); page_cache_release(oldpage); return err; @@ -685,7 +687,6 @@ static int fuse_readpages_fill(void *_data, struct page *page) * Decrement the count on new page to make page cache the only * owner of it */ - lock_page(newpage); put_page(newpage); /* finally release the old page and swap pointers */ |