net_sched: act: Dont increment refcnt on replace
authorJamal Hadi Salim <jhs@mojatatu.com>
Mon, 23 Dec 2013 13:02:11 +0000 (08:02 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 27 Dec 2013 17:50:00 +0000 (12:50 -0500)
commit1a29321ed045e3aad23c5f7b63036e465ee3093a
tree8d59b477b4b3fd575dcf33450cfbc7d5e9c3502b
parentc2349758acf1874e4c2b93fe41d072336f1a31d0
net_sched: act: Dont increment refcnt on replace

 This is a bug fix. The existing code tries to kill many
 birds with one stone: Handling binding of actions to
 filters, new actions and replacing of action
 attributes. A simple test case to illustrate:

XXXX
 moja@fe1:~$ sudo tc actions add action drop index 12
 moja@fe1:~$ actions get action gact index 12
 action order 1: gact action drop
  random type none pass val 0
  index 12 ref 1 bind 0
 moja@fe1:~$ sudo tc actions replace action ok index 12
 moja@fe1:~$ actions get action gact index 12
 action order 1: gact action drop
  random type none pass val 0
  index 12 ref 2 bind 0
XXXX

The above shows the refcounf being wrongly incremented on replace.
There are more complex scenarios with binding of actions to filters
that i am leaving out that didnt work as well...

Signed-off-by: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/act_csum.c
net/sched/act_gact.c
net/sched/act_ipt.c
net/sched/act_nat.c
net/sched/act_pedit.c
net/sched/act_police.c
net/sched/act_simple.c
net/sched/act_skbedit.c