netem: dont call vfree() under spinlock and BH disabled
authorEric Dumazet <eric.dumazet@gmail.com>
Fri, 23 Dec 2011 19:28:51 +0000 (19:28 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 24 Dec 2011 21:08:50 +0000 (16:08 -0500)
commitbb52c7acf871537a468433775151339f783d2e8c
treed31943c70571f28ff241234a2bffa765a1d4ef92
parent5f0a6e2d503896062f641639dacfe5055c2f593b
netem: dont call vfree() under spinlock and BH disabled

commit 6373a9a286 (netem: use vmalloc for distribution table) added a
regression, since vfree() is called while holding a spinlock and BH
being disabled.

Fix this by doing the pointers swap in critical section, and freeing
after spinlock release.

Also add __GFP_NOWARN to the kmalloc() try, since we fallback to
vmalloc().

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Acked-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sched/sch_netem.c