From 153a4ec1f1b958c72c20276809682340b01b6675 Mon Sep 17 00:00:00 2001 From: Josef Bacik Date: Tue, 25 Jan 2011 22:11:54 +0000 Subject: [PATCH] --- yaml --- r: 233002 b: refs/heads/master c: 7adf5dfbb3af65a00e20b3ead224c3a1b40e4ec4 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/btrfs/file.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 848aa74623d4..a6a47293199c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ad0397a7a97f55fd7f70998ec208c5d8b90310ff +refs/heads/master: 7adf5dfbb3af65a00e20b3ead224c3a1b40e4ec4 diff --git a/trunk/fs/btrfs/file.c b/trunk/fs/btrfs/file.c index 65b2424a4116..9e097fbfc78d 100644 --- a/trunk/fs/btrfs/file.c +++ b/trunk/fs/btrfs/file.c @@ -792,8 +792,12 @@ static noinline int prepare_pages(struct btrfs_root *root, struct file *file, for (i = 0; i < num_pages; i++) { pages[i] = grab_cache_page(inode->i_mapping, index + i); if (!pages[i]) { - err = -ENOMEM; - BUG_ON(1); + int c; + for (c = i - 1; c >= 0; c--) { + unlock_page(pages[c]); + page_cache_release(pages[c]); + } + return -ENOMEM; } wait_on_page_writeback(pages[i]); }