mirror of
https://github.com/torvalds/linux
synced 2024-10-15 07:47:34 +00:00
fsverity: store log2(digest_size) precomputed
Add log_digestsize to struct merkle_tree_params so that it can be used in verify.c. Also save memory by using u8 for all the log_* fields. Signed-off-by: Eric Biggers <ebiggers@google.com> Reviewed-by: Andrey Albershteyn <aalbersh@redhat.com> Tested-by: Ojaswin Mujoo <ojaswin@linux.ibm.com> Link: https://lore.kernel.org/r/20221223203638.41293-4-ebiggers@kernel.org
This commit is contained in:
parent
9098f36b73
commit
579a12f78d
|
@ -42,8 +42,9 @@ struct merkle_tree_params {
|
|||
unsigned int digest_size; /* same as hash_alg->digest_size */
|
||||
unsigned int block_size; /* size of data and tree blocks */
|
||||
unsigned int hashes_per_block; /* number of hashes per tree block */
|
||||
unsigned int log_blocksize; /* log2(block_size) */
|
||||
unsigned int log_arity; /* log2(hashes_per_block) */
|
||||
u8 log_digestsize; /* log2(digest_size) */
|
||||
u8 log_blocksize; /* log2(block_size) */
|
||||
u8 log_arity; /* log2(hashes_per_block) */
|
||||
unsigned int num_levels; /* number of levels in Merkle tree */
|
||||
u64 tree_size; /* Merkle tree size in bytes */
|
||||
unsigned long tree_pages; /* Merkle tree size in pages */
|
||||
|
|
|
@ -76,7 +76,8 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params,
|
|||
err = -EINVAL;
|
||||
goto out_err;
|
||||
}
|
||||
params->log_arity = params->log_blocksize - ilog2(params->digest_size);
|
||||
params->log_digestsize = ilog2(params->digest_size);
|
||||
params->log_arity = log_blocksize - params->log_digestsize;
|
||||
params->hashes_per_block = 1 << params->log_arity;
|
||||
|
||||
/*
|
||||
|
|
|
@ -35,7 +35,7 @@ static void hash_at_level(const struct merkle_tree_params *params,
|
|||
|
||||
/* Offset of the wanted hash (in bytes) within the hash block */
|
||||
*hoffset = (position & ((1 << params->log_arity) - 1)) <<
|
||||
(params->log_blocksize - params->log_arity);
|
||||
params->log_digestsize;
|
||||
}
|
||||
|
||||
static inline int cmp_hashes(const struct fsverity_info *vi,
|
||||
|
|
Loading…
Reference in a new issue