Re: [PATCH bpf-next 1/1] bpf: use proper type to calculate bpf_raw_tp_null_args.mask index

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 18 Apr 2025 at 09:49, Shung-Hsi Yu <shung-hsi.yu@xxxxxxxx> wrote:
>
> The calculation of the index used to access the mask field in 'struct
> bpf_raw_tp_null_args' is done with 'int' type, which could overflow when
> the tracepoint being attached has more than 8 arguments.
>
> While none of the tracepoints mentioned in raw_tp_null_args[] currently
> have more than 8 arguments, there do exist tracepoints that had more
> than 8 arguments (e.g. iocost_iocg_forgive_debt), so use the correct
> type for calculation and avoid Smatch static checker warning.
>
> Cc: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> Closes: https://lore.kernel.org/r/843a3b94-d53d-42db-93d4-be10a4090146@stanley.mountain/
> Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@xxxxxxxx>
> ---

Not sure how I missed this, but thanks for fixing.
Acked-by: Kumar Kartikeya Dwivedi <memxor@xxxxxxxxx>

>  kernel/bpf/btf.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c
> index 16ba36f34dfa..656ee11aff67 100644
> --- a/kernel/bpf/btf.c
> +++ b/kernel/bpf/btf.c
> @@ -6829,10 +6829,10 @@ bool btf_ctx_access(int off, int size, enum bpf_access_type type,
>                         /* Is this a func with potential NULL args? */
>                         if (strcmp(tname, raw_tp_null_args[i].func))
>                                 continue;
> -                       if (raw_tp_null_args[i].mask & (0x1 << (arg * 4)))
> +                       if (raw_tp_null_args[i].mask & (0x1ULL << (arg * 4)))
>                                 info->reg_type |= PTR_MAYBE_NULL;
>                         /* Is the current arg IS_ERR? */
> -                       if (raw_tp_null_args[i].mask & (0x2 << (arg * 4)))
> +                       if (raw_tp_null_args[i].mask & (0x2ULL << (arg * 4)))
>                                 ptr_err_raw_tp = true;
>                         break;
>                 }
> --
> 2.49.0
>




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux