aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2018-06-11 14:35:55 -0700
committerKees Cook <keescook@chromium.org>2018-06-12 16:19:22 -0700
commit1c542f38ab8d30d9c852a16d49ac5a15267bbf1f (patch)
tree20ace1eb1fe5b61211f5dfcd10a5af136682ebd4
parentvideo: uvesafb: Fix integer overflow in allocation (diff)
downloadlinux-dev-1c542f38ab8d30d9c852a16d49ac5a15267bbf1f.tar.xz
linux-dev-1c542f38ab8d30d9c852a16d49ac5a15267bbf1f.zip
mm: Introduce kvcalloc()
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>
-rw-r--r--include/linux/mm.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 0e493884e6e1..a0fbb9ffe380 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -575,6 +575,11 @@ static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
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)