Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

crypto: qce - check return value of sg_nents_for_len

The sg_nents_for_len() function could fail, this patch add a check for
its return value.

Signed-off-by: LABBE Corentin <clabbe.montjoie@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

authored by

LABBE Corentin and committed by
Herbert Xu
4fa9948c 6c2b74d4

+13
+8
drivers/crypto/qce/ablkcipher.c
··· 83 83 rctx->dst_nents = sg_nents_for_len(req->dst, req->nbytes); 84 84 else 85 85 rctx->dst_nents = rctx->src_nents; 86 + if (rctx->src_nents < 0) { 87 + dev_err(qce->dev, "Invalid numbers of src SG.\n"); 88 + return rctx->src_nents; 89 + } 90 + if (rctx->dst_nents < 0) { 91 + dev_err(qce->dev, "Invalid numbers of dst SG.\n"); 92 + return -rctx->dst_nents; 93 + } 86 94 87 95 rctx->dst_nents += 1; 88 96
+5
drivers/crypto/qce/sha.c
··· 92 92 } 93 93 94 94 rctx->src_nents = sg_nents_for_len(req->src, req->nbytes); 95 + if (rctx->src_nents < 0) { 96 + dev_err(qce->dev, "Invalid numbers of src SG.\n"); 97 + return rctx->src_nents; 98 + } 99 + 95 100 ret = dma_map_sg(qce->dev, req->src, rctx->src_nents, DMA_TO_DEVICE); 96 101 if (ret < 0) 97 102 return ret;