cregit-Linux how code gets into the kernel

Release 4.11 include/linux/fscrypt_common.h

Directory: include/linux
/*
 * fscrypt_common.h: common declarations for per-file encryption
 *
 * Copyright (C) 2015, Google, Inc.
 *
 * Written by Michael Halcrow, 2015.
 * Modified by Jaegeuk Kim, 2015.
 */

#ifndef _LINUX_FSCRYPT_COMMON_H

#define _LINUX_FSCRYPT_COMMON_H

#include <linux/key.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/bio.h>
#include <linux/dcache.h>
#include <crypto/skcipher.h>
#include <uapi/linux/fs.h>


#define FS_CRYPTO_BLOCK_SIZE		16

struct fscrypt_info;


struct fscrypt_ctx {
	union {
		struct {
			
struct page *bounce_page;	/* Ciphertext page */
			
struct page *control_page;	/* Original page  */
		} 
w;
		struct {
			
struct bio *bio;
			
struct work_struct work;
		} 
r;
		
struct list_head free_list;	/* Free list */
	};
	
u8 flags;				/* Flags */
};

/**
 * For encrypted symlinks, the ciphertext length is stored at the beginning
 * of the string in little-endian format.
 */

struct fscrypt_symlink_data {
	
__le16 len;
	
char encrypted_path[1];
} 
__packed;

/**
 * This function is used to calculate the disk space required to
 * store a filename of length l in encrypted symlink format.
 */

static inline u32 fscrypt_symlink_data_len(u32 l) { if (l < FS_CRYPTO_BLOCK_SIZE) l = FS_CRYPTO_BLOCK_SIZE; return (l + sizeof(struct fscrypt_symlink_data) - 1); }

Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers33100.00%1100.00%
Total33100.00%1100.00%

struct fscrypt_str { unsigned char *name; u32 len; }; struct fscrypt_name { const struct qstr *usr_fname; struct fscrypt_str disk_name; u32 hash; u32 minor_hash; struct fscrypt_str crypto_buf; }; #define FSTR_INIT(n, l) { .name = n, .len = l } #define FSTR_TO_QSTR(f) QSTR_INIT((f)->name, (f)->len) #define fname_name(p) ((p)->disk_name.name) #define fname_len(p) ((p)->disk_name.len) /* * fscrypt superblock flags */ #define FS_CFLG_OWN_PAGES (1U << 1) /* * crypto opertions for filesystems */ struct fscrypt_operations { unsigned int flags; const char *key_prefix; int (*get_context)(struct inode *, void *, size_t); int (*set_context)(struct inode *, const void *, size_t, void *); int (*dummy_context)(struct inode *); bool (*is_encrypted)(struct inode *); bool (*empty_dir)(struct inode *); unsigned (*max_namelen)(struct inode *); };
static inline bool fscrypt_dummy_context_enabled(struct inode *inode) { if (inode->i_sb->s_cop->dummy_context && inode->i_sb->s_cop->dummy_context(inode)) return true; return false; }

Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers39100.00%1100.00%
Total39100.00%1100.00%


static inline bool fscrypt_valid_contents_enc_mode(u32 mode) { return (mode == FS_ENCRYPTION_MODE_AES_256_XTS); }

Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers17100.00%1100.00%
Total17100.00%1100.00%


static inline bool fscrypt_valid_filenames_enc_mode(u32 mode) { return (mode == FS_ENCRYPTION_MODE_AES_256_CTS); }

Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers17100.00%1100.00%
Total17100.00%1100.00%


static inline bool fscrypt_is_dot_dotdot(const struct qstr *str) { if (str->len == 1 && str->name[0] == '.') return true; if (str->len == 2 && str->name[0] == '.' && str->name[1] == '.') return true; return false; }

Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers65100.00%1100.00%
Total65100.00%1100.00%


static inline struct page *fscrypt_control_page(struct page *page) { #if IS_ENABLED(CONFIG_FS_ENCRYPTION) return ((struct fscrypt_ctx *)page_private(page))->w.control_page; #else WARN_ON_ONCE(1); return ERR_PTR(-EINVAL); #endif }

Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers53100.00%1100.00%
Total53100.00%1100.00%


static inline int fscrypt_has_encryption_key(const struct inode *inode) { #if IS_ENABLED(CONFIG_FS_ENCRYPTION) return (inode->i_crypt_info != NULL); #else return 0; #endif }

Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers35100.00%1100.00%
Total35100.00%1100.00%

#endif /* _LINUX_FSCRYPT_COMMON_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Eric Biggers531100.00%1100.00%
Total531100.00%1100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.