diff --git a/net/sched/sch_prio.c b/net/sched/sch_prio.c index 0ffef273ee7b14c70fe51e61ad41b32267f6da36..135403c04ce63fac2ea8ab5a1d9b07b4fea4fbea 100644 --- a/net/sched/sch_prio.c +++ b/net/sched/sch_prio.c @@ -315,8 +315,14 @@ static int prio_graft(struct Qdisc *sch, unsigned long arg, struct Qdisc *new, bool any_qdisc_is_offloaded; int err; - if (new == NULL) - new = &noop_qdisc; + if (!new) { + new = qdisc_create_dflt(sch->dev_queue, &pfifo_qdisc_ops, + TC_H_MAKE(sch->handle, arg), extack); + if (!new) + new = &noop_qdisc; + else + qdisc_hash_add(new, true); + } *old = qdisc_replace(sch, new, &q->queues[band]);