aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched/sch_dsmark.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/sched/sch_dsmark.c')
-rw-r--r--net/sched/sch_dsmark.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c
index 49d6ef338b55..227114f27f94 100644
--- a/net/sched/sch_dsmark.c
+++ b/net/sched/sch_dsmark.c
@@ -37,7 +37,7 @@
37 37
38struct dsmark_qdisc_data { 38struct dsmark_qdisc_data {
39 struct Qdisc *q; 39 struct Qdisc *q;
40 struct tcf_proto *filter_list; 40 struct tcf_proto __rcu *filter_list;
41 u8 *mask; /* "owns" the array */ 41 u8 *mask; /* "owns" the array */
42 u8 *value; 42 u8 *value;
43 u16 indices; 43 u16 indices;
@@ -186,8 +186,8 @@ ignore:
186 } 186 }
187} 187}
188 188
189static inline struct tcf_proto **dsmark_find_tcf(struct Qdisc *sch, 189static inline struct tcf_proto __rcu **dsmark_find_tcf(struct Qdisc *sch,
190 unsigned long cl) 190 unsigned long cl)
191{ 191{
192 struct dsmark_qdisc_data *p = qdisc_priv(sch); 192 struct dsmark_qdisc_data *p = qdisc_priv(sch);
193 return &p->filter_list; 193 return &p->filter_list;
@@ -229,7 +229,8 @@ static int dsmark_enqueue(struct sk_buff *skb, struct Qdisc *sch)
229 skb->tc_index = TC_H_MIN(skb->priority); 229 skb->tc_index = TC_H_MIN(skb->priority);
230 else { 230 else {
231 struct tcf_result res; 231 struct tcf_result res;
232 int result = tc_classify(skb, p->filter_list, &res); 232 struct tcf_proto *fl = rcu_dereference_bh(p->filter_list);
233 int result = tc_classify(skb, fl, &res);
233 234
234 pr_debug("result %d class 0x%04x\n", result, res.classid); 235 pr_debug("result %d class 0x%04x\n", result, res.classid);
235 236
@@ -257,7 +258,7 @@ static int dsmark_enqueue(struct sk_buff *skb, struct Qdisc *sch)
257 err = qdisc_enqueue(skb, p->q); 258 err = qdisc_enqueue(skb, p->q);
258 if (err != NET_XMIT_SUCCESS) { 259 if (err != NET_XMIT_SUCCESS) {
259 if (net_xmit_drop_count(err)) 260 if (net_xmit_drop_count(err))
260 sch->qstats.drops++; 261 qdisc_qstats_drop(sch);
261 return err; 262 return err;
262 } 263 }
263 264