diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rhashtable.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/rhashtable.c b/lib/rhashtable.c index 4898442b837f..f648cfde8520 100644 --- a/lib/rhashtable.c +++ b/lib/rhashtable.c | |||
@@ -410,8 +410,13 @@ int rhashtable_insert_rehash(struct rhashtable *ht) | |||
410 | return -EBUSY; | 410 | return -EBUSY; |
411 | 411 | ||
412 | new_tbl = bucket_table_alloc(ht, size, GFP_ATOMIC); | 412 | new_tbl = bucket_table_alloc(ht, size, GFP_ATOMIC); |
413 | if (new_tbl == NULL) | 413 | if (new_tbl == NULL) { |
414 | /* Schedule async resize/rehash to try allocation | ||
415 | * non-atomic context. | ||
416 | */ | ||
417 | schedule_work(&ht->run_work); | ||
414 | return -ENOMEM; | 418 | return -ENOMEM; |
419 | } | ||
415 | 420 | ||
416 | err = rhashtable_rehash_attach(ht, tbl, new_tbl); | 421 | err = rhashtable_rehash_attach(ht, tbl, new_tbl); |
417 | if (err) { | 422 | if (err) { |