|
@@ -312,15 +312,10 @@ static int tape_3592_ioctl_kekl_set(struct tape_device *device,
|
|
return -ENOSYS;
|
|
return -ENOSYS;
|
|
if (!crypt_enabled(device))
|
|
if (!crypt_enabled(device))
|
|
return -EUNATCH;
|
|
return -EUNATCH;
|
|
- ext_kekls = kmalloc(sizeof(*ext_kekls), GFP_KERNEL);
|
|
|
|
- if (!ext_kekls)
|
|
|
|
- return -ENOMEM;
|
|
|
|
- if (copy_from_user(ext_kekls, (char __user *)arg, sizeof(*ext_kekls))) {
|
|
|
|
- rc = -EFAULT;
|
|
|
|
- goto out;
|
|
|
|
- }
|
|
|
|
|
|
+ ext_kekls = memdup_user((char __user *)arg, sizeof(*ext_kekls));
|
|
|
|
+ if (IS_ERR(ext_kekls))
|
|
|
|
+ return PTR_ERR(ext_kekls);
|
|
rc = tape_3592_kekl_set(device, ext_kekls);
|
|
rc = tape_3592_kekl_set(device, ext_kekls);
|
|
-out:
|
|
|
|
kfree(ext_kekls);
|
|
kfree(ext_kekls);
|
|
return rc;
|
|
return rc;
|
|
}
|
|
}
|