On 5/20/2025 4:27 AM, Tomeu Vizoso wrote:
- version = rocket_pc_read(core, VERSION);
- version += rocket_pc_read(core, VERSION_NUM) & 0xffff;
+ version = rocket_pc_readl(core, VERSION);
+ version += rocket_pc_readl(core, VERSION_NUM) & 0xffff;
This seems weird. Feels like an eariler patch introduced a "bug" and
you are fixing it here. If so, then shouldn't the origional patch be
updated?
+static int
+rocket_copy_tasks(struct drm_device *dev,
+ struct drm_file *file_priv,
+ struct drm_rocket_job *job,
+ struct rocket_job *rjob)
+{
+ struct drm_rocket_task *tasks;
+ int ret = 0;
+ int i;
+
+ rjob->task_count = job->task_count;
+
+ if (!rjob->task_count)
+ return 0;
+
+ tasks = kvmalloc_array(rjob->task_count, sizeof(*tasks), GFP_KERNEL);
+ if (!tasks) {
+ ret = -ENOMEM;
+ drm_dbg(dev, "Failed to allocate incoming tasks\n");
+ goto fail;
+ }
+
+ if (copy_from_user(tasks,
+ (void __user *)(uintptr_t)job->tasks,
u64_to_user_ptr() ?
Same thing down in rocket_ioctl_submit_job()