aboutsummaryrefslogtreecommitdiffstats
path: root/mm
diff options
authorLinus Torvalds <torvalds@linux-foundation.org>2026-05-15 10:38:37 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2026-05-15 10:38:37 -0700
commitfd6b56615696c2addca7b43c862b21a9a386c116 (patch)
treee3cceceed21b32d89f2f1d3ae903d66b88c60c4f /mm
parent70eda68668d1476b459b64e69b8f36659fa9dfa8 (diff)
parentd1fa83ecac31093a550534a79a33bc7f4ba8fc10 (diff)
downloadlinux-next-history-fd6b56615696c2addca7b43c862b21a9a386c116.tar.gz
Merge tag 'v7.1-p4' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
Pull crypto fixes from Herbert Xu: - Fix potential dead-lock in rhashtable when used by xattr - Avoid calling kvfree on atomic path in rhashtable * tag 'v7.1-p4' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6: rhashtable: Add bucket_table_free_atomic() helper mm/slab: Add kvfree_atomic() helper rhashtable: drop ht->mutex in rhashtable_free_and_destroy()
Diffstat (limited to 'mm')
-rw-r--r--mm/slub.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/mm/slub.c b/mm/slub.c
index 0baa906f39ab8..8f90045367296 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -6883,6 +6883,22 @@ void kvfree(const void *addr)
EXPORT_SYMBOL(kvfree);
/**
+ * kvfree_atomic() - Free memory.
+ * @addr: Pointer to allocated memory.
+ *
+ * Same as kvfree(), but uses vfree_atomic() for vmalloc
+ * backed memory. Must not be called from NMI context.
+ */
+void kvfree_atomic(const void *addr)
+{
+ if (is_vmalloc_addr(addr))
+ vfree_atomic(addr);
+ else
+ kfree(addr);
+}
+EXPORT_SYMBOL(kvfree_atomic);
+
+/**
* kvfree_sensitive - Free a data object containing sensitive information.
* @addr: address of the data object to be freed.
* @len: length of the data object.