crypto: aesni - xts_crypt() return if walk.nbytes is 0
authorShreyansh Chouhan <chouhan.shreyansh630@gmail.com>
Sun, 22 Aug 2021 03:45:14 +0000 (09:15 +0530)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 27 Aug 2021 08:30:19 +0000 (16:30 +0800)
xts_crypt() code doesn't call kernel_fpu_end() after calling
kernel_fpu_begin() if walk.nbytes is 0. The correct behavior should be
not calling kernel_fpu_begin() if walk.nbytes is 0.

Reported-by: syzbot+20191dc583eff8602d2d@syzkaller.appspotmail.com
Signed-off-by: Shreyansh Chouhan <chouhan.shreyansh630@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/x86/crypto/aesni-intel_glue.c

index 388643c..0fc961b 100644 (file)
@@ -849,7 +849,7 @@ static int xts_crypt(struct skcipher_request *req, bool encrypt)
                return -EINVAL;
 
        err = skcipher_walk_virt(&walk, req, false);
-       if (err)
+       if (!walk.nbytes)
                return err;
 
        if (unlikely(tail > 0 && walk.nbytes < walk.total)) {