diff options
| author | Thorsten Blum <thorsten.blum@linux.dev> | 2026-06-25 10:08:44 -0400 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2026-07-04 13:43:36 +0200 |
| commit | f6f33354c3256471feadc74e645937cc7a77bb0f (patch) | |
| tree | 8af0a19593a5c23de2439f0a3e423d92b2409989 | |
| parent | a3c7f9470ecff6f98872c97cbff38654b9843085 (diff) | |
| download | linux-f6f33354c3256471feadc74e645937cc7a77bb0f.tar.gz linux-f6f33354c3256471feadc74e645937cc7a77bb0f.zip | |
crypto: qat - Replace kzalloc() + copy_from_user() with memdup_user()
[ Upstream commit 1e26339703e2afd397037defa798682b2b93dcc0 ]
Replace kzalloc() followed by copy_from_user() with memdup_user() to
improve and simplify adf_ctl_alloc_resources(). memdup_user() returns
either -ENOMEM or -EFAULT (instead of -EIO) if an error occurs.
Remove the unnecessary device id initialization, since memdup_user()
(like copy_from_user()) immediately overwrites it.
No functional changes intended other than returning the more idiomatic
error code -EFAULT.
Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Stable-dep-of: d237230728c5 ("crypto: qat - remove unused character device and IOCTLs")
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c index 70fa0f6497a9..b029420f9a31 100644 --- a/drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c +++ b/drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c @@ -94,17 +94,10 @@ static int adf_ctl_alloc_resources(struct adf_user_cfg_ctl_data **ctl_data, { struct adf_user_cfg_ctl_data *cfg_data; - cfg_data = kzalloc(sizeof(*cfg_data), GFP_KERNEL); - if (!cfg_data) - return -ENOMEM; - - /* Initialize device id to NO DEVICE as 0 is a valid device id */ - cfg_data->device_id = ADF_CFG_NO_DEVICE; - - if (copy_from_user(cfg_data, (void __user *)arg, sizeof(*cfg_data))) { + cfg_data = memdup_user((void __user *)arg, sizeof(*cfg_data)); + if (IS_ERR(cfg_data)) { pr_err("QAT: failed to copy from user cfg_data.\n"); - kfree(cfg_data); - return -EIO; + return PTR_ERR(cfg_data); } *ctl_data = cfg_data; |
