diff options
Diffstat (limited to 'net/sched/sch_generic.c')
-rw-r--r-- | net/sched/sch_generic.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 48be3d5c0d92..5078e0c5db8d 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c | |||
@@ -530,7 +530,6 @@ struct Qdisc_ops pfifo_fast_ops __read_mostly = { | |||
530 | .dump = pfifo_fast_dump, | 530 | .dump = pfifo_fast_dump, |
531 | .owner = THIS_MODULE, | 531 | .owner = THIS_MODULE, |
532 | }; | 532 | }; |
533 | EXPORT_SYMBOL(pfifo_fast_ops); | ||
534 | 533 | ||
535 | static struct lock_class_key qdisc_tx_busylock; | 534 | static struct lock_class_key qdisc_tx_busylock; |
536 | 535 | ||
@@ -583,6 +582,9 @@ struct Qdisc *qdisc_create_dflt(struct netdev_queue *dev_queue, | |||
583 | { | 582 | { |
584 | struct Qdisc *sch; | 583 | struct Qdisc *sch; |
585 | 584 | ||
585 | if (!try_module_get(ops->owner)) | ||
586 | goto errout; | ||
587 | |||
586 | sch = qdisc_alloc(dev_queue, ops); | 588 | sch = qdisc_alloc(dev_queue, ops); |
587 | if (IS_ERR(sch)) | 589 | if (IS_ERR(sch)) |
588 | goto errout; | 590 | goto errout; |
@@ -686,7 +688,7 @@ static void attach_one_default_qdisc(struct net_device *dev, | |||
686 | 688 | ||
687 | if (dev->tx_queue_len) { | 689 | if (dev->tx_queue_len) { |
688 | qdisc = qdisc_create_dflt(dev_queue, | 690 | qdisc = qdisc_create_dflt(dev_queue, |
689 | &pfifo_fast_ops, TC_H_ROOT); | 691 | default_qdisc_ops, TC_H_ROOT); |
690 | if (!qdisc) { | 692 | if (!qdisc) { |
691 | netdev_info(dev, "activation failed\n"); | 693 | netdev_info(dev, "activation failed\n"); |
692 | return; | 694 | return; |
@@ -739,9 +741,8 @@ void dev_activate(struct net_device *dev) | |||
739 | int need_watchdog; | 741 | int need_watchdog; |
740 | 742 | ||
741 | /* No queueing discipline is attached to device; | 743 | /* No queueing discipline is attached to device; |
742 | create default one i.e. pfifo_fast for devices, | 744 | * create default one for devices, which need queueing |
743 | which need queueing and noqueue_qdisc for | 745 | * and noqueue_qdisc for virtual interfaces |
744 | virtual interfaces | ||
745 | */ | 746 | */ |
746 | 747 | ||
747 | if (dev->qdisc == &noop_qdisc) | 748 | if (dev->qdisc == &noop_qdisc) |