net_sched: fix NULL pointer dereference when delete tcindex filter
[linux-2.6-microblaze.git] / net / sched / cls_tcindex.c
index 32f4bbd..ddaa4e6 100644 (file)
@@ -447,11 +447,6 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
                tcf_bind_filter(tp, &cr.res, base);
        }
 
-       if (old_r)
-               tcf_exts_change(&r->exts, &e);
-       else
-               tcf_exts_change(&cr.exts, &e);
-
        if (old_r && old_r != r) {
                err = tcindex_filter_result_init(old_r);
                if (err < 0) {
@@ -462,6 +457,8 @@ tcindex_set_parms(struct net *net, struct tcf_proto *tp, unsigned long base,
 
        oldp = p;
        r->res = cr.res;
+       tcf_exts_change(&r->exts, &e);
+
        rcu_assign_pointer(tp->root, cp);
 
        if (r == &new_filter_result) {