diff options
Diffstat (limited to 'net/sched/cls_api.c')
-rw-r--r-- | net/sched/cls_api.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 16e7ac9774e5..173fcc4b050d 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c | |||
@@ -531,7 +531,8 @@ void tcf_exts_change(struct tcf_proto *tp, struct tcf_exts *dst, | |||
531 | if (src->action) { | 531 | if (src->action) { |
532 | struct tc_action *act; | 532 | struct tc_action *act; |
533 | tcf_tree_lock(tp); | 533 | tcf_tree_lock(tp); |
534 | act = xchg(&dst->action, src->action); | 534 | act = dst->action; |
535 | dst->action = src->action; | ||
535 | tcf_tree_unlock(tp); | 536 | tcf_tree_unlock(tp); |
536 | if (act) | 537 | if (act) |
537 | tcf_action_destroy(act, TCA_ACT_UNBIND); | 538 | tcf_action_destroy(act, TCA_ACT_UNBIND); |