net_sched: initialize timer earlier in red_init()
[linux-2.6-microblaze.git] / net / sched / sch_red.c
index 4cc0ad0..deac82f 100644 (file)
@@ -333,6 +333,10 @@ static int red_init(struct Qdisc *sch, struct nlattr *opt,
        struct nlattr *tb[TCA_RED_MAX + 1];
        int err;
 
+       q->qdisc = &noop_qdisc;
+       q->sch = sch;
+       timer_setup(&q->adapt_timer, red_adaptative_timer, 0);
+
        if (!opt)
                return -EINVAL;
 
@@ -341,10 +345,6 @@ static int red_init(struct Qdisc *sch, struct nlattr *opt,
        if (err < 0)
                return err;
 
-       q->qdisc = &noop_qdisc;
-       q->sch = sch;
-       timer_setup(&q->adapt_timer, red_adaptative_timer, 0);
-
        err = __red_change(sch, tb, extack);
        if (err)
                return err;