act_ife: only acquire tcf_lock for existing actions
authorWANG Cong <xiyou.wangcong@gmail.com>
Mon, 20 Jun 2016 20:37:18 +0000 (13:37 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 23 Jun 2016 16:02:36 +0000 (12:02 -0400)
commit067a7cd06f7bf860f2e3415394b065b9a0983802
treea896fa7244de890d1c51ce1d43034e1a1916545a
parent962fcef33b03395051367181a0549d29d109d9a4
act_ife: only acquire tcf_lock for existing actions

Alexey reported that we have GFP_KERNEL allocation when
holding the spinlock tcf_lock. Actually we don't have
to take that spinlock for all the cases, especially
for the new one we just create. To modify the existing
actions, we still need this spinlock to make sure
the whole update is atomic.

For net-next, we can get rid of this spinlock because
we already hold the RTNL lock on slow path, and on fast
path we can use RCU to protect the metalist.

Joint work with Jamal.

Reported-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tc_act/tc_ife.h
net/sched/act_ife.c