Message ID | 20231128173828.84083-1-damian.muszynski@intel.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Herbert Xu |
Headers | show |
Series | crypto: qat - fix error path in add_update_sla() | expand |
On Tue, Nov 28, 2023 at 06:37:32PM +0100, Damian Muszynski wrote: > 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> > --- > drivers/crypto/intel/qat/qat_common/adf_rl.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) Patch applied. Thanks.
diff --git a/drivers/crypto/intel/qat/qat_common/adf_rl.c b/drivers/crypto/intel/qat/qat_common/adf_rl.c index 86e3e2152b1b..f2de3cd7d05d 100644 --- a/drivers/crypto/intel/qat/qat_common/adf_rl.c +++ b/drivers/crypto/intel/qat/qat_common/adf_rl.c @@ -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 */