mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
bpf: Drop redundant hash_buf from map_get_hash operation
bpf_map_get_info_by_fd() is the only caller of the ->map_get_hash and always invokes it with hash_buf == map->sha and hash_buf_size of SHA256_DIGEST_SIZE. array_map_get_hash() in turn lets sha256() write the digest directly into that buffer (map->sha) and then performs a trailing memcpy(), which evaluates to memcpy(map->sha, map->sha, 32): a redundant self-copy. The hash_buf_size argument was never used at all. Simplify this a bit, no functional change. Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link: https://lore.kernel.org/r/20260601150248.394863-3-daniel@iogearbox.net Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
9a3c3c49c3
commit
c48c3a7e7d
|
|
@ -111,7 +111,7 @@ struct bpf_map_ops {
|
|||
long (*map_pop_elem)(struct bpf_map *map, void *value);
|
||||
long (*map_peek_elem)(struct bpf_map *map, void *value);
|
||||
void *(*map_lookup_percpu_elem)(struct bpf_map *map, void *key, u32 cpu);
|
||||
int (*map_get_hash)(struct bpf_map *map, u32 hash_buf_size, void *hash_buf);
|
||||
int (*map_get_hash)(struct bpf_map *map);
|
||||
|
||||
/* funcs called by prog_array and perf_event_array map */
|
||||
void *(*map_fd_get_ptr)(struct bpf_map *map, struct file *map_file,
|
||||
|
|
|
|||
|
|
@ -175,14 +175,12 @@ static void *array_map_lookup_elem(struct bpf_map *map, void *key)
|
|||
return array->value + (u64)array->elem_size * (index & array->index_mask);
|
||||
}
|
||||
|
||||
static int array_map_get_hash(struct bpf_map *map, u32 hash_buf_size,
|
||||
void *hash_buf)
|
||||
static int array_map_get_hash(struct bpf_map *map)
|
||||
{
|
||||
struct bpf_array *array = container_of(map, struct bpf_array, map);
|
||||
|
||||
sha256(array->value, (u64)array->elem_size * array->map.max_entries,
|
||||
hash_buf);
|
||||
memcpy(array->map.sha, hash_buf, sizeof(array->map.sha));
|
||||
array->map.sha);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5434,18 +5434,16 @@ static int bpf_map_get_info_by_fd(struct file *file,
|
|||
|
||||
if (!map->ops->map_get_hash)
|
||||
return -EINVAL;
|
||||
|
||||
if (info.hash_size != SHA256_DIGEST_SIZE)
|
||||
if (info.hash_size != sizeof(map->sha))
|
||||
return -EINVAL;
|
||||
|
||||
if (!READ_ONCE(map->frozen))
|
||||
return -EPERM;
|
||||
|
||||
err = map->ops->map_get_hash(map, SHA256_DIGEST_SIZE, map->sha);
|
||||
err = map->ops->map_get_hash(map);
|
||||
if (err != 0)
|
||||
return err;
|
||||
|
||||
if (copy_to_user(uhash, map->sha, SHA256_DIGEST_SIZE) != 0)
|
||||
if (copy_to_user(uhash, map->sha, sizeof(map->sha)) != 0)
|
||||
return -EFAULT;
|
||||
} else if (info.hash_size) {
|
||||
return -EINVAL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user