mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-19 04:48:03 +07:00
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: Jamal Hadi Salim <hadi@cyberus.ca> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
34093d055e
commit
f97017cdef
@ -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++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user