On 5/22/20 11:57 AM, Eric Dumazet wrote:

On 5/22/20 8:01 AM, Jon Maloy wrote:

On 5/22/20 2:18 AM, Xin Long wrote:
On Fri, May 22, 2020 at 1:55 PM Eric Dumazet <eduma...@google.com> wrote:
Resend to the list in non HTML form


On Thu, May 21, 2020 at 10:53 PM Eric Dumazet <eduma...@google.com> wrote:

On Thu, May 21, 2020 at 10:50 PM Xin Long <lucien....@gmail.com> wrote:
On Fri, May 22, 2020 at 2:30 AM Eric Dumazet <eduma...@google.com> wrote:
dst_cache_get() documents it must be used with BH disabled.
Interesting, I thought under rcu_read_lock() is enough, which calls
preempt_disable().
rcu_read_lock() does not disable BH, never.

And rcu_read_lock() does not necessarily disable preemption.
Then I need to think again if it's really worth using dst_cache here.

Also add tipc-discussion and Jon to CC list.
The suggested solution will affect all bearers, not only UDP, so it is not a 
good.
Is there anything preventing us from disabling preemtion inside the scope of 
the rcu lock?

///jon

BH is disabled any way few nano seconds later, disabling it a bit earlier wont 
make any difference.
The point is that if we only disable inside tipc_udp_xmit() (the function pointer call) the change will only affect the UDP bearer, where dst_cache is used. The corresponding calls for the Ethernet and Infiniband bearers don't use dst_cache, and don't need this disabling. So it does makes a difference.
///jon


Also, if you intend to make dst_cache BH reentrant, you will have to make that 
for net-next, not net tree.

Please carefully read include/net/dst_cache.h

It is very clear about BH requirements.



Reply via email to