OSDN Git Service

net_sched: improve and refactor tcf_action_put_many()
authorCong Wang <xiyou.wangcong@gmail.com>
Sun, 19 Aug 2018 19:22:05 +0000 (12:22 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 21 Aug 2018 19:45:44 +0000 (12:45 -0700)
commitedfaf94fa705181eeb2fe0c36c0b902dedbd40f1
tree72127013952f5bc69ceb15132b8d67060db120da
parentb93c1b5ac8643cc08bb74fa8ae21d6c63dfcb23d
net_sched: improve and refactor tcf_action_put_many()

tcf_action_put_many() is mostly called to clean up actions on
failure path, but tcf_action_put_many(&actions[acts_deleted]) is
used in the ugliest way: it passes a slice of the array and
uses an additional NULL at the end to avoid out-of-bound
access.

acts_deleted is completely unnecessary since we can teach
tcf_action_put_many() scan the whole array and checks against
NULL pointer. Which also means tcf_action_delete() should
set deleted action pointers to NULL to avoid double free.

Fixes: 90b73b77d08e ("net: sched: change action API to use array of pointers to actions")
Cc: Jiri Pirko <jiri@mellanox.com>
Cc: Vlad Buslov <vladbu@mellanox.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/act_api.c