mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
drm/msm/gem: Demote userspace errors to DRM_UT_DRIVER
[ Upstream commit b2acb89af1a400be721bcb14f137aa22b509caba ] Error messages resulting from incorrect usage of the kernel uabi should not spam dmesg by default. But it is useful to enable them to debug userspace. So demote to DRM_UT_DRIVER. Signed-off-by: Rob Clark <robdclark@chromium.org> Patchwork: https://patchwork.freedesktop.org/patch/564189/ Stable-dep-of: 3a47f4b439be ("drm/msm/gem: prevent integer overflow in msm_ioctl_gem_submit()") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
f8d9cc3321
commit
c620a776d7
@@ -226,9 +226,9 @@ static struct page **msm_gem_pin_pages_locked(struct drm_gem_object *obj,
|
||||
|
||||
msm_gem_assert_locked(obj);
|
||||
|
||||
if (GEM_WARN_ON(msm_obj->madv > madv)) {
|
||||
DRM_DEV_ERROR(obj->dev->dev, "Invalid madv state: %u vs %u\n",
|
||||
msm_obj->madv, madv);
|
||||
if (msm_obj->madv > madv) {
|
||||
DRM_DEV_DEBUG_DRIVER(obj->dev->dev, "Invalid madv state: %u vs %u\n",
|
||||
msm_obj->madv, madv);
|
||||
return ERR_PTR(-EBUSY);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,6 +17,12 @@
|
||||
#include "msm_gem.h"
|
||||
#include "msm_gpu_trace.h"
|
||||
|
||||
/* For userspace errors, use DRM_UT_DRIVER.. so that userspace can enable
|
||||
* error msgs for debugging, but we don't spam dmesg by default
|
||||
*/
|
||||
#define SUBMIT_ERROR(submit, fmt, ...) \
|
||||
DRM_DEV_DEBUG_DRIVER((submit)->dev->dev, fmt, ##__VA_ARGS__)
|
||||
|
||||
/*
|
||||
* Cmdstream submission:
|
||||
*/
|
||||
@@ -136,7 +142,7 @@ static int submit_lookup_objects(struct msm_gem_submit *submit,
|
||||
|
||||
if ((submit_bo.flags & ~MSM_SUBMIT_BO_FLAGS) ||
|
||||
!(submit_bo.flags & MANDATORY_FLAGS)) {
|
||||
DRM_ERROR("invalid flags: %x\n", submit_bo.flags);
|
||||
SUBMIT_ERROR(submit, "invalid flags: %x\n", submit_bo.flags);
|
||||
ret = -EINVAL;
|
||||
i = 0;
|
||||
goto out;
|
||||
@@ -158,7 +164,7 @@ static int submit_lookup_objects(struct msm_gem_submit *submit,
|
||||
*/
|
||||
obj = idr_find(&file->object_idr, submit->bos[i].handle);
|
||||
if (!obj) {
|
||||
DRM_ERROR("invalid handle %u at index %u\n", submit->bos[i].handle, i);
|
||||
SUBMIT_ERROR(submit, "invalid handle %u at index %u\n", submit->bos[i].handle, i);
|
||||
ret = -EINVAL;
|
||||
goto out_unlock;
|
||||
}
|
||||
@@ -202,13 +208,13 @@ static int submit_lookup_cmds(struct msm_gem_submit *submit,
|
||||
case MSM_SUBMIT_CMD_CTX_RESTORE_BUF:
|
||||
break;
|
||||
default:
|
||||
DRM_ERROR("invalid type: %08x\n", submit_cmd.type);
|
||||
SUBMIT_ERROR(submit, "invalid type: %08x\n", submit_cmd.type);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (submit_cmd.size % 4) {
|
||||
DRM_ERROR("non-aligned cmdstream buffer size: %u\n",
|
||||
submit_cmd.size);
|
||||
SUBMIT_ERROR(submit, "non-aligned cmdstream buffer size: %u\n",
|
||||
submit_cmd.size);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -306,8 +312,8 @@ retry:
|
||||
|
||||
fail:
|
||||
if (ret == -EALREADY) {
|
||||
DRM_ERROR("handle %u at index %u already on submit list\n",
|
||||
submit->bos[i].handle, i);
|
||||
SUBMIT_ERROR(submit, "handle %u at index %u already on submit list\n",
|
||||
submit->bos[i].handle, i);
|
||||
ret = -EINVAL;
|
||||
}
|
||||
|
||||
@@ -448,8 +454,8 @@ static int submit_bo(struct msm_gem_submit *submit, uint32_t idx,
|
||||
struct drm_gem_object **obj, uint64_t *iova, bool *valid)
|
||||
{
|
||||
if (idx >= submit->nr_bos) {
|
||||
DRM_ERROR("invalid buffer index: %u (out of %u)\n",
|
||||
idx, submit->nr_bos);
|
||||
SUBMIT_ERROR(submit, "invalid buffer index: %u (out of %u)\n",
|
||||
idx, submit->nr_bos);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -475,7 +481,7 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
|
||||
return 0;
|
||||
|
||||
if (offset % 4) {
|
||||
DRM_ERROR("non-aligned cmdstream buffer: %u\n", offset);
|
||||
SUBMIT_ERROR(submit, "non-aligned cmdstream buffer: %u\n", offset);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -497,8 +503,8 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
|
||||
bool valid;
|
||||
|
||||
if (submit_reloc.submit_offset % 4) {
|
||||
DRM_ERROR("non-aligned reloc offset: %u\n",
|
||||
submit_reloc.submit_offset);
|
||||
SUBMIT_ERROR(submit, "non-aligned reloc offset: %u\n",
|
||||
submit_reloc.submit_offset);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -508,7 +514,7 @@ static int submit_reloc(struct msm_gem_submit *submit, struct drm_gem_object *ob
|
||||
|
||||
if ((off >= (obj->size / 4)) ||
|
||||
(off < last_offset)) {
|
||||
DRM_ERROR("invalid offset %u at reloc %u\n", off, i);
|
||||
SUBMIT_ERROR(submit, "invalid offset %u at reloc %u\n", off, i);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -881,7 +887,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
|
||||
if (!submit->cmd[i].size ||
|
||||
((submit->cmd[i].size + submit->cmd[i].offset) >
|
||||
obj->size / 4)) {
|
||||
DRM_ERROR("invalid cmdstream size: %u\n", submit->cmd[i].size * 4);
|
||||
SUBMIT_ERROR(submit, "invalid cmdstream size: %u\n", submit->cmd[i].size * 4);
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
@@ -893,7 +899,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
|
||||
|
||||
if (!gpu->allow_relocs) {
|
||||
if (submit->cmd[i].nr_relocs) {
|
||||
DRM_ERROR("relocs not allowed\n");
|
||||
SUBMIT_ERROR(submit, "relocs not allowed\n");
|
||||
ret = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user