Use a flexible array member to combine allocations.

Signed-off-by: Rosen Penev <[email protected]>
---
 drivers/gpu/drm/mediatek/mtk_crtc.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_crtc.c 
b/drivers/gpu/drm/mediatek/mtk_crtc.c
index fcb16f3f7b23..914841d2396e 100644
--- a/drivers/gpu/drm/mediatek/mtk_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_crtc.c
@@ -62,7 +62,6 @@ struct mtk_crtc {
        struct device                   *dma_dev;
        struct mtk_mutex                *mutex;
        unsigned int                    ddp_comp_nr;
-       struct mtk_ddp_comp             **ddp_comp;
        unsigned int                    num_conn_routes;
        const struct mtk_drm_route      *conn_routes;
 
@@ -71,6 +70,8 @@ struct mtk_crtc {
        bool                            config_updating;
        /* lock for config_updating to cmd buffer */
        spinlock_t                      config_lock;
+
+       struct mtk_ddp_comp             *ddp_comp[];
 };
 
 struct mtk_crtc_state {
@@ -1048,18 +1049,12 @@ int mtk_crtc_create(struct drm_device *drm_dev, const 
unsigned int *path,
                }
        }
 
-       mtk_crtc = devm_kzalloc(dev, sizeof(*mtk_crtc), GFP_KERNEL);
+       mtk_crtc = devm_kzalloc(dev, struct_size(mtk_crtc, ddp_comp, path_len + 
(conn_routes ? 1 : 0)), GFP_KERNEL);
        if (!mtk_crtc)
                return -ENOMEM;
 
-       mtk_crtc->mmsys_dev = priv->mmsys_dev;
        mtk_crtc->ddp_comp_nr = path_len;
-       mtk_crtc->ddp_comp = devm_kcalloc(dev,
-                                         mtk_crtc->ddp_comp_nr + (conn_routes 
? 1 : 0),
-                                         sizeof(*mtk_crtc->ddp_comp),
-                                         GFP_KERNEL);
-       if (!mtk_crtc->ddp_comp)
-               return -ENOMEM;
+       mtk_crtc->mmsys_dev = priv->mmsys_dev;
 
        mtk_crtc->mutex = mtk_mutex_get(priv->mutex_dev);
        if (IS_ERR(mtk_crtc->mutex)) {
-- 
2.53.0

Reply via email to