aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Mason <chris.mason@fusionio.com>2013-11-15 06:14:55 -0500
committerChris Mason <chris.mason@fusionio.com>2013-11-15 09:17:47 -0500
commit46e0f66a0cf9e1fe25bfdcf4a60c08aface85998 (patch)
tree9b454277530b50f41ac5fbbf5f6d0f64ec2ebc99
parent91aef86f3b8ab0685d930a5468254384513d1c97 (diff)
btrfs: fix empty_zero_page misusage
Heiko Carstens noticed that btrfs was using empty_zero_page incorrectly. He explained: The definition of empty_zero_page is architecture specific. It is (currently) either a character array, an unsigned long containing the address of the empty_zero_page, or even worse only the address of the struct page belonging to the empty_zero_page. This commit changes btrfs to use a for-loop instead. On x86 the resulting .ko is smaller, and we're no longer worrying about how each arch builds its zeros. Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Chris Mason <chris.mason@fusionio.com>
-rw-r--r--fs/btrfs/ioctl.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 1d04b5559e61..64a0876c7872 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -368,8 +368,13 @@ static noinline int btrfs_ioctl_fitrim(struct file *file, void __user *arg)
368 368
369int btrfs_is_empty_uuid(u8 *uuid) 369int btrfs_is_empty_uuid(u8 *uuid)
370{ 370{
371 BUILD_BUG_ON(BTRFS_UUID_SIZE > PAGE_SIZE); 371 int i;
372 return !memcmp(uuid, empty_zero_page, BTRFS_UUID_SIZE); 372
373 for (i = 0; i < BTRFS_UUID_SIZE; i++) {
374 if (uuid[i])
375 return 0;
376 }
377 return 1;
373} 378}
374 379
375static noinline int create_subvol(struct inode *dir, 380static noinline int create_subvol(struct inode *dir,