net_sched: move tcf_lock down after gen_replace_estimator()
authorWANG Cong <xiyou.wangcong@gmail.com>
Tue, 13 Jun 2017 20:36:24 +0000 (13:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 14 Jun 2017 18:39:19 +0000 (14:39 -0400)
commit74030603dfd9f76c0f279f19f1dd1ee3028fee7a
tree27b6e967e99232169cadc0420099717f241a38f3
parent20a3d5bf5e5b13c02450ab6178ec374abd830686
net_sched: move tcf_lock down after gen_replace_estimator()

Laura reported a sleep-in-atomic kernel warning inside
tcf_act_police_init() which calls gen_replace_estimator() with
spinlock protection.

It is not necessary in this case, we already have RTNL lock here
so it is enough to protect concurrent writers. For the reader,
i.e. tcf_act_police(), it needs to make decision based on this
rate estimator, in the worst case we drop more/less packets than
necessary while changing the rate in parallel, it is still acceptable.

Reported-by: Laura Abbott <labbott@redhat.com>
Reported-by: Nick Huber <nicholashuber@gmail.com>
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>
net/sched/act_police.c