|
@@ -149,7 +149,9 @@ static int set_queue_properties_from_user(struct queue_properties *q_properties,
|
|
}
|
|
}
|
|
|
|
|
|
if ((args->ring_base_address) &&
|
|
if ((args->ring_base_address) &&
|
|
- (!access_ok(VERIFY_WRITE, args->ring_base_address, sizeof(uint64_t)))) {
|
|
|
|
|
|
+ (!access_ok(VERIFY_WRITE,
|
|
|
|
+ (const void __user *) args->ring_base_address,
|
|
|
|
+ sizeof(uint64_t)))) {
|
|
pr_err("kfd: can't access ring base address\n");
|
|
pr_err("kfd: can't access ring base address\n");
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
}
|
|
}
|
|
@@ -159,12 +161,16 @@ static int set_queue_properties_from_user(struct queue_properties *q_properties,
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
- if (!access_ok(VERIFY_WRITE, args->read_pointer_address, sizeof(uint32_t))) {
|
|
|
|
|
|
+ if (!access_ok(VERIFY_WRITE,
|
|
|
|
+ (const void __user *) args->read_pointer_address,
|
|
|
|
+ sizeof(uint32_t))) {
|
|
pr_err("kfd: can't access read pointer\n");
|
|
pr_err("kfd: can't access read pointer\n");
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
}
|
|
}
|
|
|
|
|
|
- if (!access_ok(VERIFY_WRITE, args->write_pointer_address, sizeof(uint32_t))) {
|
|
|
|
|
|
+ if (!access_ok(VERIFY_WRITE,
|
|
|
|
+ (const void __user *) args->write_pointer_address,
|
|
|
|
+ sizeof(uint32_t))) {
|
|
pr_err("kfd: can't access write pointer\n");
|
|
pr_err("kfd: can't access write pointer\n");
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
}
|
|
}
|
|
@@ -325,7 +331,9 @@ static int kfd_ioctl_update_queue(struct file *filp, struct kfd_process *p,
|
|
}
|
|
}
|
|
|
|
|
|
if ((args.ring_base_address) &&
|
|
if ((args.ring_base_address) &&
|
|
- (!access_ok(VERIFY_WRITE, args.ring_base_address, sizeof(uint64_t)))) {
|
|
|
|
|
|
+ (!access_ok(VERIFY_WRITE,
|
|
|
|
+ (const void __user *) args.ring_base_address,
|
|
|
|
+ sizeof(uint64_t)))) {
|
|
pr_err("kfd: can't access ring base address\n");
|
|
pr_err("kfd: can't access ring base address\n");
|
|
return -EFAULT;
|
|
return -EFAULT;
|
|
}
|
|
}
|