Commit 79341eb7 authored by Rob Clark's avatar Rob Clark

drm/msm: Return ERR_PTR() from submit_create()

In the next patch, we start having more than a single potential failure
reason.
Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
Link: https://lore.kernel.org/r/20210728010632.2633470-9-robdclark@gmail.comSigned-off-by: default avatarRob Clark <robdclark@chromium.org>
parent a61acbbe
...@@ -32,30 +32,27 @@ static struct msm_gem_submit *submit_create(struct drm_device *dev, ...@@ -32,30 +32,27 @@ static struct msm_gem_submit *submit_create(struct drm_device *dev,
uint32_t nr_cmds) uint32_t nr_cmds)
{ {
struct msm_gem_submit *submit; struct msm_gem_submit *submit;
uint64_t sz = struct_size(submit, bos, nr_bos) + uint64_t sz;
((u64)nr_cmds * sizeof(submit->cmd[0]));
sz = struct_size(submit, bos, nr_bos) +
((u64)nr_cmds * sizeof(submit->cmd[0]));
if (sz > SIZE_MAX) if (sz > SIZE_MAX)
return NULL; return ERR_PTR(-ENOMEM);
submit = kmalloc(sz, GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY); submit = kzalloc(sz, GFP_KERNEL | __GFP_NOWARN | __GFP_NORETRY);
if (!submit) if (!submit)
return NULL; return ERR_PTR(-ENOMEM);
kref_init(&submit->ref); kref_init(&submit->ref);
submit->dev = dev; submit->dev = dev;
submit->aspace = queue->ctx->aspace; submit->aspace = queue->ctx->aspace;
submit->gpu = gpu; submit->gpu = gpu;
submit->fence = NULL;
submit->cmd = (void *)&submit->bos[nr_bos]; submit->cmd = (void *)&submit->bos[nr_bos];
submit->queue = queue; submit->queue = queue;
submit->ring = gpu->rb[queue->prio]; submit->ring = gpu->rb[queue->prio];
submit->fault_dumped = false; submit->fault_dumped = false;
/* initially, until copy_from_user() and bo lookup succeeds: */
submit->nr_bos = 0;
submit->nr_cmds = 0;
INIT_LIST_HEAD(&submit->node); INIT_LIST_HEAD(&submit->node);
INIT_LIST_HEAD(&submit->bo_list); INIT_LIST_HEAD(&submit->bo_list);
...@@ -799,8 +796,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data, ...@@ -799,8 +796,8 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
submit = submit_create(dev, gpu, queue, args->nr_bos, submit = submit_create(dev, gpu, queue, args->nr_bos,
args->nr_cmds); args->nr_cmds);
if (!submit) { if (IS_ERR(submit)) {
ret = -ENOMEM; ret = PTR_ERR(submit);
goto out_unlock; goto out_unlock;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment