Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7a54c13 authored by Jarek Poplawski's avatar Jarek Poplawski Committed by David S. Miller
Browse files

pkt_sched: Use rcu_assign_pointer() to change dev_queue->qdisc



These pointers are RCU protected, so proper primitives should be used.

Signed-off-by: default avatarJarek Poplawski <jarkao2@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 666d9bbe
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -635,7 +635,7 @@ static struct Qdisc *dev_graft_qdisc(struct netdev_queue *dev_queue,
	if (qdisc == NULL)
		qdisc = &noop_qdisc;
	dev_queue->qdisc_sleeping = qdisc;
	dev_queue->qdisc = &noop_qdisc;
	rcu_assign_pointer(dev_queue->qdisc, &noop_qdisc);

	spin_unlock_bh(root_lock);

+2 −2
Original line number Diff line number Diff line
@@ -634,7 +634,7 @@ static void dev_deactivate_queue(struct net_device *dev,
		if (!(qdisc->flags & TCQ_F_BUILTIN))
			set_bit(__QDISC_STATE_DEACTIVATED, &qdisc->state);

		dev_queue->qdisc = qdisc_default;
		rcu_assign_pointer(dev_queue->qdisc, qdisc_default);
		qdisc_reset(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;

	if (qdisc) {
		dev_queue->qdisc = qdisc_default;
		rcu_assign_pointer(dev_queue->qdisc, qdisc_default);
		dev_queue->qdisc_sleeping = qdisc_default;

		qdisc_destroy(qdisc);