diff options
author | Rob Clark <robdclark@gmail.com> | 2015-01-31 11:45:09 -0500 |
---|---|---|
committer | Rob Clark <robdclark@gmail.com> | 2015-02-01 15:23:35 -0500 |
commit | 475ac0a13dfe108b80fbb89f54414de1a07a0d25 (patch) | |
tree | 73d7b0938b463a87f9acd5bc39a4fe9d3e121f93 | |
parent | 0b776d457b9476e96a65d4daace8d8f668e010d4 (diff) |
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 <robdclark@gmail.com>
-rw-r--r-- | drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 9 |
1 files 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 { | |||
25 | 25 | ||
26 | void hdmi_bridge_destroy(struct drm_bridge *bridge) | 26 | void hdmi_bridge_destroy(struct drm_bridge *bridge) |
27 | { | 27 | { |
28 | struct hdmi_bridge *hdmi_bridge = to_hdmi_bridge(bridge); | ||
29 | kfree(hdmi_bridge); | ||
30 | } | 28 | } |
31 | 29 | ||
32 | static void power_on(struct drm_bridge *bridge) | 30 | static void power_on(struct drm_bridge *bridge) |
@@ -209,7 +207,8 @@ struct drm_bridge *hdmi_bridge_init(struct hdmi *hdmi) | |||
209 | struct hdmi_bridge *hdmi_bridge; | 207 | struct hdmi_bridge *hdmi_bridge; |
210 | int ret; | 208 | int ret; |
211 | 209 | ||
212 | hdmi_bridge = kzalloc(sizeof(*hdmi_bridge), GFP_KERNEL); | 210 | hdmi_bridge = devm_kzalloc(hdmi->dev->dev, |
211 | sizeof(*hdmi_bridge), GFP_KERNEL); | ||
213 | if (!hdmi_bridge) { | 212 | if (!hdmi_bridge) { |
214 | ret = -ENOMEM; | 213 | ret = -ENOMEM; |
215 | goto fail; | 214 | goto fail; |
@@ -220,7 +219,9 @@ struct drm_bridge *hdmi_bridge_init(struct hdmi *hdmi) | |||
220 | bridge = &hdmi_bridge->base; | 219 | bridge = &hdmi_bridge->base; |
221 | bridge->funcs = &hdmi_bridge_funcs; | 220 | bridge->funcs = &hdmi_bridge_funcs; |
222 | 221 | ||
223 | drm_bridge_attach(hdmi->dev, bridge); | 222 | ret = drm_bridge_attach(hdmi->dev, bridge); |
223 | if (ret) | ||
224 | goto fail; | ||
224 | 225 | ||
225 | return bridge; | 226 | return bridge; |
226 | 227 | ||