diff options
| -rw-r--r-- | fs/ecryptfs/crypto.c | 24 | ||||
| -rw-r--r-- | fs/ecryptfs/ecryptfs_kernel.h | 4 | ||||
| -rw-r--r-- | fs/ecryptfs/inode.c | 2 | ||||
| -rw-r--r-- | fs/ecryptfs/mmap.c | 5 |
4 files changed, 15 insertions, 20 deletions
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c index c907f6f49351..391f558eb4d0 100644 --- a/fs/ecryptfs/crypto.c +++ b/fs/ecryptfs/crypto.c | |||
| @@ -834,14 +834,13 @@ void ecryptfs_set_default_sizes(struct ecryptfs_crypt_stat *crypt_stat) | |||
| 834 | set_extent_mask_and_shift(crypt_stat); | 834 | set_extent_mask_and_shift(crypt_stat); |
| 835 | crypt_stat->iv_bytes = ECRYPTFS_DEFAULT_IV_BYTES; | 835 | crypt_stat->iv_bytes = ECRYPTFS_DEFAULT_IV_BYTES; |
| 836 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) | 836 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) |
| 837 | crypt_stat->num_header_bytes_at_front = | 837 | crypt_stat->metadata_size = ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; |
| 838 | ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; | ||
| 839 | else { | 838 | else { |
| 840 | if (PAGE_CACHE_SIZE <= ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE) | 839 | if (PAGE_CACHE_SIZE <= ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE) |
| 841 | crypt_stat->num_header_bytes_at_front = | 840 | crypt_stat->metadata_size = |
| 842 | ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; | 841 | ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; |
| 843 | else | 842 | else |
| 844 | crypt_stat->num_header_bytes_at_front = PAGE_CACHE_SIZE; | 843 | crypt_stat->metadata_size = PAGE_CACHE_SIZE; |
| 845 | } | 844 | } |
| 846 | } | 845 | } |
| 847 | 846 | ||
| @@ -1238,8 +1237,7 @@ ecryptfs_write_header_metadata(char *virt, | |||
| 1238 | 1237 | ||
| 1239 | header_extent_size = (u32)crypt_stat->extent_size; | 1238 | header_extent_size = (u32)crypt_stat->extent_size; |
| 1240 | num_header_extents_at_front = | 1239 | num_header_extents_at_front = |
| 1241 | (u16)(crypt_stat->num_header_bytes_at_front | 1240 | (u16)(crypt_stat->metadata_size / crypt_stat->extent_size); |
| 1242 | / crypt_stat->extent_size); | ||
| 1243 | put_unaligned_be32(header_extent_size, virt); | 1241 | put_unaligned_be32(header_extent_size, virt); |
| 1244 | virt += 4; | 1242 | virt += 4; |
| 1245 | put_unaligned_be16(num_header_extents_at_front, virt); | 1243 | put_unaligned_be16(num_header_extents_at_front, virt); |
| @@ -1382,7 +1380,7 @@ int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry) | |||
| 1382 | rc = -EINVAL; | 1380 | rc = -EINVAL; |
| 1383 | goto out; | 1381 | goto out; |
| 1384 | } | 1382 | } |
| 1385 | virt_len = crypt_stat->num_header_bytes_at_front; | 1383 | virt_len = crypt_stat->metadata_size; |
| 1386 | order = get_order(virt_len); | 1384 | order = get_order(virt_len); |
| 1387 | /* Released in this function */ | 1385 | /* Released in this function */ |
| 1388 | virt = (char *)ecryptfs_get_zeroed_pages(GFP_KERNEL, order); | 1386 | virt = (char *)ecryptfs_get_zeroed_pages(GFP_KERNEL, order); |
| @@ -1428,16 +1426,15 @@ static int parse_header_metadata(struct ecryptfs_crypt_stat *crypt_stat, | |||
| 1428 | header_extent_size = get_unaligned_be32(virt); | 1426 | header_extent_size = get_unaligned_be32(virt); |
| 1429 | virt += sizeof(__be32); | 1427 | virt += sizeof(__be32); |
| 1430 | num_header_extents_at_front = get_unaligned_be16(virt); | 1428 | num_header_extents_at_front = get_unaligned_be16(virt); |
| 1431 | crypt_stat->num_header_bytes_at_front = | 1429 | crypt_stat->metadata_size = (((size_t)num_header_extents_at_front |
| 1432 | (((size_t)num_header_extents_at_front | 1430 | * (size_t)header_extent_size)); |
| 1433 | * (size_t)header_extent_size)); | ||
| 1434 | (*bytes_read) = (sizeof(__be32) + sizeof(__be16)); | 1431 | (*bytes_read) = (sizeof(__be32) + sizeof(__be16)); |
| 1435 | if ((validate_header_size == ECRYPTFS_VALIDATE_HEADER_SIZE) | 1432 | if ((validate_header_size == ECRYPTFS_VALIDATE_HEADER_SIZE) |
| 1436 | && (crypt_stat->num_header_bytes_at_front | 1433 | && (crypt_stat->metadata_size |
| 1437 | < ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE)) { | 1434 | < ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE)) { |
| 1438 | rc = -EINVAL; | 1435 | rc = -EINVAL; |
| 1439 | printk(KERN_WARNING "Invalid header size: [%zd]\n", | 1436 | printk(KERN_WARNING "Invalid header size: [%zd]\n", |
| 1440 | crypt_stat->num_header_bytes_at_front); | 1437 | crypt_stat->metadata_size); |
| 1441 | } | 1438 | } |
| 1442 | return rc; | 1439 | return rc; |
| 1443 | } | 1440 | } |
| @@ -1452,8 +1449,7 @@ static int parse_header_metadata(struct ecryptfs_crypt_stat *crypt_stat, | |||
| 1452 | */ | 1449 | */ |
| 1453 | static void set_default_header_data(struct ecryptfs_crypt_stat *crypt_stat) | 1450 | static void set_default_header_data(struct ecryptfs_crypt_stat *crypt_stat) |
| 1454 | { | 1451 | { |
| 1455 | crypt_stat->num_header_bytes_at_front = | 1452 | crypt_stat->metadata_size = ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; |
| 1456 | ECRYPTFS_MINIMUM_HEADER_EXTENT_SIZE; | ||
| 1457 | } | 1453 | } |
| 1458 | 1454 | ||
| 1459 | /** | 1455 | /** |
diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h index 8456f70606ad..d031efd7666b 100644 --- a/fs/ecryptfs/ecryptfs_kernel.h +++ b/fs/ecryptfs/ecryptfs_kernel.h | |||
| @@ -273,7 +273,7 @@ struct ecryptfs_crypt_stat { | |||
| 273 | u32 flags; | 273 | u32 flags; |
| 274 | unsigned int file_version; | 274 | unsigned int file_version; |
| 275 | size_t iv_bytes; | 275 | size_t iv_bytes; |
| 276 | size_t num_header_bytes_at_front; | 276 | size_t metadata_size; |
| 277 | size_t extent_size; /* Data extent size; default is 4096 */ | 277 | size_t extent_size; /* Data extent size; default is 4096 */ |
| 278 | size_t key_size; | 278 | size_t key_size; |
| 279 | size_t extent_shift; | 279 | size_t extent_shift; |
| @@ -469,7 +469,7 @@ ecryptfs_lower_header_size(struct ecryptfs_crypt_stat *crypt_stat) | |||
| 469 | { | 469 | { |
| 470 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) | 470 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) |
| 471 | return 0; | 471 | return 0; |
| 472 | return crypt_stat->num_header_bytes_at_front; | 472 | return crypt_stat->metadata_size; |
| 473 | } | 473 | } |
| 474 | 474 | ||
| 475 | static inline struct ecryptfs_file_info * | 475 | static inline struct ecryptfs_file_info * |
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 1a739531b0dd..a50efb18701c 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c | |||
| @@ -335,7 +335,7 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | |||
| 335 | ecryptfs_dentry->d_sb)->mount_crypt_stat; | 335 | ecryptfs_dentry->d_sb)->mount_crypt_stat; |
| 336 | if (mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED) { | 336 | if (mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED) { |
| 337 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) | 337 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) |
| 338 | file_size = (crypt_stat->num_header_bytes_at_front | 338 | file_size = (crypt_stat->metadata_size |
| 339 | + i_size_read(lower_dentry->d_inode)); | 339 | + i_size_read(lower_dentry->d_inode)); |
| 340 | else | 340 | else |
| 341 | file_size = i_size_read(lower_dentry->d_inode); | 341 | file_size = i_size_read(lower_dentry->d_inode); |
diff --git a/fs/ecryptfs/mmap.c b/fs/ecryptfs/mmap.c index 5a30e01547f1..270f42ae7c0d 100644 --- a/fs/ecryptfs/mmap.c +++ b/fs/ecryptfs/mmap.c | |||
| @@ -122,8 +122,7 @@ ecryptfs_copy_up_encrypted_with_header(struct page *page, | |||
| 122 | * num_extents_per_page) | 122 | * num_extents_per_page) |
| 123 | + extent_num_in_page); | 123 | + extent_num_in_page); |
| 124 | size_t num_header_extents_at_front = | 124 | size_t num_header_extents_at_front = |
| 125 | (crypt_stat->num_header_bytes_at_front | 125 | (crypt_stat->metadata_size / crypt_stat->extent_size); |
| 126 | / crypt_stat->extent_size); | ||
| 127 | 126 | ||
| 128 | if (view_extent_num < num_header_extents_at_front) { | 127 | if (view_extent_num < num_header_extents_at_front) { |
| 129 | /* This is a header extent */ | 128 | /* This is a header extent */ |
| @@ -152,7 +151,7 @@ ecryptfs_copy_up_encrypted_with_header(struct page *page, | |||
| 152 | /* This is an encrypted data extent */ | 151 | /* This is an encrypted data extent */ |
| 153 | loff_t lower_offset = | 152 | loff_t lower_offset = |
| 154 | ((view_extent_num * crypt_stat->extent_size) | 153 | ((view_extent_num * crypt_stat->extent_size) |
| 155 | - crypt_stat->num_header_bytes_at_front); | 154 | - crypt_stat->metadata_size); |
| 156 | 155 | ||
| 157 | rc = ecryptfs_read_lower_page_segment( | 156 | rc = ecryptfs_read_lower_page_segment( |
| 158 | page, (lower_offset >> PAGE_CACHE_SHIFT), | 157 | page, (lower_offset >> PAGE_CACHE_SHIFT), |
