Merge branch 'fix-compiler-warnings-looking-for-suggestions'
Rafael Passos says: ==================== Fix compiler warnings, looking for suggestions Hi, This patchset has a few fixes to compiler warnings. I am studying the BPF subsystem and wish to bring more tangible contributions. I would appreciate receiving suggestions on things to investigate. I also documented a bit in my blog. I could help with docs here, too. https://rcpassos.me/post/linux-ebpf-understanding-kernel-level-mechanics Thanks! Changelog V1 -> V2: - rebased all commits to updated for-next base - removes new cases of the extra parameter for bpf_jit_binary_pack_finalize - built and tested for ARM64 - sent the series for the test workflow: https://github.com/kernel-patches/bpf/pull/7198 ==================== Acked-by: Puranjay Mohan <puranjay@kernel.org> Acked-by: Jiri Olsa <jolsa@kernel.org> Link: https://lore.kernel.org/r/20240615022641.210320-1-rafael@rcpassos.me Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
@@ -1829,8 +1829,7 @@ skip_init_ctx:
|
||||
prog->jited_len = 0;
|
||||
goto out_free_hdr;
|
||||
}
|
||||
if (WARN_ON(bpf_jit_binary_pack_finalize(prog, ro_header,
|
||||
header))) {
|
||||
if (WARN_ON(bpf_jit_binary_pack_finalize(ro_header, header))) {
|
||||
/* ro_header has been freed */
|
||||
ro_header = NULL;
|
||||
prog = orig_prog;
|
||||
|
||||
@@ -225,7 +225,7 @@ skip_init_ctx:
|
||||
fp->jited_len = proglen + FUNCTION_DESCR_SIZE;
|
||||
|
||||
if (!fp->is_func || extra_pass) {
|
||||
if (bpf_jit_binary_pack_finalize(fp, fhdr, hdr)) {
|
||||
if (bpf_jit_binary_pack_finalize(fhdr, hdr)) {
|
||||
fp = org_fp;
|
||||
goto out_addrs;
|
||||
}
|
||||
@@ -348,7 +348,7 @@ void bpf_jit_free(struct bpf_prog *fp)
|
||||
* before freeing it.
|
||||
*/
|
||||
if (jit_data) {
|
||||
bpf_jit_binary_pack_finalize(fp, jit_data->fhdr, jit_data->hdr);
|
||||
bpf_jit_binary_pack_finalize(jit_data->fhdr, jit_data->hdr);
|
||||
kvfree(jit_data->addrs);
|
||||
kfree(jit_data);
|
||||
}
|
||||
|
||||
@@ -178,8 +178,7 @@ skip_init_ctx:
|
||||
prog->jited_len = prog_size - cfi_get_offset();
|
||||
|
||||
if (!prog->is_func || extra_pass) {
|
||||
if (WARN_ON(bpf_jit_binary_pack_finalize(prog, jit_data->ro_header,
|
||||
jit_data->header))) {
|
||||
if (WARN_ON(bpf_jit_binary_pack_finalize(jit_data->ro_header, jit_data->header))) {
|
||||
/* ro_header has been freed */
|
||||
jit_data->ro_header = NULL;
|
||||
prog = orig_prog;
|
||||
@@ -258,7 +257,7 @@ void bpf_jit_free(struct bpf_prog *prog)
|
||||
* before freeing it.
|
||||
*/
|
||||
if (jit_data) {
|
||||
bpf_jit_binary_pack_finalize(prog, jit_data->ro_header, jit_data->header);
|
||||
bpf_jit_binary_pack_finalize(jit_data->ro_header, jit_data->header);
|
||||
kfree(jit_data);
|
||||
}
|
||||
hdr = bpf_jit_binary_pack_hdr(prog);
|
||||
|
||||
@@ -3356,7 +3356,7 @@ out_image:
|
||||
*
|
||||
* Both cases are serious bugs and justify WARN_ON.
|
||||
*/
|
||||
if (WARN_ON(bpf_jit_binary_pack_finalize(prog, header, rw_header))) {
|
||||
if (WARN_ON(bpf_jit_binary_pack_finalize(header, rw_header))) {
|
||||
/* header has been freed */
|
||||
header = NULL;
|
||||
goto out_image;
|
||||
@@ -3435,7 +3435,7 @@ void bpf_jit_free(struct bpf_prog *prog)
|
||||
* before freeing it.
|
||||
*/
|
||||
if (jit_data) {
|
||||
bpf_jit_binary_pack_finalize(prog, jit_data->header,
|
||||
bpf_jit_binary_pack_finalize(jit_data->header,
|
||||
jit_data->rw_header);
|
||||
kvfree(jit_data->addrs);
|
||||
kfree(jit_data);
|
||||
|
||||
@@ -2933,8 +2933,7 @@ bpf_probe_read_kernel_common(void *dst, u32 size, const void *unsafe_ptr)
|
||||
return ret;
|
||||
}
|
||||
|
||||
void __bpf_free_used_btfs(struct bpf_prog_aux *aux,
|
||||
struct btf_mod_pair *used_btfs, u32 len);
|
||||
void __bpf_free_used_btfs(struct btf_mod_pair *used_btfs, u32 len);
|
||||
|
||||
static inline struct bpf_prog *bpf_prog_get_type(u32 ufd,
|
||||
enum bpf_prog_type type)
|
||||
|
||||
@@ -1129,8 +1129,7 @@ bpf_jit_binary_pack_alloc(unsigned int proglen, u8 **ro_image,
|
||||
struct bpf_binary_header **rw_hdr,
|
||||
u8 **rw_image,
|
||||
bpf_jit_fill_hole_t bpf_fill_ill_insns);
|
||||
int bpf_jit_binary_pack_finalize(struct bpf_prog *prog,
|
||||
struct bpf_binary_header *ro_header,
|
||||
int bpf_jit_binary_pack_finalize(struct bpf_binary_header *ro_header,
|
||||
struct bpf_binary_header *rw_header);
|
||||
void bpf_jit_binary_pack_free(struct bpf_binary_header *ro_header,
|
||||
struct bpf_binary_header *rw_header);
|
||||
|
||||
@@ -1174,8 +1174,7 @@ bpf_jit_binary_pack_alloc(unsigned int proglen, u8 **image_ptr,
|
||||
}
|
||||
|
||||
/* Copy JITed text from rw_header to its final location, the ro_header. */
|
||||
int bpf_jit_binary_pack_finalize(struct bpf_prog *prog,
|
||||
struct bpf_binary_header *ro_header,
|
||||
int bpf_jit_binary_pack_finalize(struct bpf_binary_header *ro_header,
|
||||
struct bpf_binary_header *rw_header)
|
||||
{
|
||||
void *ptr;
|
||||
@@ -2743,8 +2742,7 @@ static void bpf_free_used_maps(struct bpf_prog_aux *aux)
|
||||
kfree(aux->used_maps);
|
||||
}
|
||||
|
||||
void __bpf_free_used_btfs(struct bpf_prog_aux *aux,
|
||||
struct btf_mod_pair *used_btfs, u32 len)
|
||||
void __bpf_free_used_btfs(struct btf_mod_pair *used_btfs, u32 len)
|
||||
{
|
||||
#ifdef CONFIG_BPF_SYSCALL
|
||||
struct btf_mod_pair *btf_mod;
|
||||
@@ -2761,7 +2759,7 @@ void __bpf_free_used_btfs(struct bpf_prog_aux *aux,
|
||||
|
||||
static void bpf_free_used_btfs(struct bpf_prog_aux *aux)
|
||||
{
|
||||
__bpf_free_used_btfs(aux, aux->used_btfs, aux->used_btf_cnt);
|
||||
__bpf_free_used_btfs(aux->used_btfs, aux->used_btf_cnt);
|
||||
kfree(aux->used_btfs);
|
||||
}
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ void bpf_verifier_vlog(struct bpf_verifier_log *log, const char *fmt,
|
||||
goto fail;
|
||||
} else {
|
||||
u64 new_end, new_start;
|
||||
u32 buf_start, buf_end, new_n;
|
||||
u32 buf_start, buf_end;
|
||||
|
||||
new_end = log->end_pos + n;
|
||||
if (new_end - log->start_pos >= log->len_total)
|
||||
|
||||
@@ -18694,8 +18694,7 @@ static void release_maps(struct bpf_verifier_env *env)
|
||||
/* drop refcnt of maps used by the rejected program */
|
||||
static void release_btfs(struct bpf_verifier_env *env)
|
||||
{
|
||||
__bpf_free_used_btfs(env->prog->aux, env->used_btfs,
|
||||
env->used_btf_cnt);
|
||||
__bpf_free_used_btfs(env->used_btfs, env->used_btf_cnt);
|
||||
}
|
||||
|
||||
/* convert pseudo BPF_LD_IMM64 into generic BPF_LD_IMM64 */
|
||||
|
||||
Reference in New Issue
Block a user