[PATCH] backlight: fix oops in __mutex_lock_slowpath during head /sys/class/graphics/fb0/*
Seems like not all drivers use the framebuffer_alloc() function and won't have an initialized mutex. But those don't have a backlight, anyway. Signed-off-by: Michael Hanselmann <linux-kernel@hansmi.ch> Cc: Olaf Hering <olaf@aepfle.de> Cc: "Antonino A. Daplas" <adaplas@pol.net> Cc: Daniel R Thompson <daniel.thompson@st.com> Cc: Jon Smirl <jonsmirl@gmail.com> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Родитель
f3ef9ead31
Коммит
25981de5b8
|
@ -397,6 +397,12 @@ static ssize_t store_bl_curve(struct class_device *class_device,
|
|||
u8 tmp_curve[FB_BACKLIGHT_LEVELS];
|
||||
unsigned int i;
|
||||
|
||||
/* Some drivers don't use framebuffer_alloc(), but those also
|
||||
* don't have backlights.
|
||||
*/
|
||||
if (!fb_info || !fb_info->bl_dev)
|
||||
return -ENODEV;
|
||||
|
||||
if (count != (FB_BACKLIGHT_LEVELS / 8 * 24))
|
||||
return -EINVAL;
|
||||
|
||||
|
@ -430,6 +436,12 @@ static ssize_t show_bl_curve(struct class_device *class_device, char *buf)
|
|||
ssize_t len = 0;
|
||||
unsigned int i;
|
||||
|
||||
/* Some drivers don't use framebuffer_alloc(), but those also
|
||||
* don't have backlights.
|
||||
*/
|
||||
if (!fb_info || !fb_info->bl_dev)
|
||||
return -ENODEV;
|
||||
|
||||
mutex_lock(&fb_info->bl_mutex);
|
||||
for (i = 0; i < FB_BACKLIGHT_LEVELS; i += 8)
|
||||
len += snprintf(&buf[len], PAGE_SIZE,
|
||||
|
|
Загрузка…
Ссылка в новой задаче