|
@@ -634,7 +634,7 @@ static void dev_deactivate_queue(struct net_device *dev,
|
|
if (!(qdisc->flags & TCQ_F_BUILTIN))
|
|
if (!(qdisc->flags & TCQ_F_BUILTIN))
|
|
set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state);
|
|
set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state);
|
|
|
|
|
|
- dev_queue->qdisc = qdisc_default;
|
|
|
|
|
|
+ rcu_assign_pointer(dev_queue->qdisc, qdisc_default);
|
|
qdisc_reset(qdisc);
|
|
qdisc_reset(qdisc);
|
|
|
|
|
|
spin_unlock_bh(qdisc_lock(qdisc));
|
|
spin_unlock_bh(qdisc_lock(qdisc));
|
|
@@ -709,7 +709,7 @@ static void shutdown_scheduler_queue(struct net_device *dev,
|
|
struct Qdisc *qdisc_default = _qdisc_default;
|
|
struct Qdisc *qdisc_default = _qdisc_default;
|
|
|
|
|
|
if (qdisc) {
|
|
if (qdisc) {
|
|
- dev_queue->qdisc = qdisc_default;
|
|
|
|
|
|
+ rcu_assign_pointer(dev_queue->qdisc, qdisc_default);
|
|
dev_queue->qdisc_sleeping = qdisc_default;
|
|
dev_queue->qdisc_sleeping = qdisc_default;
|
|
|
|
|
|
qdisc_destroy(qdisc);
|
|
qdisc_destroy(qdisc);
|