From: Eric Dumazet <redacted>
Date: Tue, 20 Mar 2018 10:20:15 -0700
On 03/20/2018 10:11 AM, David Lebrun wrote:
quoted
On 20/03/18 15:07, Eric Dumazet wrote:
quoted
This is not the proper fix.
Control path holds RTNL and can sleeep if needed.
RCU should be avoided in lwtunnel_build_state()
+Roopa
In lwtunnel_build_state(), the RCU protects the lwtunnel_encap_ops "ops" which is rcu-dereferenced. Moreover, the lwtunnel_state_alloc() function, which is used in all build_state functions, also uses GFP_ATOMIC, so this seemed a proper fix, or at least proper mitigation.
Do you suggest that the lwtunnel_encap_ops can be protected in a different way, not requiring RCU ?
Yes, GFP_ATOMIC might be an 'easy fix' for net tree,
but for the future, GFP_KERNEL allocations make more sense in control path.
Agreed.
I'll apply this to net and queue it up for -stable, but long term making
this able to use GFP_KERNEL properly is the real way to go about it.