iptables: Fix data race in iptables manager #35902
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The haveIp6tables parameter is initially set to true, but its initializiation is completed in the manager Start hook. That hook is executed in its onw goroutine, while another one runs the iptables reconciler oneshot job. Those two goroutines may run concurrently thus leading to a data race when accessing the haveIp6tables parameter.
Since that parameter enables or disable the support for IPv6 rules, we must enforce an ordering between the two goroutines, specifically we must force the reconciler to wait for the initialization to be completed.
Therefore, use a wait group to force the reconciler to wait for both the ip{4,6}tables wait arguments and haveIp6tables config parameter to be fully initialized.