diff options
Diffstat (limited to 'fs/ecryptfs/ecryptfs_kernel.h')
-rw-r--r-- | fs/ecryptfs/ecryptfs_kernel.h | 67 |
1 files changed, 30 insertions, 37 deletions
diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h index 0032a9f5a3a9..43c7c43b06f5 100644 --- a/fs/ecryptfs/ecryptfs_kernel.h +++ b/fs/ecryptfs/ecryptfs_kernel.h | |||
@@ -192,7 +192,6 @@ ecryptfs_get_key_payload_data(struct key *key) | |||
192 | (((struct user_key_payload*)key->payload.data)->data); | 192 | (((struct user_key_payload*)key->payload.data)->data); |
193 | } | 193 | } |
194 | 194 | ||
195 | #define ECRYPTFS_SUPER_MAGIC 0xf15f | ||
196 | #define ECRYPTFS_MAX_KEYSET_SIZE 1024 | 195 | #define ECRYPTFS_MAX_KEYSET_SIZE 1024 |
197 | #define ECRYPTFS_MAX_CIPHER_NAME_SIZE 32 | 196 | #define ECRYPTFS_MAX_CIPHER_NAME_SIZE 32 |
198 | #define ECRYPTFS_MAX_NUM_ENC_KEYS 64 | 197 | #define ECRYPTFS_MAX_NUM_ENC_KEYS 64 |
@@ -201,6 +200,8 @@ ecryptfs_get_key_payload_data(struct key *key) | |||
201 | #define MAGIC_ECRYPTFS_MARKER 0x3c81b7f5 | 200 | #define MAGIC_ECRYPTFS_MARKER 0x3c81b7f5 |
202 | #define MAGIC_ECRYPTFS_MARKER_SIZE_BYTES 8 /* 4*2 */ | 201 | #define MAGIC_ECRYPTFS_MARKER_SIZE_BYTES 8 /* 4*2 */ |
203 | #define ECRYPTFS_FILE_SIZE_BYTES (sizeof(u64)) | 202 | #define ECRYPTFS_FILE_SIZE_BYTES (sizeof(u64)) |
203 | #define ECRYPTFS_SIZE_AND_MARKER_BYTES (ECRYPTFS_FILE_SIZE_BYTES \ | ||
204 | + MAGIC_ECRYPTFS_MARKER_SIZE_BYTES) | ||
204 | #define ECRYPTFS_DEFAULT_CIPHER "aes" | 205 | #define ECRYPTFS_DEFAULT_CIPHER "aes" |
205 | #define ECRYPTFS_DEFAULT_KEY_BYTES 16 | 206 | #define ECRYPTFS_DEFAULT_KEY_BYTES 16 |
206 | #define ECRYPTFS_DEFAULT_HASH "md5" | 207 | #define ECRYPTFS_DEFAULT_HASH "md5" |
@@ -234,7 +235,7 @@ ecryptfs_get_key_payload_data(struct key *key) | |||
234 | 235 | ||
235 | struct ecryptfs_key_sig { | 236 | struct ecryptfs_key_sig { |
236 | struct list_head crypt_stat_list; | 237 | struct list_head crypt_stat_list; |
237 | char keysig[ECRYPTFS_SIG_SIZE_HEX]; | 238 | char keysig[ECRYPTFS_SIG_SIZE_HEX + 1]; |
238 | }; | 239 | }; |
239 | 240 | ||
240 | struct ecryptfs_filename { | 241 | struct ecryptfs_filename { |
@@ -258,19 +259,19 @@ struct ecryptfs_filename { | |||
258 | struct ecryptfs_crypt_stat { | 259 | struct ecryptfs_crypt_stat { |
259 | #define ECRYPTFS_STRUCT_INITIALIZED 0x00000001 | 260 | #define ECRYPTFS_STRUCT_INITIALIZED 0x00000001 |
260 | #define ECRYPTFS_POLICY_APPLIED 0x00000002 | 261 | #define ECRYPTFS_POLICY_APPLIED 0x00000002 |
261 | #define ECRYPTFS_NEW_FILE 0x00000004 | 262 | #define ECRYPTFS_ENCRYPTED 0x00000004 |
262 | #define ECRYPTFS_ENCRYPTED 0x00000008 | 263 | #define ECRYPTFS_SECURITY_WARNING 0x00000008 |
263 | #define ECRYPTFS_SECURITY_WARNING 0x00000010 | 264 | #define ECRYPTFS_ENABLE_HMAC 0x00000010 |
264 | #define ECRYPTFS_ENABLE_HMAC 0x00000020 | 265 | #define ECRYPTFS_ENCRYPT_IV_PAGES 0x00000020 |
265 | #define ECRYPTFS_ENCRYPT_IV_PAGES 0x00000040 | 266 | #define ECRYPTFS_KEY_VALID 0x00000040 |
266 | #define ECRYPTFS_KEY_VALID 0x00000080 | 267 | #define ECRYPTFS_METADATA_IN_XATTR 0x00000080 |
267 | #define ECRYPTFS_METADATA_IN_XATTR 0x00000100 | 268 | #define ECRYPTFS_VIEW_AS_ENCRYPTED 0x00000100 |
268 | #define ECRYPTFS_VIEW_AS_ENCRYPTED 0x00000200 | 269 | #define ECRYPTFS_KEY_SET 0x00000200 |
269 | #define ECRYPTFS_KEY_SET 0x00000400 | 270 | #define ECRYPTFS_ENCRYPT_FILENAMES 0x00000400 |
270 | #define ECRYPTFS_ENCRYPT_FILENAMES 0x00000800 | 271 | #define ECRYPTFS_ENCFN_USE_MOUNT_FNEK 0x00000800 |
271 | #define ECRYPTFS_ENCFN_USE_MOUNT_FNEK 0x00001000 | 272 | #define ECRYPTFS_ENCFN_USE_FEK 0x00001000 |
272 | #define ECRYPTFS_ENCFN_USE_FEK 0x00002000 | 273 | #define ECRYPTFS_UNLINK_SIGS 0x00002000 |
273 | #define ECRYPTFS_UNLINK_SIGS 0x00004000 | 274 | #define ECRYPTFS_I_SIZE_INITIALIZED 0x00004000 |
274 | u32 flags; | 275 | u32 flags; |
275 | unsigned int file_version; | 276 | unsigned int file_version; |
276 | size_t iv_bytes; | 277 | size_t iv_bytes; |
@@ -297,8 +298,9 @@ struct ecryptfs_crypt_stat { | |||
297 | struct ecryptfs_inode_info { | 298 | struct ecryptfs_inode_info { |
298 | struct inode vfs_inode; | 299 | struct inode vfs_inode; |
299 | struct inode *wii_inode; | 300 | struct inode *wii_inode; |
300 | struct file *lower_file; | ||
301 | struct mutex lower_file_mutex; | 301 | struct mutex lower_file_mutex; |
302 | atomic_t lower_file_count; | ||
303 | struct file *lower_file; | ||
302 | struct ecryptfs_crypt_stat crypt_stat; | 304 | struct ecryptfs_crypt_stat crypt_stat; |
303 | }; | 305 | }; |
304 | 306 | ||
@@ -334,7 +336,6 @@ struct ecryptfs_global_auth_tok { | |||
334 | u32 flags; | 336 | u32 flags; |
335 | struct list_head mount_crypt_stat_list; | 337 | struct list_head mount_crypt_stat_list; |
336 | struct key *global_auth_tok_key; | 338 | struct key *global_auth_tok_key; |
337 | struct ecryptfs_auth_tok *global_auth_tok; | ||
338 | unsigned char sig[ECRYPTFS_SIG_SIZE_HEX + 1]; | 339 | unsigned char sig[ECRYPTFS_SIG_SIZE_HEX + 1]; |
339 | }; | 340 | }; |
340 | 341 | ||
@@ -377,10 +378,10 @@ struct ecryptfs_mount_crypt_stat { | |||
377 | #define ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES 0x00000010 | 378 | #define ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES 0x00000010 |
378 | #define ECRYPTFS_GLOBAL_ENCFN_USE_MOUNT_FNEK 0x00000020 | 379 | #define ECRYPTFS_GLOBAL_ENCFN_USE_MOUNT_FNEK 0x00000020 |
379 | #define ECRYPTFS_GLOBAL_ENCFN_USE_FEK 0x00000040 | 380 | #define ECRYPTFS_GLOBAL_ENCFN_USE_FEK 0x00000040 |
381 | #define ECRYPTFS_GLOBAL_MOUNT_AUTH_TOK_ONLY 0x00000080 | ||
380 | u32 flags; | 382 | u32 flags; |
381 | struct list_head global_auth_tok_list; | 383 | struct list_head global_auth_tok_list; |
382 | struct mutex global_auth_tok_list_mutex; | 384 | struct mutex global_auth_tok_list_mutex; |
383 | size_t num_global_auth_toks; | ||
384 | size_t global_default_cipher_key_size; | 385 | size_t global_default_cipher_key_size; |
385 | size_t global_default_fn_cipher_key_bytes; | 386 | size_t global_default_fn_cipher_key_bytes; |
386 | unsigned char global_default_cipher_name[ECRYPTFS_MAX_CIPHER_NAME_SIZE | 387 | unsigned char global_default_cipher_name[ECRYPTFS_MAX_CIPHER_NAME_SIZE |
@@ -477,7 +478,7 @@ ecryptfs_lower_header_size(struct ecryptfs_crypt_stat *crypt_stat) | |||
477 | static inline struct ecryptfs_file_info * | 478 | static inline struct ecryptfs_file_info * |
478 | ecryptfs_file_to_private(struct file *file) | 479 | ecryptfs_file_to_private(struct file *file) |
479 | { | 480 | { |
480 | return (struct ecryptfs_file_info *)file->private_data; | 481 | return file->private_data; |
481 | } | 482 | } |
482 | 483 | ||
483 | static inline void | 484 | static inline void |
@@ -583,6 +584,7 @@ ecryptfs_set_dentry_lower_mnt(struct dentry *dentry, struct vfsmount *lower_mnt) | |||
583 | 584 | ||
584 | #define ecryptfs_printk(type, fmt, arg...) \ | 585 | #define ecryptfs_printk(type, fmt, arg...) \ |
585 | __ecryptfs_printk(type "%s: " fmt, __func__, ## arg); | 586 | __ecryptfs_printk(type "%s: " fmt, __func__, ## arg); |
587 | __attribute__ ((format(printf, 1, 2))) | ||
586 | void __ecryptfs_printk(const char *fmt, ...); | 588 | void __ecryptfs_printk(const char *fmt, ...); |
587 | 589 | ||
588 | extern const struct file_operations ecryptfs_main_fops; | 590 | extern const struct file_operations ecryptfs_main_fops; |
@@ -603,8 +605,7 @@ extern struct kmem_cache *ecryptfs_file_info_cache; | |||
603 | extern struct kmem_cache *ecryptfs_dentry_info_cache; | 605 | extern struct kmem_cache *ecryptfs_dentry_info_cache; |
604 | extern struct kmem_cache *ecryptfs_inode_info_cache; | 606 | extern struct kmem_cache *ecryptfs_inode_info_cache; |
605 | extern struct kmem_cache *ecryptfs_sb_info_cache; | 607 | extern struct kmem_cache *ecryptfs_sb_info_cache; |
606 | extern struct kmem_cache *ecryptfs_header_cache_1; | 608 | extern struct kmem_cache *ecryptfs_header_cache; |
607 | extern struct kmem_cache *ecryptfs_header_cache_2; | ||
608 | extern struct kmem_cache *ecryptfs_xattr_cache; | 609 | extern struct kmem_cache *ecryptfs_xattr_cache; |
609 | extern struct kmem_cache *ecryptfs_key_record_cache; | 610 | extern struct kmem_cache *ecryptfs_key_record_cache; |
610 | extern struct kmem_cache *ecryptfs_key_sig_cache; | 611 | extern struct kmem_cache *ecryptfs_key_sig_cache; |
@@ -625,14 +626,9 @@ struct ecryptfs_open_req { | |||
625 | struct list_head kthread_ctl_list; | 626 | struct list_head kthread_ctl_list; |
626 | }; | 627 | }; |
627 | 628 | ||
628 | #define ECRYPTFS_INTERPOSE_FLAG_D_ADD 0x00000001 | 629 | struct inode *ecryptfs_get_inode(struct inode *lower_inode, |
629 | int ecryptfs_interpose(struct dentry *hidden_dentry, | 630 | struct super_block *sb); |
630 | struct dentry *this_dentry, struct super_block *sb, | 631 | void ecryptfs_i_size_init(const char *page_virt, struct inode *inode); |
631 | u32 flags); | ||
632 | int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | ||
633 | struct dentry *lower_dentry, | ||
634 | struct inode *ecryptfs_dir_inode, | ||
635 | struct nameidata *ecryptfs_nd); | ||
636 | int ecryptfs_decode_and_decrypt_filename(char **decrypted_name, | 632 | int ecryptfs_decode_and_decrypt_filename(char **decrypted_name, |
637 | size_t *decrypted_name_size, | 633 | size_t *decrypted_name_size, |
638 | struct dentry *ecryptfs_dentry, | 634 | struct dentry *ecryptfs_dentry, |
@@ -664,10 +660,9 @@ int ecryptfs_new_file_context(struct dentry *ecryptfs_dentry); | |||
664 | void ecryptfs_write_crypt_stat_flags(char *page_virt, | 660 | void ecryptfs_write_crypt_stat_flags(char *page_virt, |
665 | struct ecryptfs_crypt_stat *crypt_stat, | 661 | struct ecryptfs_crypt_stat *crypt_stat, |
666 | size_t *written); | 662 | size_t *written); |
667 | int ecryptfs_read_and_validate_header_region(char *data, | 663 | int ecryptfs_read_and_validate_header_region(struct inode *inode); |
668 | struct inode *ecryptfs_inode); | 664 | int ecryptfs_read_and_validate_xattr_region(struct dentry *dentry, |
669 | int ecryptfs_read_and_validate_xattr_region(char *page_virt, | 665 | struct inode *inode); |
670 | struct dentry *ecryptfs_dentry); | ||
671 | u8 ecryptfs_code_for_cipher_string(char *cipher_name, size_t key_bytes); | 666 | u8 ecryptfs_code_for_cipher_string(char *cipher_name, size_t key_bytes); |
672 | int ecryptfs_cipher_code_to_string(char *str, u8 cipher_code); | 667 | int ecryptfs_cipher_code_to_string(char *str, u8 cipher_code); |
673 | void ecryptfs_set_default_sizes(struct ecryptfs_crypt_stat *crypt_stat); | 668 | void ecryptfs_set_default_sizes(struct ecryptfs_crypt_stat *crypt_stat); |
@@ -679,9 +674,6 @@ int | |||
679 | ecryptfs_parse_packet_set(struct ecryptfs_crypt_stat *crypt_stat, | 674 | ecryptfs_parse_packet_set(struct ecryptfs_crypt_stat *crypt_stat, |
680 | unsigned char *src, struct dentry *ecryptfs_dentry); | 675 | unsigned char *src, struct dentry *ecryptfs_dentry); |
681 | int ecryptfs_truncate(struct dentry *dentry, loff_t new_length); | 676 | int ecryptfs_truncate(struct dentry *dentry, loff_t new_length); |
682 | int ecryptfs_inode_test(struct inode *inode, void *candidate_lower_inode); | ||
683 | int ecryptfs_inode_set(struct inode *inode, void *lower_inode); | ||
684 | void ecryptfs_init_inode(struct inode *inode, struct inode *lower_inode); | ||
685 | ssize_t | 677 | ssize_t |
686 | ecryptfs_getxattr_lower(struct dentry *lower_dentry, const char *name, | 678 | ecryptfs_getxattr_lower(struct dentry *lower_dentry, const char *name, |
687 | void *value, size_t size); | 679 | void *value, size_t size); |
@@ -761,7 +753,8 @@ int ecryptfs_privileged_open(struct file **lower_file, | |||
761 | struct dentry *lower_dentry, | 753 | struct dentry *lower_dentry, |
762 | struct vfsmount *lower_mnt, | 754 | struct vfsmount *lower_mnt, |
763 | const struct cred *cred); | 755 | const struct cred *cred); |
764 | int ecryptfs_init_persistent_file(struct dentry *ecryptfs_dentry); | 756 | int ecryptfs_get_lower_file(struct dentry *dentry, struct inode *inode); |
757 | void ecryptfs_put_lower_file(struct inode *inode); | ||
765 | int | 758 | int |
766 | ecryptfs_write_tag_70_packet(char *dest, size_t *remaining_bytes, | 759 | ecryptfs_write_tag_70_packet(char *dest, size_t *remaining_bytes, |
767 | size_t *packet_size, | 760 | size_t *packet_size, |