linux/drivers/hwmon
Guenter Roeck 3c2e2266a5 hwmon: (max1111) Return -ENODEV from max1111_read_channel if not instantiated
arm:pxa_defconfig can result in the following crash if the max1111 driver
is not instantiated.

Unhandled fault: page domain fault (0x01b) at 0x00000000
pgd = c0004000
[00000000] *pgd=00000000
Internal error: : 1b [#1] PREEMPT ARM
Modules linked in:
CPU: 0 PID: 300 Comm: kworker/0:1 Not tainted 4.5.0-01301-g1701f680407c #10
Hardware name: SHARP Akita
Workqueue: events sharpsl_charge_toggle
task: c390a000 ti: c391e000 task.ti: c391e000
PC is at max1111_read_channel+0x20/0x30
LR is at sharpsl_pm_pxa_read_max1111+0x2c/0x3c
pc : [<c03aaab0>]    lr : [<c0024b50>]    psr: 20000013
...
[<c03aaab0>] (max1111_read_channel) from [<c0024b50>]
					(sharpsl_pm_pxa_read_max1111+0x2c/0x3c)
[<c0024b50>] (sharpsl_pm_pxa_read_max1111) from [<c00262e0>]
					(spitzpm_read_devdata+0x5c/0xc4)
[<c00262e0>] (spitzpm_read_devdata) from [<c0024094>]
					(sharpsl_check_battery_temp+0x78/0x110)
[<c0024094>] (sharpsl_check_battery_temp) from [<c0024f9c>]
					(sharpsl_charge_toggle+0x48/0x110)
[<c0024f9c>] (sharpsl_charge_toggle) from [<c004429c>]
					(process_one_work+0x14c/0x48c)
[<c004429c>] (process_one_work) from [<c0044618>] (worker_thread+0x3c/0x5d4)
[<c0044618>] (worker_thread) from [<c004a238>] (kthread+0xd0/0xec)
[<c004a238>] (kthread) from [<c000a670>] (ret_from_fork+0x14/0x24)

This can occur because the SPI controller driver (SPI_PXA2XX) is built as
module and thus not necessarily loaded. While building SPI_PXA2XX into the
kernel would make the problem disappear, it appears prudent to ensure that
the driver is instantiated before accessing its data structures.

Cc: Arnd Bergmann <arnd@arndb.de>
Cc: stable@vger.kernel.org
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
2016-03-27 10:37:48 -07:00
..
pmbus hwmon: (adm1275) Add support for ADM1278 2016-03-05 06:36:03 -08:00
ab8500.c
abituguru3.c
abituguru.c
abx500.c
abx500.h
acpi_power_meter.c
ad7314.c
ad7414.c
ad7418.c
adc128d818.c
adcxx.c
adm1021.c
adm1025.c
adm1026.c
adm1029.c
adm1031.c
adm9240.c
ads1015.c
ads7828.c
ads7871.c
adt7x10.c
adt7x10.h
adt7310.c
adt7410.c
adt7411.c
adt7462.c
adt7470.c
adt7475.c
amc6821.c
applesmc.c
asb100.c
asc7621.c
asus_atk0110.c
atxp1.c
coretemp.c
da9052-hwmon.c
da9055-hwmon.c
dell-smm-hwmon.c
dme1737.c
ds620.c
ds1621.c
emc6w201.c
emc1403.c
emc2103.c
f71805f.c
f71882fg.c
f75375s.c
fam15h_power.c
fschmd.c
g760a.c
g762.c
gl518sm.c
gl520sm.c
gpio-fan.c
hih6130.c
hwmon-vid.c
hwmon.c
i5k_amb.c
i5500_temp.c
ibmaem.c
ibmpex.c
ibmpowernv.c
iio_hwmon.c hwmon: (iio_hwmon) Allow the driver to accept hypen in device tree node names 2016-03-05 06:25:34 -08:00
ina2xx.c
ina209.c
it87.c
jc42.c
jz4740-hwmon.c
k8temp.c
k10temp.c
Kconfig hwmon: Create an NSA320 hardware monitoring driver 2016-03-08 18:40:49 -08:00
lineage-pem.c
lm63.c
lm70.c
lm73.c
lm75.c
lm75.h
lm77.c
lm78.c
lm80.c
lm83.c
lm85.c
lm87.c
lm90.c
lm92.c
lm93.c
lm95234.c
lm95241.c
lm95245.c
ltc2945.c
ltc2990.c hwmon: Add LTC2990 sensor driver 2016-03-05 06:25:34 -08:00
ltc4151.c
ltc4215.c
ltc4222.c
ltc4245.c
ltc4260.c
ltc4261.c
Makefile hwmon: Create an NSA320 hardware monitoring driver 2016-03-08 18:40:49 -08:00
max197.c
max1111.c hwmon: (max1111) Return -ENODEV from max1111_read_channel if not instantiated 2016-03-27 10:37:48 -07:00
max1619.c
max1668.c
max6639.c
max6642.c
max6650.c
max6697.c
max16065.c
max31790.c
mc13783-adc.c
mcp3021.c
menf21bmc_hwmon.c
nct6683.c
nct6775.c
nct7802.c
nct7904.c
nsa320-hwmon.c hwmon: Create an NSA320 hardware monitoring driver 2016-03-08 18:40:49 -08:00
ntc_thermistor.c hwmon: (ntc_thermistor) Add support for ncpXXxh103 2016-03-05 06:25:34 -08:00
pc87360.c
pc87427.c
pcf8591.c
powr1220.c
pwm-fan.c
s3c-hwmon.c
sch56xx-common.c
sch56xx-common.h
sch5627.c
sch5636.c
scpi-hwmon.c
sht15.c
sht21.c
shtc1.c
sis5595.c
smm665.c
smsc47b397.c
smsc47m1.c
smsc47m192.c
tc74.c
thmc50.c
tmp102.c
tmp103.c
tmp401.c
tmp421.c
twl4030-madc-hwmon.c
ultra45_env.c
vexpress-hwmon.c hwmon: (vexpress) rename vexpress hwmon implementation 2016-03-05 06:25:33 -08:00
via686a.c
via-cputemp.c
vt1211.c
vt8231.c
w83l785ts.c
w83l786ng.c
w83627ehf.c
w83627hf.c
w83781d.c
w83791d.c
w83792d.c
w83793.c
w83795.c
wm831x-hwmon.c
wm8350-hwmon.c