Skip to content

Commit

Permalink
crypto: arm64/nhpoly1305 - eliminate unnecessary CFI wrapper
Browse files Browse the repository at this point in the history
Since the CFI implementation now supports indirect calls to assembly
functions, take advantage of that rather than use a wrapper function.

Acked-by: Peter Zijlstra (Intel) <[email protected]>
Reviewed-by: Sami Tolvanen <[email protected]>
Signed-off-by: Eric Biggers <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
ebiggers authored and herbertx committed Nov 25, 2022
1 parent 2d203c4 commit e5e1c67
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 11 deletions.
5 changes: 3 additions & 2 deletions arch/arm64/crypto/nh-neon-core.S
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
*/

#include <linux/linkage.h>
#include <linux/cfi_types.h>

KEY .req x0
MESSAGE .req x1
Expand Down Expand Up @@ -58,11 +59,11 @@

/*
* void nh_neon(const u32 *key, const u8 *message, size_t message_len,
* u8 hash[NH_HASH_BYTES])
* __le64 hash[NH_NUM_PASSES])
*
* It's guaranteed that message_len % 16 == 0.
*/
SYM_FUNC_START(nh_neon)
SYM_TYPED_FUNC_START(nh_neon)

ld1 {K0.4s,K1.4s}, [KEY], #32
movi PASS0_SUMS.2d, #0
Expand Down
11 changes: 2 additions & 9 deletions arch/arm64/crypto/nhpoly1305-neon-glue.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,7 @@
#include <linux/module.h>

asmlinkage void nh_neon(const u32 *key, const u8 *message, size_t message_len,
u8 hash[NH_HASH_BYTES]);

/* wrapper to avoid indirect call to assembly, which doesn't work with CFI */
static void _nh_neon(const u32 *key, const u8 *message, size_t message_len,
__le64 hash[NH_NUM_PASSES])
{
nh_neon(key, message, message_len, (u8 *)hash);
}
__le64 hash[NH_NUM_PASSES]);

static int nhpoly1305_neon_update(struct shash_desc *desc,
const u8 *src, unsigned int srclen)
Expand All @@ -33,7 +26,7 @@ static int nhpoly1305_neon_update(struct shash_desc *desc,
unsigned int n = min_t(unsigned int, srclen, SZ_4K);

kernel_neon_begin();
crypto_nhpoly1305_update_helper(desc, src, n, _nh_neon);
crypto_nhpoly1305_update_helper(desc, src, n, nh_neon);
kernel_neon_end();
src += n;
srclen -= n;
Expand Down

0 comments on commit e5e1c67

Please sign in to comment.