Skip to content

Commit

Permalink
net-sched: Fix actions flushing
Browse files Browse the repository at this point in the history
Flushing of actions has been broken since we changed
the semantics of netlink parsed tb[X] to mean X is an attribute type.
This makes the flushing work.

Signed-off-by: Jamal Hadi Salim <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
Jamal Hadi Salim authored and davem330 committed Aug 13, 2008
1 parent 34093d0 commit f97017c
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions net/sched/act_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -790,6 +790,8 @@ static int tca_action_flush(struct nlattr *nla, struct nlmsghdr *n, u32 pid)
err = a->ops->walk(skb, &dcb, RTM_DELACTION, a);
if (err < 0)
goto nla_put_failure;
if (err == 0)
goto noflush_out;

nla_nest_end(skb, nest);

Expand All @@ -807,6 +809,7 @@ static int tca_action_flush(struct nlattr *nla, struct nlmsghdr *n, u32 pid)
nlmsg_failure:
module_put(a->ops->owner);
err_out:
noflush_out:
kfree_skb(skb);
kfree(a);
return err;
Expand All @@ -824,8 +827,10 @@ tca_action_gd(struct nlattr *nla, struct nlmsghdr *n, u32 pid, int event)
return ret;

if (event == RTM_DELACTION && n->nlmsg_flags&NLM_F_ROOT) {
if (tb[0] != NULL && tb[1] == NULL)
return tca_action_flush(tb[0], n, pid);
if (tb[1] != NULL)
return tca_action_flush(tb[1], n, pid);
else
return -EINVAL;
}

for (i = 1; i <= TCA_ACT_MAX_PRIO && tb[i]; i++) {
Expand Down

0 comments on commit f97017c

Please sign in to comment.