Messages in this thread | | | Date | Wed, 23 Nov 2022 07:14:04 -0800 | Subject | Re: [PATCH bpf-next] bpf: Don't use idx variable when registering kfunc dtors | From | Yonghong Song <> |
| |
On 11/23/22 5:52 AM, David Vernet wrote: > In commit fda01efc6160 ("bpf: Enable cgroups to be used as kptrs"), I > added an 'int idx' variable to kfunc_init() which was meant to > dynamically set the index of the btf id entries of the > 'generic_dtor_ids' array. This was done to make the code slightly less > brittle as the struct cgroup * kptr kfuncs such as bpf_cgroup_aquire() > are compiled out if CONFIG_CGROUPS is not defined. This, however, causes > an lkp build warning: > >>> kernel/bpf/helpers.c:2005:40: warning: multiple unsequenced > modifications to 'idx' [-Wunsequenced] > .btf_id = generic_dtor_ids[idx++], > > Fix the warning by just hard-coding the indices. > > Fixes: fda01efc6160 ("bpf: Enable cgroups to be used as kptrs") > Reported-by: kernel test robot <lkp@intel.com> > Signed-off-by: David Vernet <void@manifault.com>
I hit the same issue with clang build and used the same workaround below.
Acked-by: Yonghong Song <yhs@fb.com>
> --- > kernel/bpf/helpers.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/kernel/bpf/helpers.c b/kernel/bpf/helpers.c > index e4e9db301db5..da2681ebb7c3 100644 > --- a/kernel/bpf/helpers.c > +++ b/kernel/bpf/helpers.c > @@ -2019,16 +2019,16 @@ static const struct btf_kfunc_id_set common_kfunc_set = { > > static int __init kfunc_init(void) > { > - int ret, idx = 0; > + int ret; > const struct btf_id_dtor_kfunc generic_dtors[] = { > { > - .btf_id = generic_dtor_ids[idx++], > - .kfunc_btf_id = generic_dtor_ids[idx++] > + .btf_id = generic_dtor_ids[0], > + .kfunc_btf_id = generic_dtor_ids[1] > }, > #ifdef CONFIG_CGROUPS > { > - .btf_id = generic_dtor_ids[idx++], > - .kfunc_btf_id = generic_dtor_ids[idx++] > + .btf_id = generic_dtor_ids[2], > + .kfunc_btf_id = generic_dtor_ids[3] > }, > #endif > };
| |