diff options
Diffstat (limited to 'net/sched/sch_netem.c')
-rw-r--r-- | net/sched/sch_netem.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 2776012132ea..5da548fa7ae9 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c | |||
@@ -130,8 +130,7 @@ struct netem_skb_cb { | |||
130 | 130 | ||
131 | static inline struct netem_skb_cb *netem_skb_cb(struct sk_buff *skb) | 131 | static inline struct netem_skb_cb *netem_skb_cb(struct sk_buff *skb) |
132 | { | 132 | { |
133 | BUILD_BUG_ON(sizeof(skb->cb) < | 133 | qdisc_cb_private_validate(skb, sizeof(struct netem_skb_cb)); |
134 | sizeof(struct qdisc_skb_cb) + sizeof(struct netem_skb_cb)); | ||
135 | return (struct netem_skb_cb *)qdisc_skb_cb(skb)->data; | 134 | return (struct netem_skb_cb *)qdisc_skb_cb(skb)->data; |
136 | } | 135 | } |
137 | 136 | ||
@@ -502,9 +501,8 @@ tfifo_dequeue: | |||
502 | 501 | ||
503 | /* if more time remaining? */ | 502 | /* if more time remaining? */ |
504 | if (cb->time_to_send <= psched_get_time()) { | 503 | if (cb->time_to_send <= psched_get_time()) { |
505 | skb = qdisc_dequeue_tail(sch); | 504 | __skb_unlink(skb, &sch->q); |
506 | if (unlikely(!skb)) | 505 | sch->qstats.backlog -= qdisc_pkt_len(skb); |
507 | goto qdisc_dequeue; | ||
508 | 506 | ||
509 | #ifdef CONFIG_NET_CLS_ACT | 507 | #ifdef CONFIG_NET_CLS_ACT |
510 | /* | 508 | /* |
@@ -540,7 +538,6 @@ deliver: | |||
540 | qdisc_watchdog_schedule(&q->watchdog, cb->time_to_send); | 538 | qdisc_watchdog_schedule(&q->watchdog, cb->time_to_send); |
541 | } | 539 | } |
542 | 540 | ||
543 | qdisc_dequeue: | ||
544 | if (q->qdisc) { | 541 | if (q->qdisc) { |
545 | skb = q->qdisc->ops->dequeue(q->qdisc); | 542 | skb = q->qdisc->ops->dequeue(q->qdisc); |
546 | if (skb) | 543 | if (skb) |