aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_hfsc.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/sch_hfsc.c')
-rw-r--r--net/sched/sch_hfsc.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
index ec8aeaac1dd7..04b0de4c68b5 100644
--- a/net/sched/sch_hfsc.c
+++ b/net/sched/sch_hfsc.c
@@ -116,7 +116,7 @@ struct hfsc_class {
116 struct gnet_stats_queue qstats; 116 struct gnet_stats_queue qstats;
117 struct gnet_stats_rate_est64 rate_est; 117 struct gnet_stats_rate_est64 rate_est;
118 unsigned int level; /* class level in hierarchy */ 118 unsigned int level; /* class level in hierarchy */
119 struct tcf_proto *filter_list; /* filter list */ 119 struct tcf_proto __rcu *filter_list; /* filter list */
120 unsigned int filter_cnt; /* filter count */ 120 unsigned int filter_cnt; /* filter count */
121 121
122 struct hfsc_sched *sched; /* scheduler data */ 122 struct hfsc_sched *sched; /* scheduler data */
@@ -1161,7 +1161,7 @@ hfsc_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr)
1161 1161
1162 *qerr = NET_XMIT_SUCCESS | __NET_XMIT_BYPASS; 1162 *qerr = NET_XMIT_SUCCESS | __NET_XMIT_BYPASS;
1163 head = &q->root; 1163 head = &q->root;
1164 tcf = q->root.filter_list; 1164 tcf = rcu_dereference_bh(q->root.filter_list);
1165 while (tcf && (result = tc_classify(skb, tcf, &res)) >= 0) { 1165 while (tcf && (result = tc_classify(skb, tcf, &res)) >= 0) {
1166#ifdef CONFIG_NET_CLS_ACT 1166#ifdef CONFIG_NET_CLS_ACT
1167 switch (result) { 1167 switch (result) {
@@ -1185,7 +1185,7 @@ hfsc_classify(struct sk_buff *skb, struct Qdisc *sch, int *qerr)
1185 return cl; /* hit leaf class */ 1185 return cl; /* hit leaf class */
1186 1186
1187 /* apply inner filter chain */ 1187 /* apply inner filter chain */
1188 tcf = cl->filter_list; 1188 tcf = rcu_dereference_bh(cl->filter_list);
1189 head = cl; 1189 head = cl;
1190 } 1190 }
1191 1191
@@ -1285,7 +1285,7 @@ hfsc_unbind_tcf(struct Qdisc *sch, unsigned long arg)
1285 cl->filter_cnt--; 1285 cl->filter_cnt--;
1286} 1286}
1287 1287
1288static struct tcf_proto ** 1288static struct tcf_proto __rcu **
1289hfsc_tcf_chain(struct Qdisc *sch, unsigned long arg) 1289hfsc_tcf_chain(struct Qdisc *sch, unsigned long arg)
1290{ 1290{
1291 struct hfsc_sched *q = qdisc_priv(sch); 1291 struct hfsc_sched *q = qdisc_priv(sch);