crypto: ccree - don't attempt 0 len DMA mappings
authorGilad Ben-Yossef <gilad@benyossef.com>
Thu, 17 Feb 2022 19:27:26 +0000 (21:27 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Apr 2022 12:23:06 +0000 (14:23 +0200)
[ Upstream commit 1fb37b5692c915edcc2448a6b37255738c7c77e0 ]

Refuse to try mapping zero bytes as this may cause a fault
on some configurations / platforms and it seems the prev.
attempt is not enough and we need to be more explicit.

Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com>
Reported-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Fixes: ce0fc6db38de ("crypto: ccree - protect against empty or NULL
scatterlists")
Tested-by: Corentin Labbe <clabbe.montjoie@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/crypto/ccree/cc_buffer_mgr.c

index a5e041d9d2cf132516aa43db7bb3d13ec04f703a..11e0278c8631d2e0b2ea5f0e406b02074218a658 100644 (file)
@@ -258,6 +258,13 @@ static int cc_map_sg(struct device *dev, struct scatterlist *sg,
 {
        int ret = 0;
 
+       if (!nbytes) {
+               *mapped_nents = 0;
+               *lbytes = 0;
+               *nents = 0;
+               return 0;
+       }
+
        *nents = cc_get_sgl_nents(dev, sg, nbytes, lbytes);
        if (*nents > max_sg_nents) {
                *nents = 0;