[Intel-gfx] [PATCH 5/7] drm/i915/sdvo: Check for allocation failure when constructing properties

Chris Wilson chris at chris-wilson.co.uk
Mon Jul 19 15:25:46 CEST 2010


Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_sdvo.c |   40 +++++++++++++++++++++++++++++++++++-
 1 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index a30d751..d5f1b27 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -1685,8 +1685,8 @@ static int intel_sdvo_get_modes(struct drm_connector *connector)
 	return !list_empty(&connector->probed_modes);
 }
 
-static
-void intel_sdvo_destroy_enhance_property(struct drm_connector *connector)
+static void
+intel_sdvo_destroy_enhance_property(struct drm_connector *connector)
 {
 	struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector);
 	struct drm_device *dev = connector->dev;
@@ -2102,6 +2102,7 @@ intel_sdvo_tv_init(struct intel_sdvo *intel_sdvo, int type)
         return true;
 
 err:
+	intel_sdvo_destroy_enhance_property(connector);
 	kfree(intel_sdvo_connector);
 	return false;
 }
@@ -2176,6 +2177,7 @@ intel_sdvo_lvds_init(struct intel_sdvo *intel_sdvo, int device)
 	return true;
 
 err:
+	intel_sdvo_destroy_enhance_property(connector);
 	kfree(intel_sdvo_connector);
 	return false;
 }
@@ -2267,6 +2269,8 @@ static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
 	intel_sdvo_connector->tv_format_property =
 			drm_property_create(dev, DRM_MODE_PROP_ENUM,
 					    "mode", intel_sdvo_connector->format_supported_num);
+	if (!intel_sdvo_connector->tv_format_property)
+		return false;
 
 	for (i = 0; i < intel_sdvo_connector->format_supported_num; i++)
 		drm_property_add_enum(
@@ -2319,14 +2323,21 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->left_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"left_margin", 2);
+			if (!intel_sdvo_connector->left_property)
+				return false;
+
 			intel_sdvo_connector->left_property->values[0] = 0;
 			intel_sdvo_connector->left_property->values[1] = data_value[0];
 			drm_connector_attach_property(connector,
 						intel_sdvo_connector->left_property,
 						intel_sdvo_connector->left_margin);
+
 			intel_sdvo_connector->right_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"right_margin", 2);
+			if (!intel_sdvo_connector->right_property)
+				return false;
+
 			intel_sdvo_connector->right_property->values[0] = 0;
 			intel_sdvo_connector->right_property->values[1] = data_value[0];
 			drm_connector_attach_property(connector,
@@ -2353,14 +2364,21 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->top_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"top_margin", 2);
+			if (!intel_sdvo_connector->top_property)
+				return false;
+
 			intel_sdvo_connector->top_property->values[0] = 0;
 			intel_sdvo_connector->top_property->values[1] = data_value[0];
 			drm_connector_attach_property(connector,
 						intel_sdvo_connector->top_property,
 						intel_sdvo_connector->top_margin);
+
 			intel_sdvo_connector->bottom_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"bottom_margin", 2);
+			if (!intel_sdvo_connector->bottom_property)
+				return false;
+
 			intel_sdvo_connector->bottom_property->values[0] = 0;
 			intel_sdvo_connector->bottom_property->values[1] = data_value[0];
 			drm_connector_attach_property(connector,
@@ -2386,6 +2404,9 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->hpos_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"hpos", 2);
+			if (!intel_sdvo_connector->hpos_property)
+				return false;
+
 			intel_sdvo_connector->hpos_property->values[0] = 0;
 			intel_sdvo_connector->hpos_property->values[1] = data_value[0];
 			drm_connector_attach_property(connector,
@@ -2411,6 +2432,9 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->vpos_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"vpos", 2);
+			if (!intel_sdvo_connector->vpos_property)
+				return false;
+
 			intel_sdvo_connector->vpos_property->values[0] = 0;
 			intel_sdvo_connector->vpos_property->values[1] = data_value[0];
 			drm_connector_attach_property(connector,
@@ -2436,6 +2460,9 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->saturation_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"saturation", 2);
+			if (!intel_sdvo_connector->saturation_property)
+				return false;
+
 			intel_sdvo_connector->saturation_property->values[0] = 0;
 			intel_sdvo_connector->saturation_property->values[1] =
 							data_value[0];
@@ -2460,6 +2487,9 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->contrast_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"contrast", 2);
+			if (!intel_sdvo_connector->contrast_property)
+				return false;
+
 			intel_sdvo_connector->contrast_property->values[0] = 0;
 			intel_sdvo_connector->contrast_property->values[1] = data_value[0];
 			drm_connector_attach_property(connector,
@@ -2483,6 +2513,9 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->hue_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"hue", 2);
+			if (!intel_sdvo_connector->hue_property)
+				return false;
+
 			intel_sdvo_connector->hue_property->values[0] = 0;
 			intel_sdvo_connector->hue_property->values[1] =
 							data_value[0];
@@ -2508,6 +2541,9 @@ static bool intel_sdvo_create_enhance_property(struct intel_sdvo *intel_sdvo,
 			intel_sdvo_connector->brightness_property =
 				drm_property_create(dev, DRM_MODE_PROP_RANGE,
 						"brightness", 2);
+			if (!intel_sdvo_connector->brightness_property)
+				return false;
+
 			intel_sdvo_connector->brightness_property->values[0] = 0;
 			intel_sdvo_connector->brightness_property->values[1] =
 							data_value[0];
-- 
1.7.1




More information about the Intel-gfx mailing list