From: Eric Dumazet <eric.dumazet@xxxxxxxxx> Date: Thu, 10 Jun 2021 22:21:00 +0200 > On 5/21/21 8:20 PM, Kuniyuki Iwashima wrote: > > As with the preceding patch, this patch changes reqsk_timer_handler() to > > call reuseport_migrate_sock() and inet_reqsk_clone() to migrate in-flight > > requests at retransmitting SYN+ACKs. If we can select a new listener and > > clone the request, we resume setting the SYN+ACK timer for the new req. If > > we can set the timer, we call inet_ehash_insert() to unhash the old req and > > put the new req into ehash. > > > > ... > > > static void reqsk_migrate_reset(struct request_sock *req) > > { > > + req->saved_syn = NULL; > > + inet_rsk(req)->ireq_opt = NULL; > > #if IS_ENABLED(CONFIG_IPV6) > > - inet_rsk(req)->ipv6_opt = NULL; > > + inet_rsk(req)->pktopts = NULL; > > #endif > > } > > This is fragile. > > Maybe instead : > > #if IS_ENABLED(CONFIG_IPV6) > inet_rsk(req)->ipv6_opt = NULL; > inet_rsk(req)->pktopts = NULL; > #else > inet_rsk(req)->ireq_opt = NULL; > #endif I will fix this, thank you. Also I will send a follow-up patch later to fix the same style in inet_reqsk_alloc().