Commit 3b3b1a29 authored by Kees Cook's avatar Kees Cook
Browse files

mm: Use overflow helpers in kvmalloc()



Instead of open-coded multiplication and bounds checking, use the new
overflow helper. Additionally prepare for vmalloc() users to add
array_size()-family helpers in the future.

Signed-off-by: default avatarKees Cook <keescook@chromium.org>
parent 49b7f898
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@
#include <linux/err.h>
#include <linux/page_ref.h>
#include <linux/memremap.h>
#include <linux/overflow.h>

struct mempolicy;
struct anon_vma;
@@ -560,10 +561,12 @@ static inline void *kvzalloc(size_t size, gfp_t flags)

static inline void *kvmalloc_array(size_t n, size_t size, gfp_t flags)
{
	if (size != 0 && n > SIZE_MAX / size)
	size_t bytes;

	if (unlikely(check_mul_overflow(n, size, &bytes)))
		return NULL;

	return kvmalloc(n * size, flags);
	return kvmalloc(bytes, flags);
}

extern void kvfree(const void *addr);
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@
#include <linux/llist.h>
#include <asm/page.h>		/* pgprot_t */
#include <linux/rbtree.h>
#include <linux/overflow.h>

struct vm_area_struct;		/* vma defining user mapping in mm_types.h */
struct notifier_block;		/* in notifier.h */