crypto: spacc - Fix bounds checking on spacc->job[]
authorDan Carpenter <dan.carpenter@linaro.org>
Wed, 14 Aug 2024 21:11:51 +0000 (00:11 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 24 Aug 2024 13:36:07 +0000 (21:36 +0800)
This bounds checking is off by one.  The > should be >=.  The
spacc->job[] array is allocated in spacc_init() and it has
SPACC_MAX_JOBS elements.

Fixes: 8ebb14deef0f ("crypto: spacc - Enable SPAcc AUTODETECT")
Fixes: c8981d9230d8 ("crypto: spacc - Add SPAcc Skcipher support")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/dwc-spacc/spacc_core.c

index 9bc49de..e338052 100644 (file)
@@ -1024,7 +1024,7 @@ int spacc_set_operation(struct spacc_device *spacc, int handle, int op,
        int ret = CRYPTO_OK;
        struct spacc_job *job = NULL;
 
-       if (handle < 0 || handle > SPACC_MAX_JOBS)
+       if (handle < 0 || handle >= SPACC_MAX_JOBS)
                return -ENXIO;
 
        job = &spacc->job[handle];
@@ -1105,7 +1105,7 @@ int spacc_packet_enqueue_ddt_ex(struct spacc_device *spacc, int use_jb,
        struct spacc_job *job;
        int ret = CRYPTO_OK, proc_len;
 
-       if (job_idx < 0 || job_idx > SPACC_MAX_JOBS)
+       if (job_idx < 0 || job_idx >= SPACC_MAX_JOBS)
                return -ENXIO;
 
        switch (prio)  {
@@ -1331,7 +1331,7 @@ static int spacc_set_auxinfo(struct spacc_device *spacc, int jobid,
        int ret = CRYPTO_OK;
        struct spacc_job *job;
 
-       if (jobid < 0 || jobid > SPACC_MAX_JOBS)
+       if (jobid < 0 || jobid >= SPACC_MAX_JOBS)
                return -ENXIO;
 
        job = &spacc->job[jobid];
@@ -2364,7 +2364,7 @@ int spacc_set_key_exp(struct spacc_device *spacc, int job_idx)
        struct spacc_ctx *ctx = NULL;
        struct spacc_job *job = NULL;
 
-       if (job_idx < 0 || job_idx > SPACC_MAX_JOBS) {
+       if (job_idx < 0 || job_idx >= SPACC_MAX_JOBS) {
                pr_debug("ERR: Invalid Job id specified (out of range)\n");
                return -ENXIO;
        }