[PATCH v4 01/13] drm/atomic: Switch to krealloc_array() in drm_atomic_get_private_obj_state()

From: Maxime Ripard

Date: Fri Sep 18 2026 - 10:28:47 EST


The drm_atomic_get_private_obj_state() function manually computes the
allocation size by multiplying the element count by the element size
before passing it to krealloc().

krealloc_array() handles this multiplication internally and includes
overflow checking. Switch to it and drop the now-unused size variable.

Suggested-by: Thomas Zimmermann <tzimmermann@xxxxxxx>
Signed-off-by: Maxime Ripard <mripard@xxxxxxxxxx>
---
drivers/gpu/drm/drm_atomic.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 9bb761eda59f..aa47c647df31 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -1077,11 +1077,10 @@ EXPORT_SYMBOL(drm_atomic_private_obj_fini);
struct drm_private_state *
drm_atomic_get_private_obj_state(struct drm_atomic_commit *state,
struct drm_private_obj *obj)
{
int index, num_objs, ret;
- size_t size;
struct __drm_private_objs_state *arr;
struct drm_private_state *obj_state;

WARN_ON(!state->acquire_ctx);
drm_WARN_ON(state->dev, state->checked);
@@ -1093,12 +1092,12 @@ drm_atomic_get_private_obj_state(struct drm_atomic_commit *state,
ret = drm_modeset_lock(&obj->lock, state->acquire_ctx);
if (ret)
return ERR_PTR(ret);

num_objs = state->num_private_objs + 1;
- size = sizeof(*state->private_objs) * num_objs;
- arr = krealloc(state->private_objs, size, GFP_KERNEL);
+ arr = krealloc_array(state->private_objs, num_objs,
+ sizeof(*state->private_objs), GFP_KERNEL);
if (!arr)
return ERR_PTR(-ENOMEM);

state->private_objs = arr;
index = state->num_private_objs;

--
2.55.0