]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/gma500: Free the correct connector allocation
authorPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Tue, 22 Mar 2022 13:17:40 +0000 (14:17 +0100)
committerPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Wed, 23 Mar 2022 10:20:45 +0000 (11:20 +0100)
The allocation is made for the gma_connector object so we must use the
same address when free()ing the object.

Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20220322131742.11566-5-patrik.r.jakobsson@gmail.com
drivers/gpu/drm/gma500/cdv_intel_crt.c
drivers/gpu/drm/gma500/cdv_intel_dp.c
drivers/gpu/drm/gma500/cdv_intel_hdmi.c
drivers/gpu/drm/gma500/cdv_intel_lvds.c
drivers/gpu/drm/gma500/psb_intel_lvds.c
drivers/gpu/drm/gma500/psb_intel_sdvo.c

index 1ae0fbbda0ebeba45088feb1093e36836a769fbb..6bcd18c63c3129a196d71e5623c6f78208396d67 100644 (file)
@@ -191,11 +191,12 @@ static enum drm_connector_status cdv_intel_crt_detect(
 
 static void cdv_intel_crt_destroy(struct drm_connector *connector)
 {
+       struct gma_connector *gma_connector = to_gma_connector(connector);
        struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
 
        psb_intel_i2c_destroy(gma_encoder->ddc_bus);
        drm_connector_cleanup(connector);
-       kfree(connector);
+       kfree(gma_connector);
 }
 
 static int cdv_intel_crt_get_modes(struct drm_connector *connector)
index 3fba9d4e785d278ed8066f39d51b6868381b7929..72b1b2fc3c2716dd14e8436d8d702ea46b5368e9 100644 (file)
@@ -1857,6 +1857,7 @@ done:
 static void
 cdv_intel_dp_destroy(struct drm_connector *connector)
 {
+       struct gma_connector *gma_connector = to_gma_connector(connector);
        struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
        struct cdv_intel_dp *intel_dp = gma_encoder->dev_priv;
 
@@ -1867,7 +1868,7 @@ cdv_intel_dp_destroy(struct drm_connector *connector)
        }
        i2c_del_adapter(&intel_dp->adapter);
        drm_connector_cleanup(connector);
-       kfree(connector);
+       kfree(gma_connector);
 }
 
 static const struct drm_encoder_helper_funcs cdv_intel_dp_helper_funcs = {
index e0d4c49b3c92b7b113139eec62dd56e397af68ae..8987e555e1131e0e1bc4bdafcf6307d16f7ec960 100644 (file)
@@ -242,11 +242,12 @@ static enum drm_mode_status cdv_hdmi_mode_valid(struct drm_connector *connector,
 
 static void cdv_hdmi_destroy(struct drm_connector *connector)
 {
+       struct gma_connector *gma_connector = to_gma_connector(connector);
        struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
 
        psb_intel_i2c_destroy(gma_encoder->i2c_bus);
        drm_connector_cleanup(connector);
-       kfree(connector);
+       kfree(gma_connector);
 }
 
 static const struct drm_encoder_helper_funcs cdv_hdmi_helper_funcs = {
index 851a3cc4653e71d3a0a1d5133f4f509316d1bb7e..98d9f5483a7c1f03faa5971380e01d589aee7337 100644 (file)
@@ -326,11 +326,12 @@ static int cdv_intel_lvds_get_modes(struct drm_connector *connector)
  */
 static void cdv_intel_lvds_destroy(struct drm_connector *connector)
 {
+       struct gma_connector *gma_connector = to_gma_connector(connector);
        struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
 
        psb_intel_i2c_destroy(gma_encoder->i2c_bus);
        drm_connector_cleanup(connector);
-       kfree(connector);
+       kfree(gma_connector);
 }
 
 static int cdv_intel_lvds_set_property(struct drm_connector *connector,
index ec8f0b504cccdf0c1006cf2beccca4524ea6ce89..cad00380b3866b144ae7a48a9d43be007d12f383 100644 (file)
@@ -521,12 +521,13 @@ static int psb_intel_lvds_get_modes(struct drm_connector *connector)
  */
 void psb_intel_lvds_destroy(struct drm_connector *connector)
 {
+       struct gma_connector *gma_connector = to_gma_connector(connector);
        struct gma_encoder *gma_encoder = gma_attached_encoder(connector);
        struct psb_intel_lvds_priv *lvds_priv = gma_encoder->dev_priv;
 
        psb_intel_i2c_destroy(lvds_priv->ddc_bus);
        drm_connector_cleanup(connector);
-       kfree(connector);
+       kfree(gma_connector);
 }
 
 int psb_intel_lvds_set_property(struct drm_connector *connector,
index 5b72a759a1824e8ddf72e189b2a4ad369720ab7d..a85aace25548c6d47236011bdb6c2430191b3659 100644 (file)
@@ -1542,8 +1542,10 @@ static int psb_intel_sdvo_get_modes(struct drm_connector *connector)
 
 static void psb_intel_sdvo_destroy(struct drm_connector *connector)
 {
+       struct gma_connector *gma_connector = to_gma_connector(connector);
+
        drm_connector_cleanup(connector);
-       kfree(connector);
+       kfree(gma_connector);
 }
 
 static bool psb_intel_sdvo_detect_hdmi_audio(struct drm_connector *connector)