|
@@ -129,6 +129,26 @@ void *krealloc(const void *p, size_t new_size, gfp_t flags)
|
|
|
}
|
|
|
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);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL(kzfree);
|
|
|
+
|
|
|
/*
|
|
|
* strndup_user - duplicate an existing string from user space
|
|
|
* @s: The string to duplicate
|