diff options
Diffstat (limited to 'net/sched/sch_hfsc.c')
-rw-r--r-- | net/sched/sch_hfsc.c | 8 |
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 | ||
1288 | static struct tcf_proto ** | 1288 | static struct tcf_proto __rcu ** |
1289 | hfsc_tcf_chain(struct Qdisc *sch, unsigned long arg) | 1289 | hfsc_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); |