aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ecryptfs/ecryptfs_kernel.h
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
committerGlenn Elliott <gelliott@cs.unc.edu>2012-03-04 19:47:13 -0500
commitc71c03bda1e86c9d5198c5d83f712e695c4f2a1e (patch)
treeecb166cb3e2b7e2adb3b5e292245fefd23381ac8 /fs/ecryptfs/ecryptfs_kernel.h
parentea53c912f8a86a8567697115b6a0d8152beee5c8 (diff)
parent6a00f206debf8a5c8899055726ad127dbeeed098 (diff)
Merge branch 'mpi-master' into wip-k-fmlpwip-k-fmlp
Conflicts: litmus/sched_cedf.c
Diffstat (limited to 'fs/ecryptfs/ecryptfs_kernel.h')
-rw-r--r--fs/ecryptfs/ecryptfs_kernel.h67
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
235struct ecryptfs_key_sig { 236struct 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
240struct ecryptfs_filename { 241struct ecryptfs_filename {
@@ -258,19 +259,19 @@ struct ecryptfs_filename {
258struct ecryptfs_crypt_stat { 259struct 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 {
297struct ecryptfs_inode_info { 298struct 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)
477static inline struct ecryptfs_file_info * 478static inline struct ecryptfs_file_info *
478ecryptfs_file_to_private(struct file *file) 479ecryptfs_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
483static inline void 484static 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)))
586void __ecryptfs_printk(const char *fmt, ...); 588void __ecryptfs_printk(const char *fmt, ...);
587 589
588extern const struct file_operations ecryptfs_main_fops; 590extern const struct file_operations ecryptfs_main_fops;
@@ -603,8 +605,7 @@ extern struct kmem_cache *ecryptfs_file_info_cache;
603extern struct kmem_cache *ecryptfs_dentry_info_cache; 605extern struct kmem_cache *ecryptfs_dentry_info_cache;
604extern struct kmem_cache *ecryptfs_inode_info_cache; 606extern struct kmem_cache *ecryptfs_inode_info_cache;
605extern struct kmem_cache *ecryptfs_sb_info_cache; 607extern struct kmem_cache *ecryptfs_sb_info_cache;
606extern struct kmem_cache *ecryptfs_header_cache_1; 608extern struct kmem_cache *ecryptfs_header_cache;
607extern struct kmem_cache *ecryptfs_header_cache_2;
608extern struct kmem_cache *ecryptfs_xattr_cache; 609extern struct kmem_cache *ecryptfs_xattr_cache;
609extern struct kmem_cache *ecryptfs_key_record_cache; 610extern struct kmem_cache *ecryptfs_key_record_cache;
610extern struct kmem_cache *ecryptfs_key_sig_cache; 611extern 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 629struct inode *ecryptfs_get_inode(struct inode *lower_inode,
629int ecryptfs_interpose(struct dentry *hidden_dentry, 630 struct super_block *sb);
630 struct dentry *this_dentry, struct super_block *sb, 631void ecryptfs_i_size_init(const char *page_virt, struct inode *inode);
631 u32 flags);
632int 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);
636int ecryptfs_decode_and_decrypt_filename(char **decrypted_name, 632int 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);
664void ecryptfs_write_crypt_stat_flags(char *page_virt, 660void 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);
667int ecryptfs_read_and_validate_header_region(char *data, 663int ecryptfs_read_and_validate_header_region(struct inode *inode);
668 struct inode *ecryptfs_inode); 664int ecryptfs_read_and_validate_xattr_region(struct dentry *dentry,
669int ecryptfs_read_and_validate_xattr_region(char *page_virt, 665 struct inode *inode);
670 struct dentry *ecryptfs_dentry);
671u8 ecryptfs_code_for_cipher_string(char *cipher_name, size_t key_bytes); 666u8 ecryptfs_code_for_cipher_string(char *cipher_name, size_t key_bytes);
672int ecryptfs_cipher_code_to_string(char *str, u8 cipher_code); 667int ecryptfs_cipher_code_to_string(char *str, u8 cipher_code);
673void ecryptfs_set_default_sizes(struct ecryptfs_crypt_stat *crypt_stat); 668void ecryptfs_set_default_sizes(struct ecryptfs_crypt_stat *crypt_stat);
@@ -679,9 +674,6 @@ int
679ecryptfs_parse_packet_set(struct ecryptfs_crypt_stat *crypt_stat, 674ecryptfs_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);
681int ecryptfs_truncate(struct dentry *dentry, loff_t new_length); 676int ecryptfs_truncate(struct dentry *dentry, loff_t new_length);
682int ecryptfs_inode_test(struct inode *inode, void *candidate_lower_inode);
683int ecryptfs_inode_set(struct inode *inode, void *lower_inode);
684void ecryptfs_init_inode(struct inode *inode, struct inode *lower_inode);
685ssize_t 677ssize_t
686ecryptfs_getxattr_lower(struct dentry *lower_dentry, const char *name, 678ecryptfs_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);
764int ecryptfs_init_persistent_file(struct dentry *ecryptfs_dentry); 756int ecryptfs_get_lower_file(struct dentry *dentry, struct inode *inode);
757void ecryptfs_put_lower_file(struct inode *inode);
765int 758int
766ecryptfs_write_tag_70_packet(char *dest, size_t *remaining_bytes, 759ecryptfs_write_tag_70_packet(char *dest, size_t *remaining_bytes,
767 size_t *packet_size, 760 size_t *packet_size,