diff options
author | Alex Deucher <alexander.deucher@amd.com> | 2017-03-08 17:40:17 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-03-09 16:34:27 -0500 |
commit | 834e0f8ae4e104fa026ffe5cdee58491f3078403 (patch) | |
tree | 4cdcb49fc864bad2a1260cc279957121d7a1cee0 /drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | |
parent | c085bd5119d5d0bdf3ef591a5563566be7dedced (diff) |
drm/amdgpu: validate paramaters in the gem ioctl
Reject it if there are any invalid flags or domains.
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c index 51d759463384..106cf83c2e6b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | |||
@@ -202,6 +202,27 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data, | |||
202 | bool kernel = false; | 202 | bool kernel = false; |
203 | int r; | 203 | int r; |
204 | 204 | ||
205 | /* reject invalid gem flags */ | ||
206 | if (args->in.domain_flags & ~(AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | | ||
207 | AMDGPU_GEM_CREATE_NO_CPU_ACCESS | | ||
208 | AMDGPU_GEM_CREATE_CPU_GTT_USWC | | ||
209 | AMDGPU_GEM_CREATE_VRAM_CLEARED| | ||
210 | AMDGPU_GEM_CREATE_SHADOW | | ||
211 | AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS)) { | ||
212 | r = -EINVAL; | ||
213 | goto error_unlock; | ||
214 | } | ||
215 | /* reject invalid gem domains */ | ||
216 | if (args->in.domains & ~(AMDGPU_GEM_DOMAIN_CPU | | ||
217 | AMDGPU_GEM_DOMAIN_GTT | | ||
218 | AMDGPU_GEM_DOMAIN_VRAM | | ||
219 | AMDGPU_GEM_DOMAIN_GDS | | ||
220 | AMDGPU_GEM_DOMAIN_GWS | | ||
221 | AMDGPU_GEM_DOMAIN_OA)) { | ||
222 | r = -EINVAL; | ||
223 | goto error_unlock; | ||
224 | } | ||
225 | |||
205 | /* create a gem object to contain this object in */ | 226 | /* create a gem object to contain this object in */ |
206 | if (args->in.domains & (AMDGPU_GEM_DOMAIN_GDS | | 227 | if (args->in.domains & (AMDGPU_GEM_DOMAIN_GDS | |
207 | AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)) { | 228 | AMDGPU_GEM_DOMAIN_GWS | AMDGPU_GEM_DOMAIN_OA)) { |