linux/drivers/acpi
Ingo Molnar 48d3d8263c revert "ACPI: drivers/acpi: elide a non-zero test on a result that is never 0"
Revert commit 1192aeb957 ("ACPI:
drivers/acpi: elide a non-zero test on a result that is never 0")
because it turns out that thermal_cooling_device_register() does
actually return NULL if CONFIG_THERMAL is turned off (then the routine
turns into a dummy inline routine in the header files that returns NULL
unconditionally).

This was found with randconfig testing, causing a crash during bootup:

  initcall 0x78878534 ran for 13 msecs: acpi_button_init+0x0/0x51()
  Calling initcall 0x78878585: acpi_fan_init+0x0/0x2c()
  BUG: unable to handle kernel NULL pointer dereference at 00000000
  IP: [<782b8ad0>] acpi_fan_add+0x7d/0xfd
  *pde = 00000000
  Oops: 0000 [#1]
  Modules linked in:

  Pid: 1, comm: swapper Not tainted (2.6.25-rc7-sched-devel.git-x86-latest.git #14)
  EIP: 0060:[<782b8ad0>] EFLAGS: 00010246 CPU: 0
  EIP is at acpi_fan_add+0x7d/0xfd
  EAX: b787c718 EBX: b787c400 ECX: b782ceb4 EDX: 00000007
  ESI: 00000000 EDI: b787c6f4 EBP: b782cee0 ESP: b782cecc
   DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
  Process swapper (pid: 1, ti=b782c000 task=b7846000 task.ti=b782c000)
  Stack: b787c459 00000000 b787c400 78790888 b787c60c b782cef8 782b6fb8 ffffffda
         b787c60c 00000000 78790958 b782cf0c 783005d7 b787c60c 78790958 78790584
         b782cf1c 783007f6 b782cf28 00000000 b782cf40 782ffc4a 78790958 b794d558
  Call Trace:
   [<782b6fb8>] ? acpi_device_probe+0x3e/0xdb
   [<783005d7>] ? driver_probe_device+0x82/0xfc
   [<783007f6>] ? __driver_attach+0x3a/0x70
   [<782ffc4a>] ? bus_for_each_dev+0x3e/0x60
   [<7830048c>] ? driver_attach+0x14/0x16
   [<783007bc>] ? __driver_attach+0x0/0x70
   [<7830006a>] ? bus_add_driver+0x9d/0x1b0
   [<783008c3>] ? driver_register+0x47/0xa3
   [<7813db00>] ? timespec_to_ktime+0x9/0xc
   [<782b7331>] ? acpi_bus_register_driver+0x3a/0x3c
   [<78878592>] ? acpi_fan_init+0xd/0x2c
   [<78863656>] ? kernel_init+0xac/0x1f9
   [<788635aa>] ? kernel_init+0x0/0x1f9
   [<78114563>] ? kernel_thread_helper+0x7/0x10
   =======================
  Code: 6e 78 e8 57 44 e7 ff 58 e9 93 00 00 00 8b 55 f0 8d bb f4 02 00 00 80 4b 2d 10 8b 03 e8 87 cb ff ff 8d 83 18 03 00 00 80 63 2d ef <ff> 35 00 00 00 00 50 68 e8 9c 6e 78 e8 22 44 e7 ff b9 b6 9c 6e
  EIP: [<782b8ad0>] acpi_fan_add+0x7d/0xfd SS:ESP 0068:b782cecc
  ---[ end trace 778e504de7e3b1e3 ]---
  Kernel panic - not syncing: Attempted to kill init!

Signed-off-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-03-28 10:16:53 -07:00
..
dispatcher ACPI: track opregion names to avoid driver resource conflicts. 2008-02-07 00:59:18 -05:00
events Merge branches 'release' and 'stats' into release 2008-02-07 03:13:36 -05:00
executer ACPI: fix build warning 2008-02-21 02:01:30 -05:00
hardware ACPI suspend: Execute _WAK with the right argument 2008-02-14 00:28:05 -05:00
namespace
parser
resources
sleep ACPI: replace remaining __FUNCTION__ occurrences 2008-03-11 01:58:41 -04:00
tables Merge branches 'release', 'bugzilla-6217', 'bugzilla-6629', 'bugzilla-6933', 'bugzilla-7186', 'bugzilla-8269', 'bugzilla-8570', 'bugzilla-9139', 'bugzilla-9277', 'bugzilla-9341', 'bugzilla-9444', 'bugzilla-9614', 'bugzilla-9643' and 'bugzilla-9644' into release 2008-02-07 03:09:43 -05:00
utilities Merge branches 'release', 'button-sysfs', 'misc', 'mismatch', 'randconfig' and 'toshiba' into release 2008-03-13 01:59:49 -04:00
ac.c
acpi_memhotplug.c
asus_acpi.c asus_acpi: remove misleading mask 2008-03-18 02:31:34 -04:00
battery.c ACPI: battery: Don't return -EFAIL on broken packages. 2008-03-17 22:37:42 -04:00
bay.c Merge branches 'release' and 'fluff' into release 2008-02-07 03:38:22 -05:00
blacklist.c ACPI: DMI: quirk for FSC ESPRIMO Mobile V5505 2008-02-14 02:43:39 -05:00
bus.c ACPI: replace remaining __FUNCTION__ occurrences 2008-03-11 01:58:41 -04:00
button.c ACPI: button: make real parent for input devices in device tree 2008-03-11 13:38:49 -04:00
cm_sbs.c
container.c
debug.c
dock.c ACPI: Set flag DOCK_UNDOCKING when triggered via sysfs 2008-03-18 05:16:38 -04:00
ec.c Revert "ACPI: EC: Handle IRQ storm on Acer laptops" 2008-03-18 21:32:24 -07:00
event.c ACPI: static acpi_chain_head 2008-02-14 01:04:18 -05:00
fan.c revert "ACPI: drivers/acpi: elide a non-zero test on a result that is never 0" 2008-03-28 10:16:53 -07:00
glue.c ACPI: misc cleanups 2008-02-07 03:33:23 -05:00
Kconfig ACPI: Remove ACPI_CUSTOM_DSDT_INITRD option 2008-03-15 11:58:04 -07:00
Makefile ACPI: SBS: Host controller must initialize before SBS. 2008-02-09 03:22:13 -05:00
numa.c ACPI: misc cleanups 2008-02-07 03:33:23 -05:00
osl.c ACPI: Remove ACPI_CUSTOM_DSDT_INITRD option 2008-03-15 11:58:04 -07:00
pci_bind.c ACPI: misc cleanups 2008-02-07 03:33:23 -05:00
pci_irq.c ACPI: fix Medion _PRT quirk (use "ISA_", not "ISA") 2008-03-25 15:21:30 -07:00
pci_link.c ACPI: misc cleanups 2008-02-07 03:33:23 -05:00
pci_root.c ACPI: fix section mismatch in acpi_pci_root_add 2008-02-21 02:56:32 -05:00
power.c ACPI: remove duplicated warning message 2008-02-07 00:49:28 -05:00
processor_core.c revert "ACPI: drivers/acpi: elide a non-zero test on a result that is never 0" 2008-03-28 10:16:53 -07:00
processor_idle.c cpuidle: fix 100% C0 statistics regression 2008-03-26 00:58:19 -04:00
processor_perflib.c ACPI: cpufreq: Print _PPC changes via cpufreq debug layer 2008-02-07 14:47:40 -05:00
processor_thermal.c
processor_throttling.c
sbs.c ACPI: SBS: Host controller must initialize before SBS. 2008-02-09 03:22:13 -05:00
sbshc.c ACPI: SBS: remove typo from sbchc.c 2008-03-18 05:13:14 -04:00
sbshc.h
scan.c ACPI: fix a regression of ACPI device driver autoloading 2008-03-25 22:48:37 -04:00
system.c ACPI: buffer array too short in drivers/acpi/system.c 2008-03-12 17:57:22 -04:00
tables.c
thermal.c ACPI: thermal: show temperature in millidegree Celsius 2008-03-13 01:49:11 -04:00
toshiba_acpi.c toshiba_acpi: Enable autoloading 2008-03-11 13:35:08 -04:00
utils.c ACPICA: Warn if packages with invalid references are evaluated 2008-03-11 23:57:20 -04:00
video.c revert "ACPI: drivers/acpi: elide a non-zero test on a result that is never 0" 2008-03-28 10:16:53 -07:00
wmi.c ACPI: WMI: Clean up handling of spec violating data blocks 2008-03-11 17:59:05 -04:00