crypto: lib/chacha20poly1305 - Set SG_MITER_ATOMIC unconditionally
authorHerbert Xu <herbert@gondor.apana.org.au>
Tue, 15 Sep 2020 03:30:24 +0000 (13:30 +1000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 25 Sep 2020 07:48:13 +0000 (17:48 +1000)
There is no reason for the chacha20poly1305 SG miter code to use
kmap instead of kmap_atomic as the critical section doesn't sleep
anyway.  So we can simply get rid of the preemptible check and
set SG_MITER_ATOMIC unconditionally.

Even if we need to reenable preemption to lower latency we should
be doing that by interrupting the SG miter walk rather than using
kmap.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
lib/crypto/chacha20poly1305.c

index 431e042..5850f3b 100644 (file)
@@ -251,9 +251,7 @@ bool chacha20poly1305_crypt_sg_inplace(struct scatterlist *src,
                        poly1305_update(&poly1305_state, pad0, 0x10 - (ad_len & 0xf));
        }
 
-       flags = SG_MITER_TO_SG;
-       if (!preemptible())
-               flags |= SG_MITER_ATOMIC;
+       flags = SG_MITER_TO_SG | SG_MITER_ATOMIC;
 
        sg_miter_start(&miter, src, sg_nents(src), flags);