Skip to content

Commit

Permalink
crypto: lib/blake2s - Split up test function to halve stack usage
Browse files Browse the repository at this point in the history
Reduce the stack usage further by splitting up the test function.

Also squash blocks and unaligned_blocks into one array.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
  • Loading branch information
herbertx committed Dec 30, 2022
1 parent 49bc6a7 commit e20d5a2
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions lib/crypto/blake2s-selftest.c
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,7 @@ static const u8 blake2s_testvecs[][BLAKE2S_HASH_SIZE] __initconst = {
0xd6, 0x98, 0x6b, 0x07, 0x10, 0x65, 0x52, 0x65, },
};

bool __init blake2s_selftest(void)
static bool __init noinline_for_stack blake2s_digest_test(void)
{
u8 key[BLAKE2S_KEY_SIZE];
u8 buf[ARRAY_SIZE(blake2s_testvecs)];
Expand Down Expand Up @@ -589,11 +589,20 @@ bool __init blake2s_selftest(void)
}
}

return success;
}

static bool __init noinline_for_stack blake2s_random_test(void)
{
struct blake2s_state state;
bool success = true;
int i, l;

for (i = 0; i < 32; ++i) {
enum { TEST_ALIGNMENT = 16 };
u8 unaligned_block[BLAKE2S_BLOCK_SIZE + TEST_ALIGNMENT - 1]
u8 blocks[BLAKE2S_BLOCK_SIZE * 2 + TEST_ALIGNMENT - 1]
__aligned(TEST_ALIGNMENT);
u8 blocks[BLAKE2S_BLOCK_SIZE * 2];
u8 *unaligned_block = blocks + BLAKE2S_BLOCK_SIZE;
struct blake2s_state state1, state2;

get_random_bytes(blocks, sizeof(blocks));
Expand Down Expand Up @@ -630,3 +639,13 @@ bool __init blake2s_selftest(void)

return success;
}

bool __init blake2s_selftest(void)
{
bool success;

success = blake2s_digest_test();
success &= blake2s_random_test();

return success;
}

0 comments on commit e20d5a2

Please sign in to comment.