Use devm_kzalloc to create configuration data structure. This allows us
to remove corresponding kfree and drop mdp5_cfg_destroy() function.

Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
 drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c | 24 +++++-------------------
 drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h |  1 -
 drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c |  2 --
 3 files changed, 5 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c 
b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
index 694d54341337..c5179e4c393c 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.c
@@ -1350,23 +1350,17 @@ int mdp5_cfg_get_hw_rev(struct mdp5_cfg_handler 
*cfg_handler)
        return cfg_handler->revision;
 }
 
-void mdp5_cfg_destroy(struct mdp5_cfg_handler *cfg_handler)
-{
-       kfree(cfg_handler);
-}
-
 struct mdp5_cfg_handler *mdp5_cfg_init(struct mdp5_kms *mdp5_kms,
                uint32_t major, uint32_t minor)
 {
        struct drm_device *dev = mdp5_kms->dev;
        struct mdp5_cfg_handler *cfg_handler;
        const struct mdp5_cfg_handler *cfg_handlers;
-       int i, ret = 0, num_handlers;
+       int i, num_handlers;
 
-       cfg_handler = kzalloc(sizeof(*cfg_handler), GFP_KERNEL);
+       cfg_handler = devm_kzalloc(dev->dev, sizeof(*cfg_handler), GFP_KERNEL);
        if (unlikely(!cfg_handler)) {
-               ret = -ENOMEM;
-               goto fail;
+               return ERR_PTR(-ENOMEM);
        }
 
        switch (major) {
@@ -1381,8 +1375,7 @@ struct mdp5_cfg_handler *mdp5_cfg_init(struct mdp5_kms 
*mdp5_kms,
        default:
                DRM_DEV_ERROR(dev->dev, "unexpected MDP major version: 
v%d.%d\n",
                                major, minor);
-               ret = -ENXIO;
-               goto fail;
+               return ERR_PTR(-ENXIO);
        }
 
        /* only after mdp5_cfg global pointer's init can we access the hw */
@@ -1396,8 +1389,7 @@ struct mdp5_cfg_handler *mdp5_cfg_init(struct mdp5_kms 
*mdp5_kms,
        if (unlikely(!mdp5_cfg)) {
                DRM_DEV_ERROR(dev->dev, "unexpected MDP minor revision: 
v%d.%d\n",
                                major, minor);
-               ret = -ENXIO;
-               goto fail;
+               return ERR_PTR(-ENXIO);
        }
 
        cfg_handler->revision = minor;
@@ -1406,10 +1398,4 @@ struct mdp5_cfg_handler *mdp5_cfg_init(struct mdp5_kms 
*mdp5_kms,
        DBG("MDP5: %s hw config selected", mdp5_cfg->name);
 
        return cfg_handler;
-
-fail:
-       if (cfg_handler)
-               mdp5_cfg_destroy(cfg_handler);
-
-       return ERR_PTR(ret);
 }
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h 
b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h
index c2502cc33864..26c5d8b4ab46 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_cfg.h
@@ -121,6 +121,5 @@ int mdp5_cfg_get_hw_rev(struct mdp5_cfg_handler *cfg_hnd);
 
 struct mdp5_cfg_handler *mdp5_cfg_init(struct mdp5_kms *mdp5_kms,
                uint32_t major, uint32_t minor);
-void mdp5_cfg_destroy(struct mdp5_cfg_handler *cfg_hnd);
 
 #endif /* __MDP5_CFG_H__ */
diff --git a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c 
b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
index 52f176e08690..828634206185 100644
--- a/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c
@@ -629,8 +629,6 @@ static void mdp5_destroy(struct mdp5_kms *mdp5_kms)
                mdp5_ctlm_destroy(mdp5_kms->ctlm);
        if (mdp5_kms->smp)
                mdp5_smp_destroy(mdp5_kms->smp);
-       if (mdp5_kms->cfg)
-               mdp5_cfg_destroy(mdp5_kms->cfg);
 
        for (i = 0; i < mdp5_kms->num_intfs; i++)
                kfree(mdp5_kms->intfs[i]);
-- 
2.39.2

Reply via email to