kzfree() is a wrapper for kfree() that additionally zeroes the underlying memory before releasing it to the slab allocator. Signed-off-by: Johannes Weiner Acked-by: Pekka Enberg Cc: Matt Mackall Cc: Christoph Lameter Cc: Nick Piggin --- include/linux/slab.h | 1 + mm/util.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -127,6 +127,7 @@ int kmem_ptr_validate(struct kmem_cache void * __must_check __krealloc(const void *, size_t, gfp_t); void * __must_check krealloc(const void *, size_t, gfp_t); void kfree(const void *); +void kzfree(const void *); size_t ksize(const void *); /* --- a/mm/util.c +++ b/mm/util.c @@ -129,6 +129,25 @@ void *krealloc(const void *p, size_t new } EXPORT_SYMBOL(krealloc); +/** + * kzfree - like kfree but zero memory + * @p: object to free memory of + * + * The memory of the object @p points to is zeroed before freed. + * If @p is %NULL, kzfree() does nothing. + */ +void kzfree(const void *p) +{ + size_t ks; + void *mem = (void *)p; + + if (unlikely(ZERO_OR_NULL_PTR(mem))) + return; + ks = ksize(mem); + memset(mem, 0, ks); + kfree(mem); +} + /* * strndup_user - duplicate an existing string from user space * @s: The string to duplicate -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/