net: sched: lock action when translating it to flow_action infra
authorVlad Buslov <vladbu@mellanox.com>
Mon, 17 Feb 2020 10:12:09 +0000 (12:12 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Feb 2020 22:17:02 +0000 (14:17 -0800)
commit7a47281439ba00b11fc098f36695522184ce5a82
tree1e8992267d2b3ede0f0a436aab381e768cfcb8ce
parent92df9f8a745ee9b8cc250514272345cb2e74e7ef
net: sched: lock action when translating it to flow_action infra

In order to remove dependency on rtnl lock, take action's tcfa_lock when
constructing its representation as flow_action_entry structure.

Refactor tcf_sample_get_group() to assume that caller holds tcf_lock and
don't take it manually. This callback is only called from flow_action infra
representation translator which now calls it with tcf_lock held, so this
refactoring is necessary to prevent deadlock.

Allocate memory with GFP_ATOMIC flag for ip_tunnel_info copy because
tcf_tunnel_info_copy() is only called from flow_action representation infra
code with tcf_lock spinlock taken.

Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/tc_act/tc_tunnel_key.h
net/sched/act_sample.c
net/sched/cls_api.c