> > @@ -1483,11 +1488,18 @@ int __cgroup_bpf_run_filter_sock_addr(struct sock *sk, > > if (!ctx.uaddr) { > > memset(&unspec, 0, sizeof(unspec)); > > ctx.uaddr = (struct sockaddr *)&unspec; > > - } > > + ctx.uaddrlen = 0; > > + } else > > + ctx.uaddrlen = *uaddrlen; > > > > cgrp = sock_cgroup_ptr(&sk->sk_cgrp_data); > > - return bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, > > - 0, flags); > > + ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, > > + 0, flags); > > + > > + if (!ret && uaddrlen) > > nit: no need to check uaddrlen here or maybe check ctx.uaddrlen. Are you sure? uaddrlen can still be NULL if uaddr is also NULL On Wed, 11 Oct 2023 at 19:35, Kuniyuki Iwashima <kuniyu@xxxxxxxxxx> wrote: > > From: Daan De Meyer <daan.j.demeyer@xxxxxxxxx> > Date: Wed, 11 Oct 2023 19:03:11 +0200 > [...] > > @@ -1483,11 +1488,18 @@ int __cgroup_bpf_run_filter_sock_addr(struct sock *sk, > > if (!ctx.uaddr) { > > memset(&unspec, 0, sizeof(unspec)); > > ctx.uaddr = (struct sockaddr *)&unspec; > > - } > > + ctx.uaddrlen = 0; > > + } else > > + ctx.uaddrlen = *uaddrlen; > > > > cgrp = sock_cgroup_ptr(&sk->sk_cgrp_data); > > - return bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, > > - 0, flags); > > + ret = bpf_prog_run_array_cg(&cgrp->bpf, atype, &ctx, bpf_prog_run, > > + 0, flags); > > + > > + if (!ret && uaddrlen) > > nit: no need to check uaddrlen here or maybe check ctx.uaddrlen. > > > > + *uaddrlen = ctx.uaddrlen; > > + > > + return ret; > > } > > EXPORT_SYMBOL(__cgroup_bpf_run_filter_sock_addr); > >