Blob Blame History Raw
From 1c542f38ab8d30d9c852a16d49ac5a15267bbf1f Mon Sep 17 00:00:00 2001
From: Kees Cook <keescook@chromium.org>
Date: Mon, 11 Jun 2018 14:35:55 -0700
Subject: mm: Introduce kvcalloc()
Git-commit: 1c542f38ab8d30d9c852a16d49ac5a15267bbf1f
Patch-mainline: v4.18-rc1
References: FATE#326289

The kv*alloc()-family was missing kvcalloc(). Adding this allows for
2-argument multiplication conversions of kvzalloc(a * b, ...) into
kvcalloc(a, b, ...).

Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 include/linux/mm.h |    5 +++++
 1 file changed, 5 insertions(+)

--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -555,6 +555,11 @@ static inline void *kvmalloc_array(size_
 	return kvmalloc(bytes, flags);
 }
 
+static inline void *kvcalloc(size_t n, size_t size, gfp_t flags)
+{
+	return kvmalloc_array(n, size, flags | __GFP_ZERO);
+}
+
 extern void kvfree(const void *addr);
 
 static inline atomic_t *compound_mapcount_ptr(struct page *page)