aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_crtc.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2014-12-10 19:12:57 -0500
committerDave Airlie <airlied@redhat.com>2014-12-10 19:12:57 -0500
commitda9df2f41057d71102668f5ac6b3fc998118a59b (patch)
tree8061b865d05043cf25263040ef86d4f54549ce25 /drivers/gpu/drm/drm_crtc.c
parentd1b8792b636f83804add26ec1ac90a686be19e49 (diff)
parenta18c0af171bfb875012da26f23df051004726973 (diff)
Merge tag 'topic/core-stuff-2014-12-10' of git://anongit.freedesktop.org/drm-intel into drm-next
Merge drm core fixes from Daniel. * tag 'topic/core-stuff-2014-12-10' of git://anongit.freedesktop.org/drm-intel: drm: Zero out DRM object memory upon cleanup drm: fix a typo in a comment drm: fix a word repetition in a comment drm: Fix memory leak at error path of drm_read() drm/Documentation: Fix rowspan value in drm-kms-properties drm/edid: Restore kerneldoc consistency drm/edid: new drm_edid_block_checksum helper function V3 drm/edid: shorten log output in case of all zeroes edid block drm/edid: move drm_edid_is_zero to top, make edid argument const
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
-rw-r--r--drivers/gpu/drm/drm_crtc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 4a44f894f631..5213da499d39 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -725,6 +725,8 @@ void drm_crtc_cleanup(struct drm_crtc *crtc)
725 WARN_ON(crtc->state && !crtc->funcs->atomic_destroy_state); 725 WARN_ON(crtc->state && !crtc->funcs->atomic_destroy_state);
726 if (crtc->state && crtc->funcs->atomic_destroy_state) 726 if (crtc->state && crtc->funcs->atomic_destroy_state)
727 crtc->funcs->atomic_destroy_state(crtc, crtc->state); 727 crtc->funcs->atomic_destroy_state(crtc, crtc->state);
728
729 memset(crtc, 0, sizeof(*crtc));
728} 730}
729EXPORT_SYMBOL(drm_crtc_cleanup); 731EXPORT_SYMBOL(drm_crtc_cleanup);
730 732
@@ -932,6 +934,8 @@ void drm_connector_cleanup(struct drm_connector *connector)
932 if (connector->state && connector->funcs->atomic_destroy_state) 934 if (connector->state && connector->funcs->atomic_destroy_state)
933 connector->funcs->atomic_destroy_state(connector, 935 connector->funcs->atomic_destroy_state(connector,
934 connector->state); 936 connector->state);
937
938 memset(connector, 0, sizeof(*connector));
935} 939}
936EXPORT_SYMBOL(drm_connector_cleanup); 940EXPORT_SYMBOL(drm_connector_cleanup);
937 941
@@ -1073,6 +1077,8 @@ void drm_bridge_cleanup(struct drm_bridge *bridge)
1073 list_del(&bridge->head); 1077 list_del(&bridge->head);
1074 dev->mode_config.num_bridge--; 1078 dev->mode_config.num_bridge--;
1075 drm_modeset_unlock_all(dev); 1079 drm_modeset_unlock_all(dev);
1080
1081 memset(bridge, 0, sizeof(*bridge));
1076} 1082}
1077EXPORT_SYMBOL(drm_bridge_cleanup); 1083EXPORT_SYMBOL(drm_bridge_cleanup);
1078 1084
@@ -1139,10 +1145,11 @@ void drm_encoder_cleanup(struct drm_encoder *encoder)
1139 drm_modeset_lock_all(dev); 1145 drm_modeset_lock_all(dev);
1140 drm_mode_object_put(dev, &encoder->base); 1146 drm_mode_object_put(dev, &encoder->base);
1141 kfree(encoder->name); 1147 kfree(encoder->name);
1142 encoder->name = NULL;
1143 list_del(&encoder->head); 1148 list_del(&encoder->head);
1144 dev->mode_config.num_encoder--; 1149 dev->mode_config.num_encoder--;
1145 drm_modeset_unlock_all(dev); 1150 drm_modeset_unlock_all(dev);
1151
1152 memset(encoder, 0, sizeof(*encoder));
1146} 1153}
1147EXPORT_SYMBOL(drm_encoder_cleanup); 1154EXPORT_SYMBOL(drm_encoder_cleanup);
1148 1155
@@ -1262,6 +1269,8 @@ void drm_plane_cleanup(struct drm_plane *plane)
1262 WARN_ON(plane->state && !plane->funcs->atomic_destroy_state); 1269 WARN_ON(plane->state && !plane->funcs->atomic_destroy_state);
1263 if (plane->state && plane->funcs->atomic_destroy_state) 1270 if (plane->state && plane->funcs->atomic_destroy_state)
1264 plane->funcs->atomic_destroy_state(plane, plane->state); 1271 plane->funcs->atomic_destroy_state(plane, plane->state);
1272
1273 memset(plane, 0, sizeof(*plane));
1265} 1274}
1266EXPORT_SYMBOL(drm_plane_cleanup); 1275EXPORT_SYMBOL(drm_plane_cleanup);
1267 1276
@@ -3454,7 +3463,7 @@ void drm_fb_release(struct drm_file *priv)
3454 3463
3455 /* 3464 /*
3456 * When the file gets released that means no one else can access the fb 3465 * When the file gets released that means no one else can access the fb
3457 * list any more, so no need to grab fpriv->fbs_lock. And we need to to 3466 * list any more, so no need to grab fpriv->fbs_lock. And we need to
3458 * avoid upsetting lockdep since the universal cursor code adds a 3467 * avoid upsetting lockdep since the universal cursor code adds a
3459 * framebuffer while holding mutex locks. 3468 * framebuffer while holding mutex locks.
3460 * 3469 *