mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 14:51:51 -04:00
drm/amdgpu/userq: Do not allow userspace to trivially triger kernel warnings
Userspace can either deliberately pass in the too small num_fences, or the
required number can legitimately grow between the two calls to the userq
wait ioctl. In both cases we do not want the emit the kernel warning
backtrace since nothing is wrong with the kernel and userspace will simply
get an errno reported back. So lets simply drop the WARN_ONs.
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Fixes: a292fdecd7 ("drm/amdgpu: Implement userqueue signal/wait IOCTL")
Cc: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
68951e9c3e
commit
2c333ea579
@@ -834,7 +834,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
|
||||
|
||||
dma_resv_for_each_fence(&resv_cursor, gobj_read[i]->resv,
|
||||
DMA_RESV_USAGE_READ, fence) {
|
||||
if (WARN_ON_ONCE(num_fences >= wait_info->num_fences)) {
|
||||
if (num_fences >= wait_info->num_fences) {
|
||||
r = -EINVAL;
|
||||
goto free_fences;
|
||||
}
|
||||
@@ -851,7 +851,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
|
||||
|
||||
dma_resv_for_each_fence(&resv_cursor, gobj_write[i]->resv,
|
||||
DMA_RESV_USAGE_WRITE, fence) {
|
||||
if (WARN_ON_ONCE(num_fences >= wait_info->num_fences)) {
|
||||
if (num_fences >= wait_info->num_fences) {
|
||||
r = -EINVAL;
|
||||
goto free_fences;
|
||||
}
|
||||
@@ -875,7 +875,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
|
||||
goto free_fences;
|
||||
|
||||
dma_fence_unwrap_for_each(f, &iter, fence) {
|
||||
if (WARN_ON_ONCE(num_fences >= wait_info->num_fences)) {
|
||||
if (num_fences >= wait_info->num_fences) {
|
||||
r = -EINVAL;
|
||||
dma_fence_put(fence);
|
||||
goto free_fences;
|
||||
@@ -900,7 +900,7 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
|
||||
if (r)
|
||||
goto free_fences;
|
||||
|
||||
if (WARN_ON_ONCE(num_fences >= wait_info->num_fences)) {
|
||||
if (num_fences >= wait_info->num_fences) {
|
||||
r = -EINVAL;
|
||||
dma_fence_put(fence);
|
||||
goto free_fences;
|
||||
|
||||
Reference in New Issue
Block a user