On Sun, Jun 12, 2016 at 4:21 PM, Eric Dumazet [off-list ref] wrote:
+ struct Qdisc *child;
+
+ if (q->queues[i] != &noop_qdisc)
+ continue;
+
+ child = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops,
+ TC_H_MAKE(sch->handle, i + 1));
+ if (!child)
+ return -ENOMEM;
Since this is inside a loop, shouldn't we kfree the previous child
creations when we fail?
+ sch_tree_lock(sch);
+ q->queues[i] = child;
+ sch_tree_unlock(sch);
}
return 0;
}