Commit 28cca23d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull hardening fixes from Kees Cook:

 - Split slow memcpy tests into MEMCPY_SLOW_KUNIT_TEST

 - Reorganize gcc-plugin includes for GCC 13

 - Silence bcache memcpy run-time false positive warnings

* tag 'hardening-v6.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
  bcache: Silence memcpy() run-time false positive warnings
  gcc-plugins: Reorganize gimple includes for GCC 13
  kunit: memcpy: Split slow memcpy tests into MEMCPY_SLOW_KUNIT_TEST
parents d786f0fe be0d8f48
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -106,7 +106,8 @@ static inline unsigned long bkey_bytes(const struct bkey *k)
	return bkey_u64s(k) * sizeof(__u64);
}

#define bkey_copy(_dest, _src)	memcpy(_dest, _src, bkey_bytes(_src))
#define bkey_copy(_dest, _src)	unsafe_memcpy(_dest, _src, bkey_bytes(_src), \
					/* bkey is always padded */)

static inline void bkey_copy_key(struct bkey *dest, const struct bkey *src)
{
+2 −1
Original line number Diff line number Diff line
@@ -149,7 +149,8 @@ reread: left = ca->sb.bucket_size - offset;
				    bytes, GFP_KERNEL);
			if (!i)
				return -ENOMEM;
			memcpy(&i->j, j, bytes);
			unsafe_memcpy(&i->j, j, bytes,
				/* "bytes" was calculated by set_bytes() above */);
			/* Add to the location after 'where' points to */
			list_add(&i->list, where);
			ret = 1;
+9 −0
Original line number Diff line number Diff line
@@ -2566,6 +2566,15 @@ config MEMCPY_KUNIT_TEST

	  If unsure, say N.

config MEMCPY_SLOW_KUNIT_TEST
	bool "Include exhaustive memcpy tests"
	depends on MEMCPY_KUNIT_TEST
	default y
	help
	  Some memcpy tests are quite exhaustive in checking for overlaps
	  and bit ranges. These can be very slow, so they are split out
	  as a separate config, in case they need to be disabled.

config IS_SIGNED_TYPE_KUNIT_TEST
	tristate "Test is_signed_type() macro" if !KUNIT_ALL_TESTS
	depends on KUNIT
+2 −0
Original line number Diff line number Diff line
@@ -309,6 +309,8 @@ static void set_random_nonzero(struct kunit *test, u8 *byte)

static void init_large(struct kunit *test)
{
	if (!IS_ENABLED(CONFIG_MEMCPY_SLOW_KUNIT_TEST))
		kunit_skip(test, "Slow test skipped. Enable with CONFIG_MEMCPY_SLOW_KUNIT_TEST=y");

	/* Get many bit patterns. */
	get_random_bytes(large_src, ARRAY_SIZE(large_src));
+2 −2
Original line number Diff line number Diff line
@@ -71,7 +71,9 @@
#include "varasm.h"
#include "stor-layout.h"
#include "internal-fn.h"
#include "gimple.h"
#include "gimple-expr.h"
#include "gimple-iterator.h"
#include "gimple-fold.h"
#include "context.h"
#include "tree-ssa-alias.h"
@@ -85,10 +87,8 @@
#include "tree-eh.h"
#include "stmt.h"
#include "gimplify.h"
#include "gimple.h"
#include "tree-phinodes.h"
#include "tree-cfg.h"
#include "gimple-iterator.h"
#include "gimple-ssa.h"
#include "ssa-iterators.h"