aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/samsung/mali/common/mali_gp_job.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/samsung/mali/common/mali_gp_job.c')
-rw-r--r--drivers/media/video/samsung/mali/common/mali_gp_job.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/drivers/media/video/samsung/mali/common/mali_gp_job.c b/drivers/media/video/samsung/mali/common/mali_gp_job.c
index abe1d93..2e445d6 100644
--- a/drivers/media/video/samsung/mali/common/mali_gp_job.c
+++ b/drivers/media/video/samsung/mali/common/mali_gp_job.c
@@ -13,29 +13,27 @@
#include "mali_osk_list.h"
#include "mali_uk_types.h"
-struct mali_gp_job *mali_gp_job_create(struct mali_session_data *session, _mali_uk_gp_start_job_s *args, u32 id)
+struct mali_gp_job *mali_gp_job_create(struct mali_session_data *session, _mali_uk_gp_start_job_s *uargs, u32 id)
{
struct mali_gp_job *job;
job = _mali_osk_malloc(sizeof(struct mali_gp_job));
if (NULL != job)
{
+ if (0 != copy_from_user(&job->uargs, uargs, sizeof(_mali_uk_gp_start_job_s)))
+ {
+ _mali_osk_free(job);
+ return NULL;
+ }
+
_mali_osk_list_init(&job->list);
job->session = session;
job->id = id;
- job->user_id = args->user_job_ptr;
- _mali_osk_memcpy(job->frame_registers, args->frame_registers, sizeof(job->frame_registers));
- job->heap_current_addr = args->frame_registers[4];
- job->perf_counter_flag = args->perf_counter_flag;
- job->perf_counter_src0 = args->perf_counter_src0;
- job->perf_counter_src1 = args->perf_counter_src1;
+ job->heap_current_addr = job->uargs.frame_registers[4];
job->perf_counter_value0 = 0;
job->perf_counter_value1 = 0;
-
job->pid = _mali_osk_get_pid();
job->tid = _mali_osk_get_tid();
- job->frame_builder_id = args->frame_builder_id;
- job->flush_id = args->flush_id;
return job;
}