aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/file.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 65b2424a4116..9e097fbfc78d 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -792,8 +792,12 @@ again:
792 for (i = 0; i < num_pages; i++) { 792 for (i = 0; i < num_pages; i++) {
793 pages[i] = grab_cache_page(inode->i_mapping, index + i); 793 pages[i] = grab_cache_page(inode->i_mapping, index + i);
794 if (!pages[i]) { 794 if (!pages[i]) {
795 err = -ENOMEM; 795 int c;
796 BUG_ON(1); 796 for (c = i - 1; c >= 0; c--) {
797 unlock_page(pages[c]);
798 page_cache_release(pages[c]);
799 }
800 return -ENOMEM;
797 } 801 }
798 wait_on_page_writeback(pages[i]); 802 wait_on_page_writeback(pages[i]);
799 } 803 }