Thread (4 messages) 4 messages, 4 authors, 2012-05-22

Re: [PATCH] backlight: initialize struct backlight_properties properly

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2012-05-22 20:59:06
Also in: dri-devel, linux-omap, lkml, platform-driver-x86

On Mon, 21 May 2012 09:24:35 +0200
Corentin Chary [off-list ref] wrote:
quoted hunk ↗ jump to hunk
In all these files, the .power field was never correctly initialized.

...
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -342,6 +342,7 @@ int intel_panel_setup_backlight(struct drm_device *dev)
 	else
 		return -ENODEV;
 
+	memset(&props, 0, sizeof(props));
This code is all still quite fragile.  What happens if we add a new
field to backlight_properties?  We need to go edit a zillion drivers?

There are two ways of fixing this:

a) write and use

void backlight_properties_init(struct backlight_properties *props,
				int type, int max_brightness, etc);

   or

b) edit all sites to do

	struct backlight_properties bl_props = {
		.type = BACKLIGHT_RAW,
		.max_brighness = intel_panel_get_max_backlight(dev),
		.power = FB_BLANK_UNBLANK,
	};

they're largely equivalent - the struct will be zeroed out and
then certain fields will be initialised.  a) is a bit better because
some future field may not want the all-zeroes pattern (eg, a spinlock).

But they're both better than what we have now!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help