On Wed, Jul 08, 2026 at 09:24:10PM -0400, Willem de Bruijn wrote:
> This helps the case of one encap_rcv socket in the multicast receiver
> group, so is a useful fix on its own.
> 
> But is Sashiko correct that this would still leave the same issue for
> other sockets in the group? If so, something to address in this series
> or leave for later?
> 
> Might be worthwhile to extend the test to capture that case too.

The clone loop is not reachable for encapsulation sockets, so there is
no remaining gap.

FOU/GUE tunnel sockets are created via udp_sock_create() /
setup_udp_tunnel_sock() and do not set SO_REUSEADDR or SO_REUSEPORT.
Without either, a UDP socket cannot share its port, so an encap socket
is always the only socket bound to its port. In
__udp[46]_lib_mcast_deliver() it is therefore always delivered as
'first', and the clone loop -- which handles the second and subsequent
sockets in the group -- never runs for it. The positive (resubmit)
return from udp_queue_rcv_skb() only happens for encap sockets; plain
UDP sockets return 0 or a negative value there. So the resubmit case
in the clone loop cannot occur.

For the same reason a selftest cannot exercise it: a second socket
cannot bind to the FOU port.

If useful, I can add a brief comment above the clone loop documenting
why no resubmit is needed there.


Reply via email to