Eduard Zingerman ac6542ad92 bpf: fix null dereference when computing changes_pkt_data of prog w/o subprogs
bpf_prog_aux->func field might be NULL if program does not have
subprograms except for main sub-program. The fixed commit does
bpf_prog_aux->func access unconditionally, which might lead to null
pointer dereference.

The bug could be triggered by replacing the following BPF program:

    SEC("tc")
    int main_changes(struct __sk_buff *sk)
    {
        bpf_skb_pull_data(sk, 0);
        return 0;
    }

With the following BPF program:

    SEC("freplace")
    long changes_pkt_data(struct __sk_buff *sk)
    {
        return bpf_skb_pull_data(sk, 0);
    }

bpf_prog_aux instance itself represents the main sub-program,
use this property to fix the bug.

Fixes: 81f6d0530ba0 ("bpf: check changes_pkt_data property for extension programs")
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202412111822.qGw6tOyB-lkp@intel.com/
Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
Link: https://lore.kernel.org/r/20241212070711.427443-1-eddyz87@gmail.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2024-12-12 11:37:19 -08:00
..
2024-11-21 08:11:04 -08:00
2024-11-21 08:11:04 -08:00
2024-08-30 08:55:26 -07:00
2024-08-30 08:55:26 -07:00
2024-11-22 20:36:11 -08:00
2024-12-10 11:17:53 -08:00
2022-05-10 11:20:45 -07:00
2024-08-30 08:55:26 -07:00
2024-08-30 08:57:47 -07:00
2024-10-22 15:42:56 -07:00
2024-11-22 13:27:01 -08:00
2024-11-18 10:30:29 -08:00
2023-10-23 15:01:53 -07:00