diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c | 21 | 
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c index 86a0715d9431..1cafe8d83a4d 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sched.c @@ -53,9 +53,8 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,  						  int fd,  						  enum drm_sched_priority priority)  { -	struct file *filp = fcheck(fd); +	struct file *filp = fget(fd);  	struct drm_file *file; -	struct pid *pid;  	struct amdgpu_fpriv *fpriv;  	struct amdgpu_ctx *ctx;  	uint32_t id; @@ -63,20 +62,12 @@ static int amdgpu_sched_process_priority_override(struct amdgpu_device *adev,  	if (!filp)  		return -EINVAL; -	pid = get_pid(((struct drm_file *)filp->private_data)->pid); +	file = filp->private_data; +	fpriv = file->driver_priv; +	idr_for_each_entry(&fpriv->ctx_mgr.ctx_handles, ctx, id) +		amdgpu_ctx_priority_override(ctx, priority); -	mutex_lock(&adev->ddev->filelist_mutex); -	list_for_each_entry(file, &adev->ddev->filelist, lhead) { -		if (file->pid != pid) -			continue; - -		fpriv = file->driver_priv; -		idr_for_each_entry(&fpriv->ctx_mgr.ctx_handles, ctx, id) -				amdgpu_ctx_priority_override(ctx, priority); -	} -	mutex_unlock(&adev->ddev->filelist_mutex); - -	put_pid(pid); +	fput(filp);  	return 0;  }  |