Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

crypto: qat - Return pointer directly in adf_ctl_alloc_resources

Returning values through arguments is confusing and that has
upset the compiler with the recent change to memdup_user:

../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c: In function ‘adf_ctl_ioctl’:
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:308:26: warning: ‘ctl_data’ may be used uninitialized [-Wmaybe-uninitialized]
308 | ctl_data->device_id);
| ^~
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:294:39: note: ‘ctl_data’ was declared here
294 | struct adf_user_cfg_ctl_data *ctl_data;
| ^~~~~~~~
In function ‘adf_ctl_ioctl_dev_stop’,
inlined from ‘adf_ctl_ioctl’ at ../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:386:9:
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:273:48: warning: ‘ctl_data’ may be used uninitialized [-Wmaybe-uninitialized]
273 | ret = adf_ctl_is_device_in_use(ctl_data->device_id);
| ~~~~~~~~^~~~~~~~~~~
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c: In function ‘adf_ctl_ioctl’:
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:261:39: note: ‘ctl_data’ was declared here
261 | struct adf_user_cfg_ctl_data *ctl_data;
| ^~~~~~~~
In function ‘adf_ctl_ioctl_dev_config’,
inlined from ‘adf_ctl_ioctl’ at ../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:382:9:
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:192:54: warning: ‘ctl_data’ may be used uninitialized [-Wmaybe-uninitialized]
192 | accel_dev = adf_devmgr_get_dev_by_id(ctl_data->device_id);
| ~~~~~~~~^~~~~~~~~~~
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c: In function ‘adf_ctl_ioctl’:
../drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c:185:39: note: ‘ctl_data’ was declared here
185 | struct adf_user_cfg_ctl_data *ctl_data;
| ^~~~~~~~

Fix this by returning the pointer directly.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Reviewed-by: Thorsten Blum <thorsten.blum@linux.dev>
Acked-by: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

+13 -18
+13 -18
drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c
··· 89 89 return -EFAULT; 90 90 } 91 91 92 - static int adf_ctl_alloc_resources(struct adf_user_cfg_ctl_data **ctl_data, 93 - unsigned long arg) 92 + static struct adf_user_cfg_ctl_data *adf_ctl_alloc_resources(unsigned long arg) 94 93 { 95 94 struct adf_user_cfg_ctl_data *cfg_data; 96 95 97 96 cfg_data = memdup_user((void __user *)arg, sizeof(*cfg_data)); 98 - if (IS_ERR(cfg_data)) { 97 + if (IS_ERR(cfg_data)) 99 98 pr_err("QAT: failed to copy from user cfg_data.\n"); 100 - return PTR_ERR(cfg_data); 101 - } 102 - 103 - *ctl_data = cfg_data; 104 - return 0; 99 + return cfg_data; 105 100 } 106 101 107 102 static int adf_add_key_value_data(struct adf_accel_dev *accel_dev, ··· 176 181 static int adf_ctl_ioctl_dev_config(struct file *fp, unsigned int cmd, 177 182 unsigned long arg) 178 183 { 179 - int ret; 180 184 struct adf_user_cfg_ctl_data *ctl_data; 181 185 struct adf_accel_dev *accel_dev; 186 + int ret = 0; 182 187 183 - ret = adf_ctl_alloc_resources(&ctl_data, arg); 184 - if (ret) 185 - return ret; 188 + ctl_data = adf_ctl_alloc_resources(arg); 189 + if (IS_ERR(ctl_data)) 190 + return PTR_ERR(ctl_data); 186 191 187 192 accel_dev = adf_devmgr_get_dev_by_id(ctl_data->device_id); 188 193 if (!accel_dev) { ··· 255 260 int ret; 256 261 struct adf_user_cfg_ctl_data *ctl_data; 257 262 258 - ret = adf_ctl_alloc_resources(&ctl_data, arg); 259 - if (ret) 260 - return ret; 263 + ctl_data = adf_ctl_alloc_resources(arg); 264 + if (IS_ERR(ctl_data)) 265 + return PTR_ERR(ctl_data); 261 266 262 267 if (adf_devmgr_verify_id(ctl_data->device_id)) { 263 268 pr_err("QAT: Device %d not found\n", ctl_data->device_id); ··· 289 294 struct adf_user_cfg_ctl_data *ctl_data; 290 295 struct adf_accel_dev *accel_dev; 291 296 292 - ret = adf_ctl_alloc_resources(&ctl_data, arg); 293 - if (ret) 294 - return ret; 297 + ctl_data = adf_ctl_alloc_resources(arg); 298 + if (IS_ERR(ctl_data)) 299 + return PTR_ERR(ctl_data); 295 300 296 301 ret = -ENODEV; 297 302 accel_dev = adf_devmgr_get_dev_by_id(ctl_data->device_id);