]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
rhashtable: Add bucket_table_free_atomic() helper
authorUladzislau Rezki (Sony) <urezki@gmail.com>
Tue, 28 Apr 2026 16:14:19 +0000 (18:14 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Tue, 5 May 2026 08:12:07 +0000 (16:12 +0800)
commitd1fa83ecac31093a550534a79a33bc7f4ba8fc10
tree53e406c8ac9c7396ddca3ab02b0ada5d8d4bc73a
parentdad0d91cc2c3e6b6fb285ccfe7ddf71525797198
rhashtable: Add bucket_table_free_atomic() helper

rhashtable_insert_rehash() allocates a new bucket table
with GFP_ATOMIC, as it is called from an RCU read-side
critical section.

If rhashtable_rehash_attach() then fails, the new table
is freed via kvfree(). This is unsafe, since kvfree() may
fall back to vfree() for vmalloc-backed allocations, which
can sleep and trigger:

  BUG: sleeping function called from invalid context

Add bucket_table_free_atomic(), which uses kvfree_atomic()
so the table can be freed safely from non-sleeping context.

Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
lib/rhashtable.c