crypto: picoxcell - set [src|dst]_nents and nents as signed int
authorLABBE Corentin <clabbe.montjoie@gmail.com>
Thu, 19 Nov 2015 12:38:18 +0000 (13:38 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Mon, 23 Nov 2015 12:55:55 +0000 (20:55 +0800)
The unsigned int variables [src|dst]_nents and nents can be assigned
signed value (-EINVAL) from sg_nents_for_len().
Furthermore they are used only by dma_map_sg and dma_unmap_sg which wait
for an signed int, so they must be set as int.

Fixes: f051f95eb47b ("crypto: picoxcell - check return value of sg_nents_for_len")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: LABBE Corentin <clabbe.montjoie@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/picoxcell_crypto.c

index a9c636745a003f5af29434d57d2a88a5509b8bf8..15b5e39b49246a2b28316ef05817339d31a0b4e6 100644 (file)
@@ -289,10 +289,11 @@ static struct spacc_ddt *spacc_sg_to_ddt(struct spacc_engine *engine,
                                         enum dma_data_direction dir,
                                         dma_addr_t *ddt_phys)
 {
-       unsigned nents, mapped_ents;
+       unsigned mapped_ents;
        struct scatterlist *cur;
        struct spacc_ddt *ddt;
        int i;
+       int nents;
 
        nents = sg_nents_for_len(payload, nbytes);
        if (nents < 0) {
@@ -326,7 +327,7 @@ static int spacc_aead_make_ddts(struct aead_request *areq)
        struct spacc_engine *engine = req->engine;
        struct spacc_ddt *src_ddt, *dst_ddt;
        unsigned total;
-       unsigned int src_nents, dst_nents;
+       int src_nents, dst_nents;
        struct scatterlist *cur;
        int i, dst_ents, src_ents;