From b65f87836f9cc6bd92fdc1563a1003e83c35d700 Mon Sep 17 00:00:00 2001 From: Guillaume Chazarain Date: Fri, 21 Jul 2006 14:45:25 -0700 Subject: [PATCH] --- yaml --- r: 32779 b: refs/heads/master c: 89e1df74f841fc31e81838d30594c4eff01859f8 h: refs/heads/master i: 32777: 7e6c47882a7dcb6d15ef222ac1bc915bc0d44d47 32775: 6dc11977ae46926e358da78ebcc44e34ecd2fdd1 v: v3 --- [refs] | 2 +- trunk/net/sched/sch_netem.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 25e3257eb03d..9fcb432bb5c7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fbeff3c1d35d07b1f967e47fcfb00cd16b7ecd02 +refs/heads/master: 89e1df74f841fc31e81838d30594c4eff01859f8 diff --git a/trunk/net/sched/sch_netem.c b/trunk/net/sched/sch_netem.c index c5bd8064e6d8..a08ec4c7c55d 100644 --- a/trunk/net/sched/sch_netem.c +++ b/trunk/net/sched/sch_netem.c @@ -148,7 +148,8 @@ static long tabledist(unsigned long mu, long sigma, static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch) { struct netem_sched_data *q = qdisc_priv(sch); - struct netem_skb_cb *cb = (struct netem_skb_cb *)skb->cb; + /* We don't fill cb now as skb_unshare() may invalidate it */ + struct netem_skb_cb *cb; struct sk_buff *skb2; int ret; int count = 1; @@ -200,6 +201,7 @@ static int netem_enqueue(struct sk_buff *skb, struct Qdisc *sch) skb->data[net_random() % skb_headlen(skb)] ^= 1<<(net_random() % 8); } + cb = (struct netem_skb_cb *)skb->cb; if (q->gap == 0 /* not doing reordering */ || q->counter < q->gap /* inside last reordering gap */ || q->reorder < get_crandom(&q->reorder_cor)) {