Message ID | 20180803090847.1199-1-jiri@resnulli.us |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] net: sched: fix flush on non-existing chain | expand |
From: Jiri Pirko <jiri@resnulli.us> Date: Fri, 3 Aug 2018 11:08:47 +0200 > From: Jiri Pirko <jiri@mellanox.com> > > User was able to perform filter flush on chain 0 even if it didn't have > any filters in it. With the patch that avoided implicit chain 0 > creation, this changed. So in case user wants filter flush on chain > which does not exist, just return success. There's no reason for non-0 > chains to behave differently than chain 0, so do the same for them. > > Reported-by: Ido Schimmel <idosch@mellanox.com> > Fixes: f71e0ca4db18 ("net: sched: Avoid implicit chain 0 creation") > Signed-off-by: Jiri Pirko <jiri@mellanox.com> Applied.
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index e8b0bbd0883f..194c2e0b2737 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -1389,6 +1389,13 @@ static int tc_del_tfilter(struct sk_buff *skb, struct nlmsghdr *n, } chain = tcf_chain_get(block, chain_index, false); if (!chain) { + /* User requested flush on non-existent chain. Nothing to do, + * so just return success. + */ + if (prio == 0) { + err = 0; + goto errout; + } NL_SET_ERR_MSG(extack, "Cannot find specified filter chain"); err = -EINVAL; goto errout;