Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f97017cd authored by Jamal Hadi Salim's avatar Jamal Hadi Salim Committed by David S. Miller
Browse files

net-sched: Fix actions flushing



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: default avatarJamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 34093d05
Loading
Loading
Loading
Loading
+7 −2
Original line number Original line Diff line number Diff line
@@ -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);
	err = a->ops->walk(skb, &dcb, RTM_DELACTION, a);
	if (err < 0)
	if (err < 0)
		goto nla_put_failure;
		goto nla_put_failure;
	if (err == 0)
		goto noflush_out;


	nla_nest_end(skb, nest);
	nla_nest_end(skb, nest);


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


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


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