Thread (12 messages) read the whole thread 12 messages, 5 authors, 2018-05-24

Re: [PATCH net-next v2] net: sched: don't disable bh when accessing action idr

From: Vlad Buslov <hidden>
Date: 2018-05-23 07:00:07
Also in: lkml

On Wed 23 May 2018 at 01:10, Cong Wang [off-list ref] wrote:
On Mon, May 21, 2018 at 1:03 PM, Vlad Buslov [off-list ref] wrote:
quoted
Initial net_device implementation used ingress_lock spinlock to synchronize
ingress path of device. This lock was used in both process and bh context.
In some code paths action map lock was obtained while holding ingress_lock.
Commit e1e992e52faa ("[NET_SCHED] protect action config/dump from irqs")
modified actions to always disable bh, while using action map lock, in
order to prevent deadlock on ingress_lock in softirq. This lock was removed
from net_device, so disabling bh, while accessing action map, is no longer
necessary.

Replace all action idr spinlock usage with regular calls that do not
disable bh.
While your patch is probably fine, the above justification seems not.
Sorry if I missed something. My justification is based on commit
description that added bh disable in subject code.
In the past, tc actions could be released in BH context because tc
filters use call_rcu(). However, I moved them to a workqueue recently.
So before my change I don't think you can remove the BH protection,
otherwise race with idr_remove()...
Found commit series that you described. Will modify commit message
accordingly.

Thanks,
Vlad
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help