overflow.h: Add allocation size calculation helpers
authorKees Cook <keescook@chromium.org>
Mon, 7 May 2018 23:47:02 +0000 (16:47 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 3 Sep 2020 09:21:22 +0000 (11:21 +0200)
commit676057c7750dcae319e2f3f37bc2ca4e7b14448e
tree74763af006fd59189c8d10417081ef176bcc7ae3
parent28d3ae31454e330aa1db09e60e468742369bab65
overflow.h: Add allocation size calculation helpers

commit 610b15c50e86eb1e4b77274fabcaea29ac72d6a8 upstream.

In preparation for replacing unchecked overflows for memory allocations,
this creates helpers for the 3 most common calculations:

array_size(a, b): 2-dimensional array
array3_size(a, b, c): 3-dimensional array
struct_size(ptr, member, n): struct followed by n-many trailing members

Each of these return SIZE_MAX on overflow instead of wrapping around.

(Additionally renames a variable named "array_size" to avoid future
collision.)

Co-developed-by: Matthew Wilcox <mawilcox@microsoft.com>
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/md/dm-table.c
include/linux/overflow.h