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>
This commit is contained in:
parent
91aef86f3b
commit
46e0f66a0c
@ -368,8 +368,13 @@ static noinline int btrfs_ioctl_fitrim(struct file *file, void __user *arg)
|
|||||||
|
|
||||||
int btrfs_is_empty_uuid(u8 *uuid)
|
int btrfs_is_empty_uuid(u8 *uuid)
|
||||||
{
|
{
|
||||||
BUILD_BUG_ON(BTRFS_UUID_SIZE > PAGE_SIZE);
|
int i;
|
||||||
return !memcmp(uuid, empty_zero_page, BTRFS_UUID_SIZE);
|
|
||||||
|
for (i = 0; i < BTRFS_UUID_SIZE; i++) {
|
||||||
|
if (uuid[i])
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static noinline int create_subvol(struct inode *dir,
|
static noinline int create_subvol(struct inode *dir,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user