crypto: qat - fix error path in add_update_sla()
authorDamian Muszynski <damian.muszynski@intel.com>
Tue, 28 Nov 2023 17:37:32 +0000 (18:37 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 8 Dec 2023 03:59:44 +0000 (11:59 +0800)
The input argument `sla_in` is a pointer to a structure that contains
the parameters of the SLA which is being added or updated.
If this pointer is NULL, the function should return an error as
the data required for the algorithm is not available.
By mistake, the logic jumps to the error path which dereferences
the pointer.

This results in a warnings reported by the static analyzer Smatch when
executed without a database:

    drivers/crypto/intel/qat/qat_common/adf_rl.c:871 add_update_sla()
    error: we previously assumed 'sla_in' could be null (see line 812)

This issue was not found in internal testing as the pointer cannot be
NULL. The function add_update_sla() is only called (indirectly) by
the rate limiting sysfs interface implementation in adf_sysfs_rl.c
which ensures that the data structure is allocated and valid. This is
also proven by the fact that Smatch executed with a database does not
report such error.

Fix it by returning with error if the pointer `sla_in` is NULL.

Fixes: d9fb8408376e ("crypto: qat - add rate limiting feature to qat_4xxx")
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Signed-off-by: Damian Muszynski <damian.muszynski@intel.com>
Reviewed-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/intel/qat/qat_common/adf_rl.c

index 86e3e2152b1b00892e875c6ee2b70d5ed5adc63a..f2de3cd7d05d77dfeeee4f70237d789306040a95 100644 (file)
@@ -812,8 +812,7 @@ static int add_update_sla(struct adf_accel_dev *accel_dev,
        if (!sla_in) {
                dev_warn(&GET_DEV(accel_dev),
                         "SLA input data pointer is missing\n");
-               ret = -EFAULT;
-               goto ret_err;
+               return -EFAULT;
        }
 
        /* Input validation */