diff options
author | Ben Dooks <ben-linux@fluff.org> | 2008-11-19 15:44:02 +0000 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2008-11-19 15:54:21 +0000 |
commit | 61637968df295a062a156f97843131346d95a33d (patch) | |
tree | 9c41e0f1268c444dafad3dfcf98c0ee03130bc27 /drivers | |
parent | 1e00ce0538023c76fb13ebcba48d93543ba3dd7f (diff) |
LCD: fix oops if driver only interested in .set_power
The LCD driver core calls LCD drivers when either the blanking state
or the display mode has changed, but does not make any check to see
if the called driver has a .set_mode method.
This means if a driver only has a .set_power method then the system
will OOPS on changing mode (and with the console semaphore held so
you cannot easily see the problem).
Fix the problem by ensuring that either callback is valid before use.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/video/backlight/lcd.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/video/backlight/lcd.c b/drivers/video/backlight/lcd.c index 8e1731d3b22..680e57b616c 100644 --- a/drivers/video/backlight/lcd.c +++ b/drivers/video/backlight/lcd.c @@ -42,10 +42,13 @@ static int fb_notifier_callback(struct notifier_block *self, mutex_lock(&ld->ops_lock); if (!ld->ops->check_fb || ld->ops->check_fb(ld, evdata->info)) { - if (event == FB_EVENT_BLANK) - ld->ops->set_power(ld, *(int *)evdata->data); - else - ld->ops->set_mode(ld, evdata->data); + if (event == FB_EVENT_BLANK) { + if (ld->ops->set_power) + ld->ops->set_power(ld, *(int *)evdata->data); + } else { + if (ld->ops->set_mode) + ld->ops->set_mode(ld, evdata->data); + } } mutex_unlock(&ld->ops_lock); return 0; |