Commit 8eb8af4b authored by Eric Biggers's avatar Eric Biggers

fsverity: use WARN_ON_ONCE instead of WARN_ON

As per Linus's suggestion
(https://lore.kernel.org/r/CAHk-=whefxRGyNGzCzG6BVeM=5vnvgb-XhSeFJVxJyAxAF8XRA@mail.gmail.com),
use WARN_ON_ONCE instead of WARN_ON.  This barely adds any extra
overhead, and it makes it so that if any of these ever becomes reachable
(they shouldn't, but that's the point), the logs can't be flooded.

Link: https://lore.kernel.org/r/20230406181542.38894-1-ebiggers@kernel.orgReviewed-by: default avatarChaitanya Kulkarni <kch@nvidia.com>
Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
Signed-off-by: default avatarEric Biggers <ebiggers@google.com>
parent 1238c8b9
...@@ -165,7 +165,7 @@ static int build_merkle_tree(struct file *filp, ...@@ -165,7 +165,7 @@ static int build_merkle_tree(struct file *filp,
} }
} }
/* The root hash was filled by the last call to hash_one_block(). */ /* The root hash was filled by the last call to hash_one_block(). */
if (WARN_ON(buffers[num_levels].filled != params->digest_size)) { if (WARN_ON_ONCE(buffers[num_levels].filled != params->digest_size)) {
err = -EINVAL; err = -EINVAL;
goto out; goto out;
} }
...@@ -277,7 +277,7 @@ static int enable_verity(struct file *filp, ...@@ -277,7 +277,7 @@ static int enable_verity(struct file *filp,
fsverity_err(inode, "%ps() failed with err %d", fsverity_err(inode, "%ps() failed with err %d",
vops->end_enable_verity, err); vops->end_enable_verity, err);
fsverity_free_info(vi); fsverity_free_info(vi);
} else if (WARN_ON(!IS_VERITY(inode))) { } else if (WARN_ON_ONCE(!IS_VERITY(inode))) {
err = -EINVAL; err = -EINVAL;
fsverity_free_info(vi); fsverity_free_info(vi);
} else { } else {
......
...@@ -84,9 +84,9 @@ struct fsverity_hash_alg *fsverity_get_hash_alg(const struct inode *inode, ...@@ -84,9 +84,9 @@ struct fsverity_hash_alg *fsverity_get_hash_alg(const struct inode *inode,
} }
err = -EINVAL; err = -EINVAL;
if (WARN_ON(alg->digest_size != crypto_ahash_digestsize(tfm))) if (WARN_ON_ONCE(alg->digest_size != crypto_ahash_digestsize(tfm)))
goto err_free_tfm; goto err_free_tfm;
if (WARN_ON(alg->block_size != crypto_ahash_blocksize(tfm))) if (WARN_ON_ONCE(alg->block_size != crypto_ahash_blocksize(tfm)))
goto err_free_tfm; goto err_free_tfm;
err = mempool_init_kmalloc_pool(&alg->req_pool, 1, err = mempool_init_kmalloc_pool(&alg->req_pool, 1,
......
...@@ -83,7 +83,7 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params, ...@@ -83,7 +83,7 @@ int fsverity_init_merkle_tree_params(struct merkle_tree_params *params,
params->log_blocks_per_page = PAGE_SHIFT - log_blocksize; params->log_blocks_per_page = PAGE_SHIFT - log_blocksize;
params->blocks_per_page = 1 << params->log_blocks_per_page; params->blocks_per_page = 1 << params->log_blocks_per_page;
if (WARN_ON(!is_power_of_2(params->digest_size))) { if (WARN_ON_ONCE(!is_power_of_2(params->digest_size))) {
err = -EINVAL; err = -EINVAL;
goto out_err; goto out_err;
} }
......
...@@ -233,18 +233,18 @@ static inline int fsverity_ioctl_read_metadata(struct file *filp, ...@@ -233,18 +233,18 @@ static inline int fsverity_ioctl_read_metadata(struct file *filp,
static inline bool fsverity_verify_blocks(struct folio *folio, size_t len, static inline bool fsverity_verify_blocks(struct folio *folio, size_t len,
size_t offset) size_t offset)
{ {
WARN_ON(1); WARN_ON_ONCE(1);
return false; return false;
} }
static inline void fsverity_verify_bio(struct bio *bio) static inline void fsverity_verify_bio(struct bio *bio)
{ {
WARN_ON(1); WARN_ON_ONCE(1);
} }
static inline void fsverity_enqueue_verify_work(struct work_struct *work) static inline void fsverity_enqueue_verify_work(struct work_struct *work)
{ {
WARN_ON(1); WARN_ON_ONCE(1);
} }
#endif /* !CONFIG_FS_VERITY */ #endif /* !CONFIG_FS_VERITY */
......
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