From 475ac0a13dfe108b80fbb89f54414de1a07a0d25 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Sat, 31 Jan 2015 11:45:09 -0500 Subject: [PATCH] drm/msm/hdmi: fix memory leak after bridge changes 3d3f8b1f8b ("drm/bridge: make bridge registration independent of drm flow") resulted that the hdmi bridge object would be leaked at teardown. Just switch over to devm_kzalloc() as the easy way to solve this. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c index d6f8d5818e18..a7a1d8267cf0 100644 --- a/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c +++ b/drivers/gpu/drm/msm/hdmi/hdmi_bridge.c @@ -25,8 +25,6 @@ struct hdmi_bridge { void hdmi_bridge_destroy(struct drm_bridge *bridge) { - struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); - kfree(hdmi_bridge); } static void power_on(struct drm_bridge *bridge) @@ -209,7 +207,8 @@ struct drm_bridge *hdmi_bridge_init(struct hdmi *hdmi) struct hdmi_bridge *hdmi_bridge; int ret; - hdmi_bridge = kzalloc(sizeof(*hdmi_bridge), GFP_KERNEL); + hdmi_bridge = devm_kzalloc(hdmi->dev->dev, + sizeof(*hdmi_bridge), GFP_KERNEL); if (!hdmi_bridge) { ret = -ENOMEM; goto fail; @@ -220,7 +219,9 @@ struct drm_bridge *hdmi_bridge_init(struct hdmi *hdmi) bridge = &hdmi_bridge->base; bridge->funcs = &hdmi_bridge_funcs; - drm_bridge_attach(hdmi->dev, bridge); + ret = drm_bridge_attach(hdmi->dev, bridge); + if (ret) + goto fail; return bridge; -- 2.20.1