On Thu, 2025-02-20 at 14:15 -0800, Amery Hung wrote: > Reject struct_ops programs with refcounted kptr arguments (arguments > tagged with __ref suffix) that tail call. Once a refcounted kptr is > passed to a struct_ops program from the kernel, it can be freed or > xchged into maps. As there is no guarantee a callee can get the same > valid refcounted kptr in the ctx, we cannot allow such usage. > > Signed-off-by: Amery Hung <ameryhung@xxxxxxxxx> > --- An alternative location for this check would be in the check_helper_call(). If done there, this would allow dead code elimination for tail calls within functions with refcounted arguments. Which would be useful only if in the future tail calls from such functions would be allowed (e.g. a program having a branch w/o tail call for old kernel and with tail call for new kernel). Probably unlikely to happen, so I think current position of the check is ok. Acked-by: Eduard Zingerman <eddyz87@xxxxxxxxx> [...]