diff options
author | David S. Miller <davem@davemloft.net> | 2011-12-30 13:04:14 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-12-30 13:04:14 -0500 |
commit | 7f8e3234c5f7fbdb06be050c8a1907e9c36d7c61 (patch) | |
tree | d6e9edb2087fa4a97b2cc3d585a0189672a14cf4 /net/sched | |
parent | 8ade06c616b34b4237c0ed77d1ff0ce04ad7d056 (diff) | |
parent | 89307babf966165171547f105e2253dec261cfa5 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Diffstat (limited to 'net/sched')
-rw-r--r-- | net/sched/sch_netem.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index ffcaa597594..a92c1b3dab8 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c | |||
@@ -532,7 +532,7 @@ static int get_dist_table(struct Qdisc *sch, const struct nlattr *attr) | |||
532 | return -EINVAL; | 532 | return -EINVAL; |
533 | 533 | ||
534 | s = sizeof(struct disttable) + n * sizeof(s16); | 534 | s = sizeof(struct disttable) + n * sizeof(s16); |
535 | d = kmalloc(s, GFP_KERNEL); | 535 | d = kmalloc(s, GFP_KERNEL | __GFP_NOWARN); |
536 | if (!d) | 536 | if (!d) |
537 | d = vmalloc(s); | 537 | d = vmalloc(s); |
538 | if (!d) | 538 | if (!d) |
@@ -545,9 +545,10 @@ static int get_dist_table(struct Qdisc *sch, const struct nlattr *attr) | |||
545 | root_lock = qdisc_root_sleeping_lock(sch); | 545 | root_lock = qdisc_root_sleeping_lock(sch); |
546 | 546 | ||
547 | spin_lock_bh(root_lock); | 547 | spin_lock_bh(root_lock); |
548 | dist_free(q->delay_dist); | 548 | swap(q->delay_dist, d); |
549 | q->delay_dist = d; | ||
550 | spin_unlock_bh(root_lock); | 549 | spin_unlock_bh(root_lock); |
550 | |||
551 | dist_free(d); | ||
551 | return 0; | 552 | return 0; |
552 | } | 553 | } |
553 | 554 | ||