aboutsummaryrefslogtreecommitdiffstats
path: root/net/sched
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2011-12-30 13:04:14 -0500
committerDavid S. Miller <davem@davemloft.net>2011-12-30 13:04:14 -0500
commit7f8e3234c5f7fbdb06be050c8a1907e9c36d7c61 (patch)
treed6e9edb2087fa4a97b2cc3d585a0189672a14cf4 /net/sched
parent8ade06c616b34b4237c0ed77d1ff0ce04ad7d056 (diff)
parent89307babf966165171547f105e2253dec261cfa5 (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.c7
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