drm/vc4: Fix a couple error codes in vc4_cl_lookup_bos()
If the allocation fails the current code returns success. If
copy_from_user() fails it returns the number of bytes remaining instead
of -EFAULT.
Fixes: d5b1a78a77
("drm/vc4: Add support for drawing 3D frames.")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
Родитель
1001354ca3
Коммит
b2cdeb19f1
|
@ -544,14 +544,15 @@ vc4_cl_lookup_bos(struct drm_device *dev,
|
||||||
|
|
||||||
handles = drm_malloc_ab(exec->bo_count, sizeof(uint32_t));
|
handles = drm_malloc_ab(exec->bo_count, sizeof(uint32_t));
|
||||||
if (!handles) {
|
if (!handles) {
|
||||||
|
ret = -ENOMEM;
|
||||||
DRM_ERROR("Failed to allocate incoming GEM handles\n");
|
DRM_ERROR("Failed to allocate incoming GEM handles\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = copy_from_user(handles,
|
if (copy_from_user(handles,
|
||||||
(void __user *)(uintptr_t)args->bo_handles,
|
(void __user *)(uintptr_t)args->bo_handles,
|
||||||
exec->bo_count * sizeof(uint32_t));
|
exec->bo_count * sizeof(uint32_t))) {
|
||||||
if (ret) {
|
ret = -EFAULT;
|
||||||
DRM_ERROR("Failed to copy in GEM handles\n");
|
DRM_ERROR("Failed to copy in GEM handles\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче