]> git.baikalelectronics.ru Git - kernel.git/commit
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)
commit39b07de3a6c44953ec4cc8a58298edbc6a4ffaaf
tree1e8992267d2b3ede0f0a436aab381e768cfcb8ce
parenta8872e3ecbda1f34e0d3176e3109e06146832df2
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