Commit d676ff49 authored by Javier Cardona's avatar Javier Cardona Committed by John W. Linville

mac80211: Don't sleep when growing the mesh path

After commit 1928ecab (mac80211: fix and
simplify mesh locking) mesh table allocation is performed with the
pathtbl_resize_lock taken.  Under those conditions one should not sleep.
This patch makes the allocations GFP_ATOMIC to prevent that.
Signed-off-by: default avatarJavier Cardona <javier@cozybit.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent ba4903f9
...@@ -76,12 +76,12 @@ static struct mesh_table *mesh_table_alloc(int size_order) ...@@ -76,12 +76,12 @@ static struct mesh_table *mesh_table_alloc(int size_order)
int i; int i;
struct mesh_table *newtbl; struct mesh_table *newtbl;
newtbl = kmalloc(sizeof(struct mesh_table), GFP_KERNEL); newtbl = kmalloc(sizeof(struct mesh_table), GFP_ATOMIC);
if (!newtbl) if (!newtbl)
return NULL; return NULL;
newtbl->hash_buckets = kzalloc(sizeof(struct hlist_head) * newtbl->hash_buckets = kzalloc(sizeof(struct hlist_head) *
(1 << size_order), GFP_KERNEL); (1 << size_order), GFP_ATOMIC);
if (!newtbl->hash_buckets) { if (!newtbl->hash_buckets) {
kfree(newtbl); kfree(newtbl);
...@@ -89,7 +89,7 @@ static struct mesh_table *mesh_table_alloc(int size_order) ...@@ -89,7 +89,7 @@ static struct mesh_table *mesh_table_alloc(int size_order)
} }
newtbl->hashwlock = kmalloc(sizeof(spinlock_t) * newtbl->hashwlock = kmalloc(sizeof(spinlock_t) *
(1 << size_order), GFP_KERNEL); (1 << size_order), GFP_ATOMIC);
if (!newtbl->hashwlock) { if (!newtbl->hashwlock) {
kfree(newtbl->hash_buckets); kfree(newtbl->hash_buckets);
kfree(newtbl); kfree(newtbl);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment