mirror of
https://github.com/fail0verflow/switch-linux.git
synced 2025-05-04 02:34:21 -04:00
drm/amdgpu: fix amdgpu_bo_unreserve order in GEM_OP IOCTL v2
No copy_(to|from)_user while BO is reserved. v2: handle default path as well Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
This commit is contained in:
parent
8221d706f4
commit
4c28fb0b27
1 changed files with 4 additions and 1 deletions
|
@ -615,6 +615,7 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
|
||||||
info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT;
|
info.alignment = robj->tbo.mem.page_alignment << PAGE_SHIFT;
|
||||||
info.domains = robj->initial_domain;
|
info.domains = robj->initial_domain;
|
||||||
info.domain_flags = robj->flags;
|
info.domain_flags = robj->flags;
|
||||||
|
amdgpu_bo_unreserve(robj);
|
||||||
if (copy_to_user(out, &info, sizeof(info)))
|
if (copy_to_user(out, &info, sizeof(info)))
|
||||||
r = -EFAULT;
|
r = -EFAULT;
|
||||||
break;
|
break;
|
||||||
|
@ -622,17 +623,19 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
|
||||||
case AMDGPU_GEM_OP_SET_PLACEMENT:
|
case AMDGPU_GEM_OP_SET_PLACEMENT:
|
||||||
if (amdgpu_ttm_tt_has_userptr(robj->tbo.ttm)) {
|
if (amdgpu_ttm_tt_has_userptr(robj->tbo.ttm)) {
|
||||||
r = -EPERM;
|
r = -EPERM;
|
||||||
|
amdgpu_bo_unreserve(robj);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
robj->initial_domain = args->value & (AMDGPU_GEM_DOMAIN_VRAM |
|
robj->initial_domain = args->value & (AMDGPU_GEM_DOMAIN_VRAM |
|
||||||
AMDGPU_GEM_DOMAIN_GTT |
|
AMDGPU_GEM_DOMAIN_GTT |
|
||||||
AMDGPU_GEM_DOMAIN_CPU);
|
AMDGPU_GEM_DOMAIN_CPU);
|
||||||
|
amdgpu_bo_unreserve(robj);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
amdgpu_bo_unreserve(robj);
|
||||||
r = -EINVAL;
|
r = -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
amdgpu_bo_unreserve(robj);
|
|
||||||
out:
|
out:
|
||||||
drm_gem_object_unreference_unlocked(gobj);
|
drm_gem_object_unreference_unlocked(gobj);
|
||||||
return r;
|
return r;
|
||||||
|
|
Loading…
Add table
Reference in a new issue