diff options
Diffstat (limited to 'net/sched/cls_api.c')
-rw-r--r-- | net/sched/cls_api.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 31bd1439cf60..0a75cb2e5e7b 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c | |||
@@ -1252,7 +1252,7 @@ replay: | |||
1252 | } | 1252 | } |
1253 | chain = tcf_chain_get(block, chain_index, true); | 1253 | chain = tcf_chain_get(block, chain_index, true); |
1254 | if (!chain) { | 1254 | if (!chain) { |
1255 | NL_SET_ERR_MSG(extack, "Cannot find specified filter chain"); | 1255 | NL_SET_ERR_MSG(extack, "Cannot create specified filter chain"); |
1256 | err = -ENOMEM; | 1256 | err = -ENOMEM; |
1257 | goto errout; | 1257 | goto errout; |
1258 | } | 1258 | } |
@@ -1399,7 +1399,7 @@ static int tc_del_tfilter(struct sk_buff *skb, struct nlmsghdr *n, | |||
1399 | goto errout; | 1399 | goto errout; |
1400 | } | 1400 | } |
1401 | NL_SET_ERR_MSG(extack, "Cannot find specified filter chain"); | 1401 | NL_SET_ERR_MSG(extack, "Cannot find specified filter chain"); |
1402 | err = -EINVAL; | 1402 | err = -ENOENT; |
1403 | goto errout; | 1403 | goto errout; |
1404 | } | 1404 | } |
1405 | 1405 | ||
@@ -1902,6 +1902,8 @@ replay: | |||
1902 | RTM_NEWCHAIN, false); | 1902 | RTM_NEWCHAIN, false); |
1903 | break; | 1903 | break; |
1904 | case RTM_DELCHAIN: | 1904 | case RTM_DELCHAIN: |
1905 | tfilter_notify_chain(net, skb, block, q, parent, n, | ||
1906 | chain, RTM_DELTFILTER); | ||
1905 | /* Flush the chain first as the user requested chain removal. */ | 1907 | /* Flush the chain first as the user requested chain removal. */ |
1906 | tcf_chain_flush(chain); | 1908 | tcf_chain_flush(chain); |
1907 | /* In case the chain was successfully deleted, put a reference | 1909 | /* In case the chain was successfully deleted, put a reference |