crypto: x86/chacha20 - Avoid spurious jumps to other functions
authorPeter Zijlstra <peterz@infradead.org>
Tue, 22 Mar 2022 11:48:10 +0000 (12:48 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 25 Mar 2022 04:21:05 +0000 (16:21 +1200)
The chacha_Nblock_xor_avx512vl() functions all have their own,
identical, .LdoneN label, however in one particular spot {2,4} jump to
the 8 version instead of their own. Resulting in:

  arch/x86/crypto/chacha-x86_64.o: warning: objtool: chacha_2block_xor_avx512vl() falls through to next function chacha_8block_xor_avx512vl()
  arch/x86/crypto/chacha-x86_64.o: warning: objtool: chacha_4block_xor_avx512vl() falls through to next function chacha_8block_xor_avx512vl()

Make each function consistently use its own done label.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Martin Willi <martin@strongswan.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/chacha-avx512vl-x86_64.S

index 946f74d..259383e 100644 (file)
@@ -172,7 +172,7 @@ SYM_FUNC_START(chacha_2block_xor_avx512vl)
        # xor remaining bytes from partial register into output
        mov             %rcx,%rax
        and             $0xf,%rcx
-       jz              .Ldone8
+       jz              .Ldone2
        mov             %rax,%r9
        and             $~0xf,%r9
 
@@ -438,7 +438,7 @@ SYM_FUNC_START(chacha_4block_xor_avx512vl)
        # xor remaining bytes from partial register into output
        mov             %rcx,%rax
        and             $0xf,%rcx
-       jz              .Ldone8
+       jz              .Ldone4
        mov             %rax,%r9
        and             $~0xf,%r9