Commit 3e7807d5 authored by Josef Bacik's avatar Josef Bacik Committed by Eric Biggers

fscrypt: rename fscrypt_info => fscrypt_inode_info

We are going to track per-extent information, so it'll be necessary to
distinguish between inode infos and extent infos.  Rename fscrypt_info
to fscrypt_inode_info, adjusting any lines that now exceed 80
characters.
Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
[ebiggers: rebased onto fscrypt tree, renamed fscrypt_get_info(),
 adjusted two comments, and fixed some lines over 80 characters]
Link: https://lore.kernel.org/r/20231005025757.33521-1-ebiggers@kernel.orgReviewed-by: default avatarNeal Gompa <neal@gompa.dev>
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
parent 5b118884
...@@ -111,7 +111,7 @@ static int fscrypt_zeroout_range_inline_crypt(const struct inode *inode, ...@@ -111,7 +111,7 @@ static int fscrypt_zeroout_range_inline_crypt(const struct inode *inode,
int fscrypt_zeroout_range(const struct inode *inode, pgoff_t lblk, int fscrypt_zeroout_range(const struct inode *inode, pgoff_t lblk,
sector_t pblk, unsigned int len) sector_t pblk, unsigned int len)
{ {
const struct fscrypt_info *ci = inode->i_crypt_info; const struct fscrypt_inode_info *ci = inode->i_crypt_info;
const unsigned int du_bits = ci->ci_data_unit_bits; const unsigned int du_bits = ci->ci_data_unit_bits;
const unsigned int du_size = 1U << du_bits; const unsigned int du_size = 1U << du_bits;
const unsigned int du_per_page_bits = PAGE_SHIFT - du_bits; const unsigned int du_per_page_bits = PAGE_SHIFT - du_bits;
......
...@@ -39,7 +39,7 @@ static mempool_t *fscrypt_bounce_page_pool = NULL; ...@@ -39,7 +39,7 @@ static mempool_t *fscrypt_bounce_page_pool = NULL;
static struct workqueue_struct *fscrypt_read_workqueue; static struct workqueue_struct *fscrypt_read_workqueue;
static DEFINE_MUTEX(fscrypt_init_mutex); static DEFINE_MUTEX(fscrypt_init_mutex);
struct kmem_cache *fscrypt_info_cachep; struct kmem_cache *fscrypt_inode_info_cachep;
void fscrypt_enqueue_decrypt_work(struct work_struct *work) void fscrypt_enqueue_decrypt_work(struct work_struct *work)
{ {
...@@ -85,7 +85,7 @@ EXPORT_SYMBOL(fscrypt_free_bounce_page); ...@@ -85,7 +85,7 @@ EXPORT_SYMBOL(fscrypt_free_bounce_page);
* simply contain the data unit index (e.g., IV_INO_LBLK_32). * simply contain the data unit index (e.g., IV_INO_LBLK_32).
*/ */
void fscrypt_generate_iv(union fscrypt_iv *iv, u64 index, void fscrypt_generate_iv(union fscrypt_iv *iv, u64 index,
const struct fscrypt_info *ci) const struct fscrypt_inode_info *ci)
{ {
u8 flags = fscrypt_policy_flags(&ci->ci_policy); u8 flags = fscrypt_policy_flags(&ci->ci_policy);
...@@ -105,7 +105,7 @@ void fscrypt_generate_iv(union fscrypt_iv *iv, u64 index, ...@@ -105,7 +105,7 @@ void fscrypt_generate_iv(union fscrypt_iv *iv, u64 index,
} }
/* Encrypt or decrypt a single "data unit" of file contents. */ /* Encrypt or decrypt a single "data unit" of file contents. */
int fscrypt_crypt_data_unit(const struct fscrypt_info *ci, int fscrypt_crypt_data_unit(const struct fscrypt_inode_info *ci,
fscrypt_direction_t rw, u64 index, fscrypt_direction_t rw, u64 index,
struct page *src_page, struct page *dest_page, struct page *src_page, struct page *dest_page,
unsigned int len, unsigned int offs, unsigned int len, unsigned int offs,
...@@ -184,7 +184,7 @@ struct page *fscrypt_encrypt_pagecache_blocks(struct page *page, ...@@ -184,7 +184,7 @@ struct page *fscrypt_encrypt_pagecache_blocks(struct page *page,
{ {
const struct inode *inode = page->mapping->host; const struct inode *inode = page->mapping->host;
const struct fscrypt_info *ci = inode->i_crypt_info; const struct fscrypt_inode_info *ci = inode->i_crypt_info;
const unsigned int du_bits = ci->ci_data_unit_bits; const unsigned int du_bits = ci->ci_data_unit_bits;
const unsigned int du_size = 1U << du_bits; const unsigned int du_size = 1U << du_bits;
struct page *ciphertext_page; struct page *ciphertext_page;
...@@ -267,7 +267,7 @@ int fscrypt_decrypt_pagecache_blocks(struct folio *folio, size_t len, ...@@ -267,7 +267,7 @@ int fscrypt_decrypt_pagecache_blocks(struct folio *folio, size_t len,
size_t offs) size_t offs)
{ {
const struct inode *inode = folio->mapping->host; const struct inode *inode = folio->mapping->host;
const struct fscrypt_info *ci = inode->i_crypt_info; const struct fscrypt_inode_info *ci = inode->i_crypt_info;
const unsigned int du_bits = ci->ci_data_unit_bits; const unsigned int du_bits = ci->ci_data_unit_bits;
const unsigned int du_size = 1U << du_bits; const unsigned int du_size = 1U << du_bits;
u64 index = ((u64)folio->index << (PAGE_SHIFT - du_bits)) + u64 index = ((u64)folio->index << (PAGE_SHIFT - du_bits)) +
...@@ -409,18 +409,19 @@ static int __init fscrypt_init(void) ...@@ -409,18 +409,19 @@ static int __init fscrypt_init(void)
if (!fscrypt_read_workqueue) if (!fscrypt_read_workqueue)
goto fail; goto fail;
fscrypt_info_cachep = KMEM_CACHE(fscrypt_info, SLAB_RECLAIM_ACCOUNT); fscrypt_inode_info_cachep = KMEM_CACHE(fscrypt_inode_info,
if (!fscrypt_info_cachep) SLAB_RECLAIM_ACCOUNT);
if (!fscrypt_inode_info_cachep)
goto fail_free_queue; goto fail_free_queue;
err = fscrypt_init_keyring(); err = fscrypt_init_keyring();
if (err) if (err)
goto fail_free_info; goto fail_free_inode_info;
return 0; return 0;
fail_free_info: fail_free_inode_info:
kmem_cache_destroy(fscrypt_info_cachep); kmem_cache_destroy(fscrypt_inode_info_cachep);
fail_free_queue: fail_free_queue:
destroy_workqueue(fscrypt_read_workqueue); destroy_workqueue(fscrypt_read_workqueue);
fail: fail:
......
...@@ -100,7 +100,7 @@ int fscrypt_fname_encrypt(const struct inode *inode, const struct qstr *iname, ...@@ -100,7 +100,7 @@ int fscrypt_fname_encrypt(const struct inode *inode, const struct qstr *iname,
{ {
struct skcipher_request *req = NULL; struct skcipher_request *req = NULL;
DECLARE_CRYPTO_WAIT(wait); DECLARE_CRYPTO_WAIT(wait);
const struct fscrypt_info *ci = inode->i_crypt_info; const struct fscrypt_inode_info *ci = inode->i_crypt_info;
struct crypto_skcipher *tfm = ci->ci_enc_key.tfm; struct crypto_skcipher *tfm = ci->ci_enc_key.tfm;
union fscrypt_iv iv; union fscrypt_iv iv;
struct scatterlist sg; struct scatterlist sg;
...@@ -157,7 +157,7 @@ static int fname_decrypt(const struct inode *inode, ...@@ -157,7 +157,7 @@ static int fname_decrypt(const struct inode *inode,
struct skcipher_request *req = NULL; struct skcipher_request *req = NULL;
DECLARE_CRYPTO_WAIT(wait); DECLARE_CRYPTO_WAIT(wait);
struct scatterlist src_sg, dst_sg; struct scatterlist src_sg, dst_sg;
const struct fscrypt_info *ci = inode->i_crypt_info; const struct fscrypt_inode_info *ci = inode->i_crypt_info;
struct crypto_skcipher *tfm = ci->ci_enc_key.tfm; struct crypto_skcipher *tfm = ci->ci_enc_key.tfm;
union fscrypt_iv iv; union fscrypt_iv iv;
int res; int res;
...@@ -568,7 +568,7 @@ EXPORT_SYMBOL_GPL(fscrypt_match_name); ...@@ -568,7 +568,7 @@ EXPORT_SYMBOL_GPL(fscrypt_match_name);
*/ */
u64 fscrypt_fname_siphash(const struct inode *dir, const struct qstr *name) u64 fscrypt_fname_siphash(const struct inode *dir, const struct qstr *name)
{ {
const struct fscrypt_info *ci = dir->i_crypt_info; const struct fscrypt_inode_info *ci = dir->i_crypt_info;
WARN_ON_ONCE(!ci->ci_dirhash_key_initialized); WARN_ON_ONCE(!ci->ci_dirhash_key_initialized);
......
...@@ -210,18 +210,18 @@ struct fscrypt_prepared_key { ...@@ -210,18 +210,18 @@ struct fscrypt_prepared_key {
}; };
/* /*
* fscrypt_info - the "encryption key" for an inode * fscrypt_inode_info - the "encryption key" for an inode
* *
* When an encrypted file's key is made available, an instance of this struct is * When an encrypted file's key is made available, an instance of this struct is
* allocated and stored in ->i_crypt_info. Once created, it remains until the * allocated and stored in ->i_crypt_info. Once created, it remains until the
* inode is evicted. * inode is evicted.
*/ */
struct fscrypt_info { struct fscrypt_inode_info {
/* The key in a form prepared for actual encryption/decryption */ /* The key in a form prepared for actual encryption/decryption */
struct fscrypt_prepared_key ci_enc_key; struct fscrypt_prepared_key ci_enc_key;
/* True if ci_enc_key should be freed when this fscrypt_info is freed */ /* True if ci_enc_key should be freed when this struct is freed */
bool ci_owns_key; bool ci_owns_key;
#ifdef CONFIG_FS_ENCRYPTION_INLINE_CRYPT #ifdef CONFIG_FS_ENCRYPTION_INLINE_CRYPT
...@@ -294,9 +294,9 @@ typedef enum { ...@@ -294,9 +294,9 @@ typedef enum {
} fscrypt_direction_t; } fscrypt_direction_t;
/* crypto.c */ /* crypto.c */
extern struct kmem_cache *fscrypt_info_cachep; extern struct kmem_cache *fscrypt_inode_info_cachep;
int fscrypt_initialize(struct super_block *sb); int fscrypt_initialize(struct super_block *sb);
int fscrypt_crypt_data_unit(const struct fscrypt_info *ci, int fscrypt_crypt_data_unit(const struct fscrypt_inode_info *ci,
fscrypt_direction_t rw, u64 index, fscrypt_direction_t rw, u64 index,
struct page *src_page, struct page *dest_page, struct page *src_page, struct page *dest_page,
unsigned int len, unsigned int offs, unsigned int len, unsigned int offs,
...@@ -326,7 +326,7 @@ union fscrypt_iv { ...@@ -326,7 +326,7 @@ union fscrypt_iv {
}; };
void fscrypt_generate_iv(union fscrypt_iv *iv, u64 index, void fscrypt_generate_iv(union fscrypt_iv *iv, u64 index,
const struct fscrypt_info *ci); const struct fscrypt_inode_info *ci);
/* /*
* Return the number of bits used by the maximum file data unit index that is * Return the number of bits used by the maximum file data unit index that is
...@@ -374,17 +374,17 @@ void fscrypt_destroy_hkdf(struct fscrypt_hkdf *hkdf); ...@@ -374,17 +374,17 @@ void fscrypt_destroy_hkdf(struct fscrypt_hkdf *hkdf);
/* inline_crypt.c */ /* inline_crypt.c */
#ifdef CONFIG_FS_ENCRYPTION_INLINE_CRYPT #ifdef CONFIG_FS_ENCRYPTION_INLINE_CRYPT
int fscrypt_select_encryption_impl(struct fscrypt_info *ci); int fscrypt_select_encryption_impl(struct fscrypt_inode_info *ci);
static inline bool static inline bool
fscrypt_using_inline_encryption(const struct fscrypt_info *ci) fscrypt_using_inline_encryption(const struct fscrypt_inode_info *ci)
{ {
return ci->ci_inlinecrypt; return ci->ci_inlinecrypt;
} }
int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key, int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
const u8 *raw_key, const u8 *raw_key,
const struct fscrypt_info *ci); const struct fscrypt_inode_info *ci);
void fscrypt_destroy_inline_crypt_key(struct super_block *sb, void fscrypt_destroy_inline_crypt_key(struct super_block *sb,
struct fscrypt_prepared_key *prep_key); struct fscrypt_prepared_key *prep_key);
...@@ -395,7 +395,7 @@ void fscrypt_destroy_inline_crypt_key(struct super_block *sb, ...@@ -395,7 +395,7 @@ void fscrypt_destroy_inline_crypt_key(struct super_block *sb,
*/ */
static inline bool static inline bool
fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key, fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
const struct fscrypt_info *ci) const struct fscrypt_inode_info *ci)
{ {
/* /*
* The two smp_load_acquire()'s here pair with the smp_store_release()'s * The two smp_load_acquire()'s here pair with the smp_store_release()'s
...@@ -412,13 +412,13 @@ fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key, ...@@ -412,13 +412,13 @@ fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
#else /* CONFIG_FS_ENCRYPTION_INLINE_CRYPT */ #else /* CONFIG_FS_ENCRYPTION_INLINE_CRYPT */
static inline int fscrypt_select_encryption_impl(struct fscrypt_info *ci) static inline int fscrypt_select_encryption_impl(struct fscrypt_inode_info *ci)
{ {
return 0; return 0;
} }
static inline bool static inline bool
fscrypt_using_inline_encryption(const struct fscrypt_info *ci) fscrypt_using_inline_encryption(const struct fscrypt_inode_info *ci)
{ {
return false; return false;
} }
...@@ -426,7 +426,7 @@ fscrypt_using_inline_encryption(const struct fscrypt_info *ci) ...@@ -426,7 +426,7 @@ fscrypt_using_inline_encryption(const struct fscrypt_info *ci)
static inline int static inline int
fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key, fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
const u8 *raw_key, const u8 *raw_key,
const struct fscrypt_info *ci) const struct fscrypt_inode_info *ci)
{ {
WARN_ON_ONCE(1); WARN_ON_ONCE(1);
return -EOPNOTSUPP; return -EOPNOTSUPP;
...@@ -440,7 +440,7 @@ fscrypt_destroy_inline_crypt_key(struct super_block *sb, ...@@ -440,7 +440,7 @@ fscrypt_destroy_inline_crypt_key(struct super_block *sb,
static inline bool static inline bool
fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key, fscrypt_is_key_prepared(struct fscrypt_prepared_key *prep_key,
const struct fscrypt_info *ci) const struct fscrypt_inode_info *ci)
{ {
return smp_load_acquire(&prep_key->tfm) != NULL; return smp_load_acquire(&prep_key->tfm) != NULL;
} }
...@@ -640,17 +640,18 @@ struct fscrypt_mode { ...@@ -640,17 +640,18 @@ struct fscrypt_mode {
extern struct fscrypt_mode fscrypt_modes[]; extern struct fscrypt_mode fscrypt_modes[];
int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key, int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key,
const u8 *raw_key, const struct fscrypt_info *ci); const u8 *raw_key, const struct fscrypt_inode_info *ci);
void fscrypt_destroy_prepared_key(struct super_block *sb, void fscrypt_destroy_prepared_key(struct super_block *sb,
struct fscrypt_prepared_key *prep_key); struct fscrypt_prepared_key *prep_key);
int fscrypt_set_per_file_enc_key(struct fscrypt_info *ci, const u8 *raw_key); int fscrypt_set_per_file_enc_key(struct fscrypt_inode_info *ci,
const u8 *raw_key);
int fscrypt_derive_dirhash_key(struct fscrypt_info *ci, int fscrypt_derive_dirhash_key(struct fscrypt_inode_info *ci,
const struct fscrypt_master_key *mk); const struct fscrypt_master_key *mk);
void fscrypt_hash_inode_number(struct fscrypt_info *ci, void fscrypt_hash_inode_number(struct fscrypt_inode_info *ci,
const struct fscrypt_master_key *mk); const struct fscrypt_master_key *mk);
int fscrypt_get_encryption_info(struct inode *inode, bool allow_unsupported); int fscrypt_get_encryption_info(struct inode *inode, bool allow_unsupported);
...@@ -685,10 +686,11 @@ static inline int fscrypt_require_key(struct inode *inode) ...@@ -685,10 +686,11 @@ static inline int fscrypt_require_key(struct inode *inode)
void fscrypt_put_direct_key(struct fscrypt_direct_key *dk); void fscrypt_put_direct_key(struct fscrypt_direct_key *dk);
int fscrypt_setup_v1_file_key(struct fscrypt_info *ci, int fscrypt_setup_v1_file_key(struct fscrypt_inode_info *ci,
const u8 *raw_master_key); const u8 *raw_master_key);
int fscrypt_setup_v1_file_key_via_subscribed_keyrings(struct fscrypt_info *ci); int fscrypt_setup_v1_file_key_via_subscribed_keyrings(
struct fscrypt_inode_info *ci);
/* policy.c */ /* policy.c */
......
...@@ -169,7 +169,7 @@ EXPORT_SYMBOL_GPL(__fscrypt_prepare_setattr); ...@@ -169,7 +169,7 @@ EXPORT_SYMBOL_GPL(__fscrypt_prepare_setattr);
int fscrypt_prepare_setflags(struct inode *inode, int fscrypt_prepare_setflags(struct inode *inode,
unsigned int oldflags, unsigned int flags) unsigned int oldflags, unsigned int flags)
{ {
struct fscrypt_info *ci; struct fscrypt_inode_info *ci;
struct fscrypt_master_key *mk; struct fscrypt_master_key *mk;
int err; int err;
......
...@@ -39,7 +39,7 @@ static struct block_device **fscrypt_get_devices(struct super_block *sb, ...@@ -39,7 +39,7 @@ static struct block_device **fscrypt_get_devices(struct super_block *sb,
return devs; return devs;
} }
static unsigned int fscrypt_get_dun_bytes(const struct fscrypt_info *ci) static unsigned int fscrypt_get_dun_bytes(const struct fscrypt_inode_info *ci)
{ {
const struct super_block *sb = ci->ci_inode->i_sb; const struct super_block *sb = ci->ci_inode->i_sb;
unsigned int flags = fscrypt_policy_flags(&ci->ci_policy); unsigned int flags = fscrypt_policy_flags(&ci->ci_policy);
...@@ -89,7 +89,7 @@ static void fscrypt_log_blk_crypto_impl(struct fscrypt_mode *mode, ...@@ -89,7 +89,7 @@ static void fscrypt_log_blk_crypto_impl(struct fscrypt_mode *mode,
} }
/* Enable inline encryption for this file if supported. */ /* Enable inline encryption for this file if supported. */
int fscrypt_select_encryption_impl(struct fscrypt_info *ci) int fscrypt_select_encryption_impl(struct fscrypt_inode_info *ci)
{ {
const struct inode *inode = ci->ci_inode; const struct inode *inode = ci->ci_inode;
struct super_block *sb = inode->i_sb; struct super_block *sb = inode->i_sb;
...@@ -151,7 +151,7 @@ int fscrypt_select_encryption_impl(struct fscrypt_info *ci) ...@@ -151,7 +151,7 @@ int fscrypt_select_encryption_impl(struct fscrypt_info *ci)
int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key, int fscrypt_prepare_inline_crypt_key(struct fscrypt_prepared_key *prep_key,
const u8 *raw_key, const u8 *raw_key,
const struct fscrypt_info *ci) const struct fscrypt_inode_info *ci)
{ {
const struct inode *inode = ci->ci_inode; const struct inode *inode = ci->ci_inode;
struct super_block *sb = inode->i_sb; struct super_block *sb = inode->i_sb;
...@@ -232,7 +232,8 @@ bool __fscrypt_inode_uses_inline_crypto(const struct inode *inode) ...@@ -232,7 +232,8 @@ bool __fscrypt_inode_uses_inline_crypto(const struct inode *inode)
} }
EXPORT_SYMBOL_GPL(__fscrypt_inode_uses_inline_crypto); EXPORT_SYMBOL_GPL(__fscrypt_inode_uses_inline_crypto);
static void fscrypt_generate_dun(const struct fscrypt_info *ci, u64 lblk_num, static void fscrypt_generate_dun(const struct fscrypt_inode_info *ci,
u64 lblk_num,
u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE]) u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE])
{ {
u64 index = lblk_num << ci->ci_data_units_per_block_bits; u64 index = lblk_num << ci->ci_data_units_per_block_bits;
...@@ -266,7 +267,7 @@ static void fscrypt_generate_dun(const struct fscrypt_info *ci, u64 lblk_num, ...@@ -266,7 +267,7 @@ static void fscrypt_generate_dun(const struct fscrypt_info *ci, u64 lblk_num,
void fscrypt_set_bio_crypt_ctx(struct bio *bio, const struct inode *inode, void fscrypt_set_bio_crypt_ctx(struct bio *bio, const struct inode *inode,
u64 first_lblk, gfp_t gfp_mask) u64 first_lblk, gfp_t gfp_mask)
{ {
const struct fscrypt_info *ci; const struct fscrypt_inode_info *ci;
u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE]; u64 dun[BLK_CRYPTO_DUN_ARRAY_SIZE];
if (!fscrypt_inode_uses_inline_crypto(inode)) if (!fscrypt_inode_uses_inline_crypto(inode))
...@@ -457,7 +458,7 @@ EXPORT_SYMBOL_GPL(fscrypt_dio_supported); ...@@ -457,7 +458,7 @@ EXPORT_SYMBOL_GPL(fscrypt_dio_supported);
*/ */
u64 fscrypt_limit_io_blocks(const struct inode *inode, u64 lblk, u64 nr_blocks) u64 fscrypt_limit_io_blocks(const struct inode *inode, u64 lblk, u64 nr_blocks)
{ {
const struct fscrypt_info *ci; const struct fscrypt_inode_info *ci;
u32 dun; u32 dun;
if (!fscrypt_inode_uses_inline_crypto(inode)) if (!fscrypt_inode_uses_inline_crypto(inode))
......
...@@ -867,7 +867,7 @@ static void shrink_dcache_inode(struct inode *inode) ...@@ -867,7 +867,7 @@ static void shrink_dcache_inode(struct inode *inode)
static void evict_dentries_for_decrypted_inodes(struct fscrypt_master_key *mk) static void evict_dentries_for_decrypted_inodes(struct fscrypt_master_key *mk)
{ {
struct fscrypt_info *ci; struct fscrypt_inode_info *ci;
struct inode *inode; struct inode *inode;
struct inode *toput_inode = NULL; struct inode *toput_inode = NULL;
...@@ -917,7 +917,7 @@ static int check_for_busy_inodes(struct super_block *sb, ...@@ -917,7 +917,7 @@ static int check_for_busy_inodes(struct super_block *sb,
/* select an example file to show for debugging purposes */ /* select an example file to show for debugging purposes */
struct inode *inode = struct inode *inode =
list_first_entry(&mk->mk_decrypted_inodes, list_first_entry(&mk->mk_decrypted_inodes,
struct fscrypt_info, struct fscrypt_inode_info,
ci_master_key_link)->ci_inode; ci_master_key_link)->ci_inode;
ino = inode->i_ino; ino = inode->i_ino;
} }
......
...@@ -148,7 +148,7 @@ fscrypt_allocate_skcipher(struct fscrypt_mode *mode, const u8 *raw_key, ...@@ -148,7 +148,7 @@ fscrypt_allocate_skcipher(struct fscrypt_mode *mode, const u8 *raw_key,
* and IV generation method (@ci->ci_policy.flags). * and IV generation method (@ci->ci_policy.flags).
*/ */
int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key, int fscrypt_prepare_key(struct fscrypt_prepared_key *prep_key,
const u8 *raw_key, const struct fscrypt_info *ci) const u8 *raw_key, const struct fscrypt_inode_info *ci)
{ {
struct crypto_skcipher *tfm; struct crypto_skcipher *tfm;
...@@ -178,13 +178,14 @@ void fscrypt_destroy_prepared_key(struct super_block *sb, ...@@ -178,13 +178,14 @@ void fscrypt_destroy_prepared_key(struct super_block *sb,
} }
/* Given a per-file encryption key, set up the file's crypto transform object */ /* Given a per-file encryption key, set up the file's crypto transform object */
int fscrypt_set_per_file_enc_key(struct fscrypt_info *ci, const u8 *raw_key) int fscrypt_set_per_file_enc_key(struct fscrypt_inode_info *ci,
const u8 *raw_key)
{ {
ci->ci_owns_key = true; ci->ci_owns_key = true;
return fscrypt_prepare_key(&ci->ci_enc_key, raw_key, ci); return fscrypt_prepare_key(&ci->ci_enc_key, raw_key, ci);
} }
static int setup_per_mode_enc_key(struct fscrypt_info *ci, static int setup_per_mode_enc_key(struct fscrypt_inode_info *ci,
struct fscrypt_master_key *mk, struct fscrypt_master_key *mk,
struct fscrypt_prepared_key *keys, struct fscrypt_prepared_key *keys,
u8 hkdf_context, bool include_fs_uuid) u8 hkdf_context, bool include_fs_uuid)
...@@ -265,7 +266,7 @@ static int fscrypt_derive_siphash_key(const struct fscrypt_master_key *mk, ...@@ -265,7 +266,7 @@ static int fscrypt_derive_siphash_key(const struct fscrypt_master_key *mk,
return 0; return 0;
} }
int fscrypt_derive_dirhash_key(struct fscrypt_info *ci, int fscrypt_derive_dirhash_key(struct fscrypt_inode_info *ci,
const struct fscrypt_master_key *mk) const struct fscrypt_master_key *mk)
{ {
int err; int err;
...@@ -279,7 +280,7 @@ int fscrypt_derive_dirhash_key(struct fscrypt_info *ci, ...@@ -279,7 +280,7 @@ int fscrypt_derive_dirhash_key(struct fscrypt_info *ci,
return 0; return 0;
} }
void fscrypt_hash_inode_number(struct fscrypt_info *ci, void fscrypt_hash_inode_number(struct fscrypt_inode_info *ci,
const struct fscrypt_master_key *mk) const struct fscrypt_master_key *mk)
{ {
WARN_ON_ONCE(ci->ci_inode->i_ino == 0); WARN_ON_ONCE(ci->ci_inode->i_ino == 0);
...@@ -289,7 +290,7 @@ void fscrypt_hash_inode_number(struct fscrypt_info *ci, ...@@ -289,7 +290,7 @@ void fscrypt_hash_inode_number(struct fscrypt_info *ci,
&mk->mk_ino_hash_key); &mk->mk_ino_hash_key);
} }
static int fscrypt_setup_iv_ino_lblk_32_key(struct fscrypt_info *ci, static int fscrypt_setup_iv_ino_lblk_32_key(struct fscrypt_inode_info *ci,
struct fscrypt_master_key *mk) struct fscrypt_master_key *mk)
{ {
int err; int err;
...@@ -329,7 +330,7 @@ static int fscrypt_setup_iv_ino_lblk_32_key(struct fscrypt_info *ci, ...@@ -329,7 +330,7 @@ static int fscrypt_setup_iv_ino_lblk_32_key(struct fscrypt_info *ci,
return 0; return 0;
} }
static int fscrypt_setup_v2_file_key(struct fscrypt_info *ci, static int fscrypt_setup_v2_file_key(struct fscrypt_inode_info *ci,
struct fscrypt_master_key *mk, struct fscrypt_master_key *mk,
bool need_dirhash_key) bool need_dirhash_key)
{ {
...@@ -404,7 +405,7 @@ static int fscrypt_setup_v2_file_key(struct fscrypt_info *ci, ...@@ -404,7 +405,7 @@ static int fscrypt_setup_v2_file_key(struct fscrypt_info *ci,
* still allow 512-bit master keys if the user chooses to use them, though.) * still allow 512-bit master keys if the user chooses to use them, though.)
*/ */
static bool fscrypt_valid_master_key_size(const struct fscrypt_master_key *mk, static bool fscrypt_valid_master_key_size(const struct fscrypt_master_key *mk,
const struct fscrypt_info *ci) const struct fscrypt_inode_info *ci)
{ {
unsigned int min_keysize; unsigned int min_keysize;
...@@ -430,11 +431,12 @@ static bool fscrypt_valid_master_key_size(const struct fscrypt_master_key *mk, ...@@ -430,11 +431,12 @@ static bool fscrypt_valid_master_key_size(const struct fscrypt_master_key *mk,
* *
* If the master key is found in the filesystem-level keyring, then it is * If the master key is found in the filesystem-level keyring, then it is
* returned in *mk_ret with its semaphore read-locked. This is needed to ensure * returned in *mk_ret with its semaphore read-locked. This is needed to ensure
* that only one task links the fscrypt_info into ->mk_decrypted_inodes (as * that only one task links the fscrypt_inode_info into ->mk_decrypted_inodes
* multiple tasks may race to create an fscrypt_info for the same inode), and to * (as multiple tasks may race to create an fscrypt_inode_info for the same
* synchronize the master key being removed with a new inode starting to use it. * inode), and to synchronize the master key being removed with a new inode
* starting to use it.
*/ */
static int setup_file_encryption_key(struct fscrypt_info *ci, static int setup_file_encryption_key(struct fscrypt_inode_info *ci,
bool need_dirhash_key, bool need_dirhash_key,
struct fscrypt_master_key **mk_ret) struct fscrypt_master_key **mk_ret)
{ {
...@@ -519,7 +521,7 @@ static int setup_file_encryption_key(struct fscrypt_info *ci, ...@@ -519,7 +521,7 @@ static int setup_file_encryption_key(struct fscrypt_info *ci,
return err; return err;
} }
static void put_crypt_info(struct fscrypt_info *ci) static void put_crypt_info(struct fscrypt_inode_info *ci)
{ {
struct fscrypt_master_key *mk; struct fscrypt_master_key *mk;
...@@ -546,7 +548,7 @@ static void put_crypt_info(struct fscrypt_info *ci) ...@@ -546,7 +548,7 @@ static void put_crypt_info(struct fscrypt_info *ci)
fscrypt_put_master_key_activeref(ci->ci_inode->i_sb, mk); fscrypt_put_master_key_activeref(ci->ci_inode->i_sb, mk);
} }
memzero_explicit(ci, sizeof(*ci)); memzero_explicit(ci, sizeof(*ci));
kmem_cache_free(fscrypt_info_cachep, ci); kmem_cache_free(fscrypt_inode_info_cachep, ci);
} }
static int static int
...@@ -555,7 +557,7 @@ fscrypt_setup_encryption_info(struct inode *inode, ...@@ -555,7 +557,7 @@ fscrypt_setup_encryption_info(struct inode *inode,
const u8 nonce[FSCRYPT_FILE_NONCE_SIZE], const u8 nonce[FSCRYPT_FILE_NONCE_SIZE],
bool need_dirhash_key) bool need_dirhash_key)
{ {
struct fscrypt_info *crypt_info; struct fscrypt_inode_info *crypt_info;
struct fscrypt_mode *mode; struct fscrypt_mode *mode;
struct fscrypt_master_key *mk = NULL; struct fscrypt_master_key *mk = NULL;
int res; int res;
...@@ -564,7 +566,7 @@ fscrypt_setup_encryption_info(struct inode *inode, ...@@ -564,7 +566,7 @@ fscrypt_setup_encryption_info(struct inode *inode,
if (res) if (res)
return res; return res;
crypt_info = kmem_cache_zalloc(fscrypt_info_cachep, GFP_KERNEL); crypt_info = kmem_cache_zalloc(fscrypt_inode_info_cachep, GFP_KERNEL);
if (!crypt_info) if (!crypt_info)
return -ENOMEM; return -ENOMEM;
...@@ -592,8 +594,8 @@ fscrypt_setup_encryption_info(struct inode *inode, ...@@ -592,8 +594,8 @@ fscrypt_setup_encryption_info(struct inode *inode,
/* /*
* For existing inodes, multiple tasks may race to set ->i_crypt_info. * For existing inodes, multiple tasks may race to set ->i_crypt_info.
* So use cmpxchg_release(). This pairs with the smp_load_acquire() in * So use cmpxchg_release(). This pairs with the smp_load_acquire() in
* fscrypt_get_info(). I.e., here we publish ->i_crypt_info with a * fscrypt_get_inode_info(). I.e., here we publish ->i_crypt_info with
* RELEASE barrier so that other tasks can ACQUIRE it. * a RELEASE barrier so that other tasks can ACQUIRE it.
*/ */
if (cmpxchg_release(&inode->i_crypt_info, NULL, crypt_info) == NULL) { if (cmpxchg_release(&inode->i_crypt_info, NULL, crypt_info) == NULL) {
/* /*
...@@ -740,8 +742,8 @@ EXPORT_SYMBOL_GPL(fscrypt_prepare_new_inode); ...@@ -740,8 +742,8 @@ EXPORT_SYMBOL_GPL(fscrypt_prepare_new_inode);
* fscrypt_put_encryption_info() - free most of an inode's fscrypt data * fscrypt_put_encryption_info() - free most of an inode's fscrypt data
* @inode: an inode being evicted * @inode: an inode being evicted
* *
* Free the inode's fscrypt_info. Filesystems must call this when the inode is * Free the inode's fscrypt_inode_info. Filesystems must call this when the
* being evicted. An RCU grace period need not have elapsed yet. * inode is being evicted. An RCU grace period need not have elapsed yet.
*/ */
void fscrypt_put_encryption_info(struct inode *inode) void fscrypt_put_encryption_info(struct inode *inode)
{ {
...@@ -778,7 +780,7 @@ EXPORT_SYMBOL(fscrypt_free_inode); ...@@ -778,7 +780,7 @@ EXPORT_SYMBOL(fscrypt_free_inode);
*/ */
int fscrypt_drop_inode(struct inode *inode) int fscrypt_drop_inode(struct inode *inode)
{ {
const struct fscrypt_info *ci = fscrypt_get_info(inode); const struct fscrypt_inode_info *ci = fscrypt_get_inode_info(inode);
/* /*
* If ci is NULL, then the inode doesn't have an encryption key set up * If ci is NULL, then the inode doesn't have an encryption key set up
......
...@@ -178,7 +178,8 @@ void fscrypt_put_direct_key(struct fscrypt_direct_key *dk) ...@@ -178,7 +178,8 @@ void fscrypt_put_direct_key(struct fscrypt_direct_key *dk)
*/ */
static struct fscrypt_direct_key * static struct fscrypt_direct_key *
find_or_insert_direct_key(struct fscrypt_direct_key *to_insert, find_or_insert_direct_key(struct fscrypt_direct_key *to_insert,
const u8 *raw_key, const struct fscrypt_info *ci) const u8 *raw_key,
const struct fscrypt_inode_info *ci)
{ {
unsigned long hash_key; unsigned long hash_key;
struct fscrypt_direct_key *dk; struct fscrypt_direct_key *dk;
...@@ -218,7 +219,7 @@ find_or_insert_direct_key(struct fscrypt_direct_key *to_insert, ...@@ -218,7 +219,7 @@ find_or_insert_direct_key(struct fscrypt_direct_key *to_insert,
/* Prepare to encrypt directly using the master key in the given mode */ /* Prepare to encrypt directly using the master key in the given mode */
static struct fscrypt_direct_key * static struct fscrypt_direct_key *
fscrypt_get_direct_key(const struct fscrypt_info *ci, const u8 *raw_key) fscrypt_get_direct_key(const struct fscrypt_inode_info *ci, const u8 *raw_key)
{ {
struct fscrypt_direct_key *dk; struct fscrypt_direct_key *dk;
int err; int err;
...@@ -250,7 +251,7 @@ fscrypt_get_direct_key(const struct fscrypt_info *ci, const u8 *raw_key) ...@@ -250,7 +251,7 @@ fscrypt_get_direct_key(const struct fscrypt_info *ci, const u8 *raw_key)
} }
/* v1 policy, DIRECT_KEY: use the master key directly */ /* v1 policy, DIRECT_KEY: use the master key directly */
static int setup_v1_file_key_direct(struct fscrypt_info *ci, static int setup_v1_file_key_direct(struct fscrypt_inode_info *ci,
const u8 *raw_master_key) const u8 *raw_master_key)
{ {
struct fscrypt_direct_key *dk; struct fscrypt_direct_key *dk;
...@@ -264,7 +265,7 @@ static int setup_v1_file_key_direct(struct fscrypt_info *ci, ...@@ -264,7 +265,7 @@ static int setup_v1_file_key_direct(struct fscrypt_info *ci,
} }
/* v1 policy, !DIRECT_KEY: derive the file's encryption key */ /* v1 policy, !DIRECT_KEY: derive the file's encryption key */
static int setup_v1_file_key_derived(struct fscrypt_info *ci, static int setup_v1_file_key_derived(struct fscrypt_inode_info *ci,
const u8 *raw_master_key) const u8 *raw_master_key)
{ {
u8 *derived_key; u8 *derived_key;
...@@ -289,7 +290,8 @@ static int setup_v1_file_key_derived(struct fscrypt_info *ci, ...@@ -289,7 +290,8 @@ static int setup_v1_file_key_derived(struct fscrypt_info *ci,
return err; return err;
} }
int fscrypt_setup_v1_file_key(struct fscrypt_info *ci, const u8 *raw_master_key) int fscrypt_setup_v1_file_key(struct fscrypt_inode_info *ci,
const u8 *raw_master_key)
{ {
if (ci->ci_policy.v1.flags & FSCRYPT_POLICY_FLAG_DIRECT_KEY) if (ci->ci_policy.v1.flags & FSCRYPT_POLICY_FLAG_DIRECT_KEY)
return setup_v1_file_key_direct(ci, raw_master_key); return setup_v1_file_key_direct(ci, raw_master_key);
...@@ -297,7 +299,8 @@ int fscrypt_setup_v1_file_key(struct fscrypt_info *ci, const u8 *raw_master_key) ...@@ -297,7 +299,8 @@ int fscrypt_setup_v1_file_key(struct fscrypt_info *ci, const u8 *raw_master_key)
return setup_v1_file_key_derived(ci, raw_master_key); return setup_v1_file_key_derived(ci, raw_master_key);
} }
int fscrypt_setup_v1_file_key_via_subscribed_keyrings(struct fscrypt_info *ci) int
fscrypt_setup_v1_file_key_via_subscribed_keyrings(struct fscrypt_inode_info *ci)
{ {
const struct super_block *sb = ci->ci_inode->i_sb; const struct super_block *sb = ci->ci_inode->i_sb;
struct key *key; struct key *key;
......
...@@ -432,11 +432,11 @@ int fscrypt_policy_from_context(union fscrypt_policy *policy_u, ...@@ -432,11 +432,11 @@ int fscrypt_policy_from_context(union fscrypt_policy *policy_u,
/* Retrieve an inode's encryption policy */ /* Retrieve an inode's encryption policy */
static int fscrypt_get_policy(struct inode *inode, union fscrypt_policy *policy) static int fscrypt_get_policy(struct inode *inode, union fscrypt_policy *policy)
{ {
const struct fscrypt_info *ci; const struct fscrypt_inode_info *ci;
union fscrypt_context ctx; union fscrypt_context ctx;
int ret; int ret;
ci = fscrypt_get_info(inode); ci = fscrypt_get_inode_info(inode);
if (ci) { if (ci) {
/* key available, use the cached policy */ /* key available, use the cached policy */
*policy = ci->ci_policy; *policy = ci->ci_policy;
...@@ -674,7 +674,7 @@ int fscrypt_has_permitted_context(struct inode *parent, struct inode *child) ...@@ -674,7 +674,7 @@ int fscrypt_has_permitted_context(struct inode *parent, struct inode *child)
/* /*
* Both parent and child are encrypted, so verify they use the same * Both parent and child are encrypted, so verify they use the same
* encryption policy. Compare the fscrypt_info structs if the keys are * encryption policy. Compare the cached policies if the keys are
* available, otherwise retrieve and compare the fscrypt_contexts. * available, otherwise retrieve and compare the fscrypt_contexts.
* *
* Note that the fscrypt_context retrieval will be required frequently * Note that the fscrypt_context retrieval will be required frequently
...@@ -744,7 +744,7 @@ const union fscrypt_policy *fscrypt_policy_to_inherit(struct inode *dir) ...@@ -744,7 +744,7 @@ const union fscrypt_policy *fscrypt_policy_to_inherit(struct inode *dir)
*/ */
int fscrypt_context_for_new_inode(void *ctx, struct inode *inode) int fscrypt_context_for_new_inode(void *ctx, struct inode *inode)
{ {
struct fscrypt_info *ci = inode->i_crypt_info; struct fscrypt_inode_info *ci = inode->i_crypt_info;
BUILD_BUG_ON(sizeof(union fscrypt_context) != BUILD_BUG_ON(sizeof(union fscrypt_context) !=
FSCRYPT_SET_CONTEXT_MAX_SIZE); FSCRYPT_SET_CONTEXT_MAX_SIZE);
...@@ -769,7 +769,7 @@ EXPORT_SYMBOL_GPL(fscrypt_context_for_new_inode); ...@@ -769,7 +769,7 @@ EXPORT_SYMBOL_GPL(fscrypt_context_for_new_inode);
*/ */
int fscrypt_set_context(struct inode *inode, void *fs_data) int fscrypt_set_context(struct inode *inode, void *fs_data)
{ {
struct fscrypt_info *ci = inode->i_crypt_info; struct fscrypt_inode_info *ci = inode->i_crypt_info;
union fscrypt_context ctx; union fscrypt_context ctx;
int ctxsize; int ctxsize;
......
...@@ -67,7 +67,7 @@ struct swap_info_struct; ...@@ -67,7 +67,7 @@ struct swap_info_struct;
struct seq_file; struct seq_file;
struct workqueue_struct; struct workqueue_struct;
struct iov_iter; struct iov_iter;
struct fscrypt_info; struct fscrypt_inode_info;
struct fscrypt_operations; struct fscrypt_operations;
struct fsverity_info; struct fsverity_info;
struct fsverity_operations; struct fsverity_operations;
...@@ -738,7 +738,7 @@ struct inode { ...@@ -738,7 +738,7 @@ struct inode {
#endif #endif
#ifdef CONFIG_FS_ENCRYPTION #ifdef CONFIG_FS_ENCRYPTION
struct fscrypt_info *i_crypt_info; struct fscrypt_inode_info *i_crypt_info;
#endif #endif
#ifdef CONFIG_FS_VERITY #ifdef CONFIG_FS_VERITY
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#define FSCRYPT_CONTENTS_ALIGNMENT 16 #define FSCRYPT_CONTENTS_ALIGNMENT 16
union fscrypt_policy; union fscrypt_policy;
struct fscrypt_info; struct fscrypt_inode_info;
struct fs_parameter; struct fs_parameter;
struct seq_file; struct seq_file;
...@@ -192,7 +192,8 @@ struct fscrypt_operations { ...@@ -192,7 +192,8 @@ struct fscrypt_operations {
unsigned int *num_devs); unsigned int *num_devs);
}; };
static inline struct fscrypt_info *fscrypt_get_info(const struct inode *inode) static inline struct fscrypt_inode_info *
fscrypt_get_inode_info(const struct inode *inode)
{ {
/* /*
* Pairs with the cmpxchg_release() in fscrypt_setup_encryption_info(). * Pairs with the cmpxchg_release() in fscrypt_setup_encryption_info().
...@@ -404,7 +405,8 @@ static inline void fscrypt_set_ops(struct super_block *sb, ...@@ -404,7 +405,8 @@ static inline void fscrypt_set_ops(struct super_block *sb,
} }
#else /* !CONFIG_FS_ENCRYPTION */ #else /* !CONFIG_FS_ENCRYPTION */
static inline struct fscrypt_info *fscrypt_get_info(const struct inode *inode) static inline struct fscrypt_inode_info *
fscrypt_get_inode_info(const struct inode *inode)
{ {
return NULL; return NULL;
} }
...@@ -882,7 +884,7 @@ static inline bool fscrypt_inode_uses_fs_layer_crypto(const struct inode *inode) ...@@ -882,7 +884,7 @@ static inline bool fscrypt_inode_uses_fs_layer_crypto(const struct inode *inode)
*/ */
static inline bool fscrypt_has_encryption_key(const struct inode *inode) static inline bool fscrypt_has_encryption_key(const struct inode *inode)
{ {
return fscrypt_get_info(inode) != NULL; return fscrypt_get_inode_info(inode) != NULL;
} }
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment