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)
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>

No differences found