From: Chris Mason <chris.mason@oracle.com>
Date: Fri, 21 Dec 2007 21:27:23 +0000 (-0500)
Subject: Btrfs: Fix an off by one in the extent_map prepare write code
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=5d4fb734b4cb89a3902d6de309af0f6f3e63fe73;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git

Btrfs: Fix an off by one in the extent_map prepare write code

Signed-off-by: Chris Mason <chris.mason@oracle.com>
---

diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
index 2b92f1070274..f53d8c976219 100644
--- a/fs/btrfs/extent_map.c
+++ b/fs/btrfs/extent_map.c
@@ -2270,7 +2270,7 @@ int extent_prepare_write(struct extent_map_tree *tree,
 			kunmap_atomic(kaddr, KM_USER0);
 		}
 		if ((em->block_start != EXTENT_MAP_HOLE &&
-		     em->block_start != EXTENT_MAP_INLINE) && 
+		     em->block_start != EXTENT_MAP_INLINE) &&
 		    !isnew && !PageUptodate(page) &&
 		    (block_off_end > to || block_off_start < from) &&
 		    !test_range_bit(tree, block_start, cur_end,
@@ -2279,7 +2279,7 @@ int extent_prepare_write(struct extent_map_tree *tree,
 			u64 extent_offset = block_start - em->start;
 			size_t iosize;
 			sector = (em->block_start + extent_offset) >> 9;
-			iosize = (cur_end - block_start + blocksize - 1) &
+			iosize = (cur_end - block_start + blocksize) &
 				~((u64)blocksize - 1);
 			/*
 			 * we've already got the extent locked, but we
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index a9f5d6d417f0..5f5b7b89b144 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -1956,7 +1956,7 @@ static int btrfs_prepare_write(struct file *file, struct page *page,
 
 	mutex_lock(&root->fs_info->fs_mutex);
 	err = btrfs_check_free_space(root, PAGE_CACHE_SIZE, 0);
-	mutex_lock(&root->fs_info->fs_mutex);
+	mutex_unlock(&root->fs_info->fs_mutex);
 	if (err)
 		return -ENOSPC;