|
@@ -189,18 +189,12 @@ static long zfcp_cfdc_dev_ioctl(struct file *file, unsigned int command,
|
|
|
if (!fsf_cfdc)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- data = kmalloc(sizeof(struct zfcp_cfdc_data), GFP_KERNEL);
|
|
|
- if (!data) {
|
|
|
- retval = -ENOMEM;
|
|
|
+ data = memdup_user(data_user, sizeof(*data_user));
|
|
|
+ if (IS_ERR(data)) {
|
|
|
+ retval = PTR_ERR(data);
|
|
|
goto no_mem_sense;
|
|
|
}
|
|
|
|
|
|
- retval = copy_from_user(data, data_user, sizeof(*data));
|
|
|
- if (retval) {
|
|
|
- retval = -EFAULT;
|
|
|
- goto free_buffer;
|
|
|
- }
|
|
|
-
|
|
|
if (data->signature != 0xCFDCACDF) {
|
|
|
retval = -EINVAL;
|
|
|
goto free_buffer;
|