pkt_sched: Use rcu_assign_pointer() to change dev_queue->qdisc
Subsystems (3)
PATCH 1/1 pkt_sched: Use rcu_assign_pointer() to change dev_queue->qdisc
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 Jarek Poplawski <[email protected]>
---
net/sched/sch_api.c | 2 +- net/sched/sch_generic.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
net/sched/sch_api.c +1 -1
@@ -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);
net/sched/sch_generic.c +2 -2
@@ -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);
David Miller
maintainerFrom: Jarek Poplawski <[email protected]>
Date: Wed, 27 Aug 2008 08:59:27 +0000
Quoted 5 lines
pkt_sched: Usercu_assign_pointer()to changedev_queue->qdiscThese pointers are RCU protected, so proper primitives should be used.
Signed-off-by Jarek Poplawski <[email protected]>
Looks good, applied, thanks Jarek.