On Sun, 2016-06-12 at 20:45 -0700, Cong Wang wrote:
On Sun, Jun 12, 2016 at 4:21 PM, Eric Dumazet [off-list ref] wrote:
quoted
+ 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?
You're right.
prio_init() needs to do the cleanup, as prio_destroy() wont be called
from qdisc_create()
I am testing a fix with fault injection.
Thanks.