eeb0751c99
Power supply subsystem creates thermal zone device for the property 'POWER_SUPPLY_PROP_TEMP' which requires thermal subsystem to be ready before 'ab8500 battery temperature monitor' driver is initialized. ab8500 btemp driver is initialized with subsys_initcall whereas thermal subsystem is initialized with fs_initcall which causes thermal_zone_device_register(...) to crash since the required structure 'thermal_class' is not initialized yet: Unable to handle kernel NULL pointer dereference at virtual address 000000a4 pgd = c0004000 [000000a4] *pgd=00000000 Internal error: Oops: 5 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 Tainted: G W (3.8.0-rc4-00001-g632fda8-dirty #1) PC is at _raw_spin_lock+0x18/0x54 LR is at get_device_parent+0x50/0x1b8 pc : [<c02f1dd0>] lr : [<c01cb248>] psr: 60000013 sp : ef04bdc8 ip : 00000000 fp : c0446180 r10: ef216e38 r9 : c03af5d0 r8 : ef275c18 r7 : 00000000 r6 : c0476c14 r5 : ef275c18 r4 : ef095840 r3 : ef04a000 r2 : 00000001 r1 : 00000000 r0 : 000000a4 Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c5787d Table: 0000404a DAC: 00000015 Process swapper/0 (pid: 1, stack limit = 0xef04a238) Stack: (0xef04bdc8 to 0xef04c000) [...] [<c02f1dd0>] (_raw_spin_lock+0x18/0x54) from [<c01cb248>] (get_device_parent+0x50/0x1b8) [<c01cb248>] (get_device_parent+0x50/0x1b8) from [<c01cb8d8>] (device_add+0xa4/0x574) [<c01cb8d8>] (device_add+0xa4/0x574) from [<c020b91c>] (thermal_zone_device_register+0x118/0x938) [<c020b91c>] (thermal_zone_device_register+0x118/0x938) from [<c0202030>] (power_supply_register+0x170/0x1f8) [<c0202030>] (power_supply_register+0x170/0x1f8) from [<c02055ec>] (ab8500_btemp_probe+0x208/0x47c) [<c02055ec>] (ab8500_btemp_probe+0x208/0x47c) from [<c01cf0dc>] (platform_drv_probe+0x14/0x18) [<c01cf0dc>] (platform_drv_probe+0x14/0x18) from [<c01cde70>] (driver_probe_device+0x74/0x20c) [<c01cde70>] (driver_probe_device+0x74/0x20c) from [<c01ce094>] (__driver_attach+0x8c/0x90) [<c01ce094>] (__driver_attach+0x8c/0x90) from [<c01cc640>] (bus_for_each_dev+0x4c/0x80) [<c01cc640>] (bus_for_each_dev+0x4c/0x80) from [<c01cd6b4>] (bus_add_driver+0x16c/0x23c) [<c01cd6b4>] (bus_add_driver+0x16c/0x23c) from [<c01ce54c>] (driver_register+0x78/0x14c) [<c01ce54c>] (driver_register+0x78/0x14c) from [<c00086ac>] (do_one_initcall+0xfc/0x164) [<c00086ac>] (do_one_initcall+0xfc/0x164) from [<c02e89c8>] (kernel_init+0x120/0x2b8) [<c02e89c8>] (kernel_init+0x120/0x2b8) from [<c000e358>] (ret_from_fork+0x14/0x3c) Code: e3c3303f e5932004 e2822001 e5832004 (e1903f9f) ---[ end trace ed9df72941b5bada ]--- Signed-off-by: Rajanikanth H.V <rajanikanth.hv@stericsson.com> Cc: stable@vger.kernel.org Signed-off-by: Anton Vorontsov <anton@enomsg.org> |
||
---|---|---|
.. | ||
avs | ||
reset | ||
88pm860x_battery.c | ||
88pm860x_charger.c | ||
ab8500_bmdata.c | ||
ab8500_btemp.c | ||
ab8500_charger.c | ||
ab8500_fg.c | ||
abx500_chargalg.c | ||
apm_power.c | ||
bq27x00_battery.c | ||
bq2415x_charger.c | ||
charger-manager.c | ||
collie_battery.c | ||
da9030_battery.c | ||
da9052-battery.c | ||
ds2760_battery.c | ||
ds2780_battery.c | ||
ds2781_battery.c | ||
ds2782_battery.c | ||
generic-adc-battery.c | ||
goldfish_battery.c | ||
gpio-charger.c | ||
intel_mid_battery.c | ||
isp1704_charger.c | ||
jz4740-battery.c | ||
Kconfig | ||
lp8727_charger.c | ||
lp8788-charger.c | ||
Makefile | ||
max8903_charger.c | ||
max8925_power.c | ||
max8997_charger.c | ||
max8998_charger.c | ||
max17040_battery.c | ||
max17042_battery.c | ||
olpc_battery.c | ||
pcf50633-charger.c | ||
pda_power.c | ||
pmu_battery.c | ||
power_supply_core.c | ||
power_supply_leds.c | ||
power_supply_sysfs.c | ||
power_supply.h | ||
rx51_battery.c | ||
s3c_adc_battery.c | ||
sbs-battery.c | ||
smb347-charger.c | ||
test_power.c | ||
tosa_battery.c | ||
twl4030_charger.c | ||
wm97xx_battery.c | ||
wm831x_backup.c | ||
wm831x_power.c | ||
wm8350_power.c | ||
z2_battery.c |