Commit 4bd70b53 authored by Eric Biggers's avatar Eric Biggers
Browse files

fsverity: Remove inode parameter from fsverity_hash_block()



Due to the conversion from crypto_shash to the library API,
fsverity_hash_block() can no longer fail.  Therefore, the inode
parameter, which was used only to print an error message in the case of
a failure, is no longer necessary.  Remove it.

Reviewed-by: default avatarArd Biesheuvel <ardb@kernel.org>
Link: https://lore.kernel.org/r/20250915160819.140019-6-ebiggers@kernel.org


Signed-off-by: default avatarEric Biggers <ebiggers@kernel.org>
parent 6733968b
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -19,8 +19,7 @@ struct block_buffer {
};

/* Hash a block, writing the result to the next level's pending block buffer. */
static int hash_one_block(struct inode *inode,
			  const struct merkle_tree_params *params,
static int hash_one_block(const struct merkle_tree_params *params,
			  struct block_buffer *cur)
{
	struct block_buffer *next = cur + 1;
@@ -36,8 +35,7 @@ static int hash_one_block(struct inode *inode,
	/* Zero-pad the block if it's shorter than the block size. */
	memset(&cur->data[cur->filled], 0, params->block_size - cur->filled);

	fsverity_hash_block(params, inode, cur->data,
			    &next->data[next->filled]);
	fsverity_hash_block(params, cur->data, &next->data[next->filled]);
	next->filled += params->digest_size;
	cur->filled = 0;
	return 0;
@@ -123,7 +121,7 @@ static int build_merkle_tree(struct file *filp,
			fsverity_err(inode, "Short read of file data");
			goto out;
		}
		err = hash_one_block(inode, params, &buffers[-1]);
		err = hash_one_block(params, &buffers[-1]);
		if (err)
			goto out;
		for (level = 0; level < num_levels; level++) {
@@ -134,7 +132,7 @@ static int build_merkle_tree(struct file *filp,
			}
			/* Next block at @level is full */

			err = hash_one_block(inode, params, &buffers[level]);
			err = hash_one_block(params, &buffers[level]);
			if (err)
				goto out;
			err = write_merkle_tree_block(inode,
@@ -154,7 +152,7 @@ static int build_merkle_tree(struct file *filp,
	/* Finish all nonempty pending tree blocks. */
	for (level = 0; level < num_levels; level++) {
		if (buffers[level].filled != 0) {
			err = hash_one_block(inode, params, &buffers[level]);
			err = hash_one_block(params, &buffers[level]);
			if (err)
				goto out;
			err = write_merkle_tree_block(inode,
+1 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ union fsverity_hash_ctx *
fsverity_prepare_hash_state(const struct fsverity_hash_alg *alg,
			    const u8 *salt, size_t salt_size);
void fsverity_hash_block(const struct merkle_tree_params *params,
			 const struct inode *inode, const void *data, u8 *out);
			 const void *data, u8 *out);
void fsverity_hash_buffer(const struct fsverity_hash_alg *alg,
			  const void *data, size_t size, u8 *out);
void __init fsverity_check_hash_algs(void);
+1 −2
Original line number Diff line number Diff line
@@ -94,7 +94,6 @@ fsverity_prepare_hash_state(const struct fsverity_hash_alg *alg,
/**
 * fsverity_hash_block() - hash a single data or hash block
 * @params: the Merkle tree's parameters
 * @inode: inode for which the hashing is being done
 * @data: virtual address of a buffer containing the block to hash
 * @out: output digest, size 'params->digest_size' bytes
 *
@@ -102,7 +101,7 @@ fsverity_prepare_hash_state(const struct fsverity_hash_alg *alg,
 * in the Merkle tree parameters.
 */
void fsverity_hash_block(const struct merkle_tree_params *params,
			 const struct inode *inode, const void *data, u8 *out)
			 const void *data, u8 *out)
{
	union fsverity_hash_ctx ctx;

+2 −2
Original line number Diff line number Diff line
@@ -202,7 +202,7 @@ verify_data_block(struct inode *inode, struct fsverity_info *vi,
		unsigned long hblock_idx = hblocks[level - 1].index;
		unsigned int hoffset = hblocks[level - 1].hoffset;

		fsverity_hash_block(params, inode, haddr, real_hash);
		fsverity_hash_block(params, haddr, real_hash);
		if (memcmp(want_hash, real_hash, hsize) != 0)
			goto corrupted;
		/*
@@ -221,7 +221,7 @@ verify_data_block(struct inode *inode, struct fsverity_info *vi,
	}

	/* Finally, verify the data block. */
	fsverity_hash_block(params, inode, data, real_hash);
	fsverity_hash_block(params, data, real_hash);
	if (memcmp(want_hash, real_hash, hsize) != 0)
		goto corrupted;
	return true;