2020-08-07 16:24:25

by Andrei Botila

[permalink] [raw]
Subject: [PATCH 10/22] crypto: atmel-aes - add check for xts input length equal to zero

From: Andrei Botila <[email protected]>

Standardize the way input lengths equal to 0 are handled in all skcipher
algorithms. All the algorithms return 0 for input lengths equal to zero.

Cc: Nicolas Ferre <[email protected]>
Cc: Alexandre Belloni <[email protected]>
Cc: Ludovic Desroches <[email protected]>
Signed-off-by: Andrei Botila <[email protected]>
---
drivers/crypto/atmel-aes.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/crypto/atmel-aes.c b/drivers/crypto/atmel-aes.c
index a6e14491e080..af789ac73478 100644
--- a/drivers/crypto/atmel-aes.c
+++ b/drivers/crypto/atmel-aes.c
@@ -1107,6 +1107,10 @@ static int atmel_aes_crypt(struct skcipher_request *req, unsigned long mode)
ctx->block_size = CFB64_BLOCK_SIZE;
break;

+ case AES_FLAGS_XTS:
+ if (!req->cryptlen)
+ return 0;
+
default:
ctx->block_size = AES_BLOCK_SIZE;
break;
--
2.17.1


2020-08-07 18:08:23

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH 10/22] crypto: atmel-aes - add check for xts input length equal to zero

Hi Andrei,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on cryptodev/master]
[also build test WARNING on crypto/master next-20200807]
[cannot apply to powerpc/next sparc-next/master v5.8]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/Andrei-Botila/crypto-add-check-for-xts-input-length-equal-to-zero/20200808-002648
base: https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git master
config: arm-defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>

All warnings (new ones prefixed by >>):

drivers/crypto/atmel-aes.c: In function 'atmel_aes_crypt':
>> drivers/crypto/atmel-aes.c:1111:6: warning: this statement may fall through [-Wimplicit-fallthrough=]
1111 | if (!req->cryptlen)
| ^
drivers/crypto/atmel-aes.c:1114:2: note: here
1114 | default:
| ^~~~~~~

vim +1111 drivers/crypto/atmel-aes.c

1085
1086 static int atmel_aes_crypt(struct skcipher_request *req, unsigned long mode)
1087 {
1088 struct crypto_skcipher *skcipher = crypto_skcipher_reqtfm(req);
1089 struct atmel_aes_base_ctx *ctx = crypto_skcipher_ctx(skcipher);
1090 struct atmel_aes_reqctx *rctx;
1091 struct atmel_aes_dev *dd;
1092
1093 switch (mode & AES_FLAGS_OPMODE_MASK) {
1094 case AES_FLAGS_CFB8:
1095 ctx->block_size = CFB8_BLOCK_SIZE;
1096 break;
1097
1098 case AES_FLAGS_CFB16:
1099 ctx->block_size = CFB16_BLOCK_SIZE;
1100 break;
1101
1102 case AES_FLAGS_CFB32:
1103 ctx->block_size = CFB32_BLOCK_SIZE;
1104 break;
1105
1106 case AES_FLAGS_CFB64:
1107 ctx->block_size = CFB64_BLOCK_SIZE;
1108 break;
1109
1110 case AES_FLAGS_XTS:
> 1111 if (!req->cryptlen)
1112 return 0;
1113
1114 default:
1115 ctx->block_size = AES_BLOCK_SIZE;
1116 break;
1117 }
1118 ctx->is_aead = false;
1119
1120 dd = atmel_aes_find_dev(ctx);
1121 if (!dd)
1122 return -ENODEV;
1123
1124 rctx = skcipher_request_ctx(req);
1125 rctx->mode = mode;
1126
1127 if ((mode & AES_FLAGS_OPMODE_MASK) != AES_FLAGS_ECB &&
1128 !(mode & AES_FLAGS_ENCRYPT) && req->src == req->dst) {
1129 unsigned int ivsize = crypto_skcipher_ivsize(skcipher);
1130
1131 if (req->cryptlen >= ivsize)
1132 scatterwalk_map_and_copy(rctx->lastc, req->src,
1133 req->cryptlen - ivsize,
1134 ivsize, 0);
1135 }
1136
1137 return atmel_aes_handle_queue(dd, &req->base);
1138 }
1139

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]


Attachments:
(No filename) (3.25 kB)
.config.gz (51.44 kB)
Download all attachments