diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gem_submit.c')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gem_submit.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c index b89ca5174863..eb4bb8b2f3a5 100644 --- a/drivers/gpu/drm/msm/msm_gem_submit.c +++ b/drivers/gpu/drm/msm/msm_gem_submit.c | |||
@@ -40,12 +40,14 @@ static struct msm_gem_submit *submit_create(struct drm_device *dev, | |||
40 | 40 | ||
41 | submit->dev = dev; | 41 | submit->dev = dev; |
42 | submit->gpu = gpu; | 42 | submit->gpu = gpu; |
43 | submit->fence = NULL; | ||
43 | submit->pid = get_pid(task_pid(current)); | 44 | submit->pid = get_pid(task_pid(current)); |
44 | 45 | ||
45 | /* initially, until copy_from_user() and bo lookup succeeds: */ | 46 | /* initially, until copy_from_user() and bo lookup succeeds: */ |
46 | submit->nr_bos = 0; | 47 | submit->nr_bos = 0; |
47 | submit->nr_cmds = 0; | 48 | submit->nr_cmds = 0; |
48 | 49 | ||
50 | INIT_LIST_HEAD(&submit->node); | ||
49 | INIT_LIST_HEAD(&submit->bo_list); | 51 | INIT_LIST_HEAD(&submit->bo_list); |
50 | ww_acquire_init(&submit->ticket, &reservation_ww_class); | 52 | ww_acquire_init(&submit->ticket, &reservation_ww_class); |
51 | 53 | ||
@@ -75,6 +77,11 @@ static int submit_lookup_objects(struct msm_gem_submit *submit, | |||
75 | void __user *userptr = | 77 | void __user *userptr = |
76 | u64_to_user_ptr(args->bos + (i * sizeof(submit_bo))); | 78 | u64_to_user_ptr(args->bos + (i * sizeof(submit_bo))); |
77 | 79 | ||
80 | /* make sure we don't have garbage flags, in case we hit | ||
81 | * error path before flags is initialized: | ||
82 | */ | ||
83 | submit->bos[i].flags = 0; | ||
84 | |||
78 | ret = copy_from_user(&submit_bo, userptr, sizeof(submit_bo)); | 85 | ret = copy_from_user(&submit_bo, userptr, sizeof(submit_bo)); |
79 | if (ret) { | 86 | if (ret) { |
80 | ret = -EFAULT; | 87 | ret = -EFAULT; |