diff options
Diffstat (limited to 'net/sched/cls_api.c')
| -rw-r--r-- | net/sched/cls_api.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 8b0470e418dc..b6ef9a04de06 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c | |||
| @@ -308,12 +308,11 @@ replay: | |||
| 308 | case RTM_DELTFILTER: | 308 | case RTM_DELTFILTER: |
| 309 | err = tp->ops->delete(tp, fh); | 309 | err = tp->ops->delete(tp, fh); |
| 310 | if (err == 0) { | 310 | if (err == 0) { |
| 311 | tfilter_notify(net, skb, n, tp, fh, RTM_DELTFILTER); | 311 | struct tcf_proto *next = rtnl_dereference(tp->next); |
| 312 | if (tcf_destroy(tp, false)) { | ||
| 313 | struct tcf_proto *next = rtnl_dereference(tp->next); | ||
| 314 | 312 | ||
| 313 | tfilter_notify(net, skb, n, tp, fh, RTM_DELTFILTER); | ||
| 314 | if (tcf_destroy(tp, false)) | ||
| 315 | RCU_INIT_POINTER(*back, next); | 315 | RCU_INIT_POINTER(*back, next); |
| 316 | } | ||
| 317 | } | 316 | } |
| 318 | goto errout; | 317 | goto errout; |
| 319 | case RTM_GETTFILTER: | 318 | case RTM_GETTFILTER: |
