]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob
7653bb260d13fd21a4eb5c652ff9dfabc22f98ac
[thirdparty/kernel/stable-queue.git] /
1 From 7695fb04aca62e2d8a7ca6ede50f6211e1d71e53 Mon Sep 17 00:00:00 2001
2 From: Darren Salt <linux@youmustbejoking.demon.co.uk>
3 Date: Sat, 7 Feb 2009 01:02:07 -0500
4 Subject: eeepc-laptop: fix oops when changing backlight brightness during eeepc-laptop init
5
6 From: Darren Salt <linux@youmustbejoking.demon.co.uk>
7
8 commit 7695fb04aca62e2d8a7ca6ede50f6211e1d71e53 upstream.
9
10 I got the following oops while changing the backlight brightness during
11 startup. When it happens, it prevents use of the hotkeys, Fn-Fx, and the
12 lid button.
13
14 It's a clear use-before-init, as I verified by testing with an
15 appropriately-placed "else printk".
16
17 BUG: unable to handle kernel NULL pointer dereference at 00000000
18 *pde = 00000000
19 Oops: 0002 [#1] PREEMPT SMP
20 Pid: 160, comm: kacpi_notify Not tainted (2.6.28.1-eee901 #4) 901
21 EIP: 0060:[<c0264e68>] [<c0264e68>] eeepc_hotk_notify+26/da
22 EFLAGS: 00010246 CPU: 1
23 Using defaults from ksymoops -t elf32-i386 -a i386
24 EAX: 00000009 EBX: 00000000 ECX: 00000009 EDX: f70dbf64
25 ESI: 00000029 EDI: f7335188 EBP: c02112c9 ESP: f70dbf80
26 DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
27 f70731e0 f73acd50 c02164ac f7335180 f70aa040 c02112e6 f733518c c012b62f
28 f70aa044 f70aa040 c012bdba f70aa04c 00000000 c012be6e 00000000 f70bdf80
29 c012e198 f70dbfc4 f70dbfc4 f70aa040 c012bdba 00000000 c012e0c9 c012e091
30 Call Trace:
31 [<c02164ac>] ? acpi_ev_notify_dispatch+4c/55
32 [<c02112e6>] ? acpi_os_execute_deferred+1d/25
33 [<c012b62f>] ? run_workqueue+71/f1
34 [<c012bdba>] ? worker_thread+0/bf
35 [<c012be6e>] ? worker_thread+b4/bf
36 [<c012e198>] ? autoremove_wake_function+0/2b
37 [<c012bdba>] ? worker_thread+0/bf
38 [<c012e0c9>] ? kthread+38/5f
39 [<c012e091>] ? kthread+0/5f
40 [<c0103abf>] ? kernel_thread_helper+7/10
41 Code: 00 00 00 00 c3 83 3d 60 5c 50 c0 00 56 89 d6 53 0f 84 c4 00 00 00 8d 42
42 e0 83 f8 0f 77 0f 8b 1d 68 5c 50 c0 89 d8 e8 a9 fa ff ff <89> 03 8b 1d 60 5c
43 50 c0 89 f2 83 e2 7f 0f b7 4c 53 10 8d 41 01
44
45 Signed-off-by: Darren Salt <linux@youmustbejoking.demon.co.uk>
46 Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
47 Signed-off-by: Len Brown <len.brown@intel.com>
48 Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
49
50 ---
51 drivers/misc/eeepc-laptop.c | 3 ++-
52 1 file changed, 2 insertions(+), 1 deletion(-)
53
54 --- a/drivers/misc/eeepc-laptop.c
55 +++ b/drivers/misc/eeepc-laptop.c
56 @@ -510,7 +510,8 @@ static int eeepc_hotk_check(void)
57 static void notify_brn(void)
58 {
59 struct backlight_device *bd = eeepc_backlight_device;
60 - bd->props.brightness = read_brightness(bd);
61 + if (bd)
62 + bd->props.brightness = read_brightness(bd);
63 }
64
65 static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data)