From: Daan De Meyer <daan.j.demeyer@xxxxxxxxx> Date: Wed, 11 Oct 2023 20:37:49 +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. > > Are you sure? uaddrlen can still be NULL if uaddr is also NULL How? In the patch 2 and 4, it seems uaddrlen always points to an actual variable.