mac80211: Don't sleep when growing the mesh path
After commit 1928ecab62
(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: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Родитель
ba4903f97a
Коммит
d676ff493d
|
@ -76,12 +76,12 @@ static struct mesh_table *mesh_table_alloc(int size_order)
|
|||
int i;
|
||||
struct mesh_table *newtbl;
|
||||
|
||||
newtbl = kmalloc(sizeof(struct mesh_table), GFP_KERNEL);
|
||||
newtbl = kmalloc(sizeof(struct mesh_table), GFP_ATOMIC);
|
||||
if (!newtbl)
|
||||
return NULL;
|
||||
|
||||
newtbl->hash_buckets = kzalloc(sizeof(struct hlist_head) *
|
||||
(1 << size_order), GFP_KERNEL);
|
||||
(1 << size_order), GFP_ATOMIC);
|
||||
|
||||
if (!newtbl->hash_buckets) {
|
||||
kfree(newtbl);
|
||||
|
@ -89,7 +89,7 @@ static struct mesh_table *mesh_table_alloc(int size_order)
|
|||
}
|
||||
|
||||
newtbl->hashwlock = kmalloc(sizeof(spinlock_t) *
|
||||
(1 << size_order), GFP_KERNEL);
|
||||
(1 << size_order), GFP_ATOMIC);
|
||||
if (!newtbl->hashwlock) {
|
||||
kfree(newtbl->hash_buckets);
|
||||
kfree(newtbl);
|
||||
|
|
Загрузка…
Ссылка в новой задаче