libnvdimm: Annotate struct nd_region with __counted_by
authorKees Cook <keescook@chromium.org>
Fri, 22 Sep 2023 17:52:39 +0000 (10:52 -0700)
committerIra Weiny <ira.weiny@intel.com>
Wed, 27 Sep 2023 17:33:47 +0000 (10:33 -0700)
commitfd86eff33898f8ec2381620be32b06ee57f9adf8
treee4bea2cc4e66b8f1b528585893549b4d1eca9e24
parent36c75ce3bd299878fd9b238e9803d3817ddafbf3
libnvdimm: Annotate struct nd_region with __counted_by

Prepare for the coming implementation by GCC and Clang of the __counted_by
attribute. Flexible array members annotated with __counted_by can have
their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS
(for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family
functions).

As found with Coccinelle[1], add __counted_by for struct nd_region.
Additionally, since the element count member must be set before accessing
the annotated flexible array member, move its initialization earlier.

[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci

Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Vishal Verma <vishal.l.verma@intel.com>
Cc: Dave Jiang <dave.jiang@intel.com>
Cc: Ira Weiny <ira.weiny@intel.com>
Cc: nvdimm@lists.linux.dev
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
Reviewed-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
drivers/nvdimm/nd.h
drivers/nvdimm/region_devs.c