If using VM_BIND, it is invalid to attach BOs to a GEM_SUBMIT ioctl.
Only the VM_BIND ioctl should be used for binding objects.

Fixes: 2e6a8a1fe2b2 ("drm/msm: Add VM_BIND ioctl")
Reviewed-by: Dmitry Baryshkov <[email protected]>
Signed-off-by: Rob Clark <[email protected]>
---
 drivers/gpu/drm/msm/msm_gem_submit.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c 
b/drivers/gpu/drm/msm/msm_gem_submit.c
index ff6cf39587c9..b558d07ed2b6 100644
--- a/drivers/gpu/drm/msm/msm_gem_submit.c
+++ b/drivers/gpu/drm/msm/msm_gem_submit.c
@@ -272,7 +272,7 @@ static int submit_lock_objects_vmbind(struct msm_gem_submit 
*submit)
        struct drm_exec *exec = &submit->exec;
        int ret = 0;
 
-       drm_exec_init(&submit->exec, flags, submit->nr_bos);
+       drm_exec_init(&submit->exec, flags, 0);
        submit->has_exec = true;
 
        drm_exec_until_all_locked (&submit->exec) {
@@ -589,6 +589,9 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
                        return -EINVAL;
        }
 
+       if (msm_context_is_vmbind(ctx) && args->nr_bos)
+               return UERR(EINVAL, dev, "invalid nr_bos, must be zero for 
VM_BIND contexts");
+
        queue = msm_submitqueue_get(ctx, args->queueid);
        if (!queue)
                return -ENOENT;
-- 
2.56.0

Reply via email to