linux/drivers/mfd
Arnd Bergmann 287980e49f remove lots of IS_ERR_VALUE abuses
Most users of IS_ERR_VALUE() in the kernel are wrong, as they
pass an 'int' into a function that takes an 'unsigned long'
argument. This happens to work because the type is sign-extended
on 64-bit architectures before it gets converted into an
unsigned type.

However, anything that passes an 'unsigned short' or 'unsigned int'
argument into IS_ERR_VALUE() is guaranteed to be broken, as are
8-bit integers and types that are wider than 'unsigned long'.

Andrzej Hajda has already fixed a lot of the worst abusers that
were causing actual bugs, but it would be nice to prevent any
users that are not passing 'unsigned long' arguments.

This patch changes all users of IS_ERR_VALUE() that I could find
on 32-bit ARM randconfig builds and x86 allmodconfig. For the
moment, this doesn't change the definition of IS_ERR_VALUE()
because there are probably still architecture specific users
elsewhere.

Almost all the warnings I got are for files that are better off
using 'if (err)' or 'if (err < 0)'.
The only legitimate user I could find that we get a warning for
is the (32-bit only) freescale fman driver, so I did not remove
the IS_ERR_VALUE() there but changed the type to 'unsigned long'.
For 9pfs, I just worked around one user whose calling conventions
are so obscure that I did not dare change the behavior.

I was using this definition for testing:

 #define IS_ERR_VALUE(x) ((unsigned long*)NULL == (typeof (x)*)NULL && \
       unlikely((unsigned long long)(x) >= (unsigned long long)(typeof(x))-MAX_ERRNO))

which ends up making all 16-bit or wider types work correctly with
the most plausible interpretation of what IS_ERR_VALUE() was supposed
to return according to its users, but also causes a compile-time
warning for any users that do not pass an 'unsigned long' argument.

I suggested this approach earlier this year, but back then we ended
up deciding to just fix the users that are obviously broken. After
the initial warning that caused me to get involved in the discussion
(fs/gfs2/dir.c) showed up again in the mainline kernel, Linus
asked me to send the whole thing again.

[ Updated the 9p parts as per Al Viro  - Linus ]

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Andrzej Hajda <a.hajda@samsung.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: https://lkml.org/lkml/2016/1/7/363
Link: https://lkml.org/lkml/2016/5/27/486
Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> # For nvmem part
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-05-27 15:26:11 -07:00
..
88pm80x.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
88pm800.c
88pm805.c
88pm860x-core.c mfd: 88pm860x-core: Fix commenting and declaration spacing 2016-01-14 08:43:51 +00:00
88pm860x-i2c.c
aat2870-core.c mfd: aat2870-core: Remove unnecessary 'out of memory' message 2016-01-14 08:43:52 +00:00
ab3100-core.c mfd: ab3100-core.c: Fix multiple warnings reported by Checkpatch 2016-01-14 08:43:53 +00:00
ab3100-otp.c mfd: ab2100-otp: Remove pointless 'out of memory' error message 2016-01-14 08:43:53 +00:00
ab8500-core.c mfd: ab8500-core: Fix many warnings reported by Checkpatch 2016-01-14 08:43:54 +00:00
ab8500-debugfs.c mfd: ab8500-debugfs: Trivial fix of spelling mistake on "between" 2016-05-09 16:26:15 +01:00
ab8500-gpadc.c mfd: ab8500-gpadc: Squash a whole bunch of Checkpatch warnings and one error 2016-01-14 08:43:56 +00:00
ab8500-sysctrl.c mfd: ab8500-sysctrl: Fix Constify, printk => pr_info and formatting issues 2016-01-14 08:43:56 +00:00
abx500-core.c
act8945a.c mfd: act8945a: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:54:40 +01:00
adp5520.c mfd: adp5520: Some trivial 'no space before tab' fixes 2016-01-14 08:43:57 +00:00
arizona-core.c mfd: arizona: Update device ordering to allow clean driver removal 2016-05-09 08:20:37 +01:00
arizona-i2c.c mfd: arizona-i2c: Add blank line formatting after declaration 2016-01-14 08:43:58 +00:00
arizona-irq.c mfd: arizona: Fix lockdep recursion warning on set_irq_wake 2016-04-19 07:54:00 +01:00
arizona-spi.c mfd: arizona: Support Cirrus Logic CS47L24 and WM1831 2015-12-04 08:46:39 +00:00
arizona.h mfd: arizona: Support Cirrus Logic CS47L24 and WM1831 2015-12-04 08:46:39 +00:00
as3711.c mfd: as3711: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:54:50 +01:00
as3722.c mfd: as3722: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 08:24:46 +01:00
asic3.c mfd: asic3: Use gpiochip data pointer 2016-04-19 07:58:06 +01:00
atmel-flexcom.c mfd: atmel-flexcom: Add a driver for Atmel Flexible Serial Communication Unit 2015-10-30 17:19:49 +00:00
atmel-hlcdc.c mfd: atmel-hlcdc: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:54:58 +01:00
axp20x-i2c.c mfd: axp20x: Split the driver into core and i2c bits 2016-02-12 08:53:03 +00:00
axp20x-rsb.c mfd: axp20x: Add support for AXP809 PMIC 2016-04-19 07:54:08 +01:00
axp20x.c mfd: axp20x: Add a cell for the ac power_supply part of the axp20x PMICs 2016-05-09 15:41:14 +01:00
bcm590xx.c mfd: bcm590xx: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:05 +01:00
cros_ec_i2c.c mfd: cros_ec_i2c: Fix trivial 'tabs before spaces' whitespace issue. 2016-01-14 08:44:01 +00:00
cros_ec_spi.c mfd: cros_ec_spi: Repair comparison ordering issue 2016-01-14 08:44:01 +00:00
cros_ec.c
cs47l24-tables.c mfd: cs47l24: Fix defaults array based on testing 2016-03-16 08:50:22 +00:00
cs5535-mfd.c mfd: cs5535-mfd: Add missing line spacing and make local array static 2016-01-14 08:44:02 +00:00
da903x.c mfd: da903x: Fix white space and split string issues 2016-01-14 08:44:03 +00:00
da9052-core.c mfd: da9053: Addition of extra registers for GPIOs 8-13 2015-10-30 17:19:49 +00:00
da9052-i2c.c mfd: da9052-i2c: Fix tabbing/whitespace issue 2016-01-14 08:44:03 +00:00
da9052-irq.c mfd: da9052-irq: Fix trivial 'space before comma' error 2016-01-14 08:44:04 +00:00
da9052-spi.c - New Device Support 2015-11-06 10:23:50 -08:00
da9055-core.c
da9055-i2c.c
da9062-core.c mfd: da9062: Fix missing volatile registers in the core regmap_range volatile lists 2016-03-16 08:50:27 +00:00
da9063-core.c
da9063-i2c.c mfd: da9063: Fix missing volatile registers in the core regmap_range volatile lists 2016-03-16 08:50:31 +00:00
da9063-irq.c mfd: da9063: Remove unused struct da9063_irq_data and define EVENTS_BUF_LEN 2016-04-19 07:53:42 +01:00
da9150-core.c mfd: da9150: Use DEFINE_RES_IRQ_NAMED() help macro for IRQ resource 2015-10-13 11:28:36 +01:00
davinci_voicecodec.c mfd: davinci_voicecodec: Remove pointless 'out of memory' error message 2016-01-14 08:44:05 +00:00
db8500-prcmu.c - New Drivers 2016-03-18 10:15:11 -07:00
dbx500-prcmu-regs.h
dln2.c
dm355evm_msp.c mfd: Use IS_ENABLED(CONFIG_FOO) instead of checking FOO || FOO_MODULE 2016-05-09 08:23:56 +01:00
ezx-pcap.c Merge remote-tracking branches 'spi/topic/omap-100k', 'spi/topic/omap-uwire', 'spi/topic/owner', 'spi/topic/pxa' and 'spi/topic/pxa2xx' into spi-next 2015-11-04 11:02:12 +00:00
fsl-imx25-tsadc.c mfd: fsl-imx25-tsadc: Register touchscreen ADC driver 2016-02-11 15:40:41 +00:00
hi655x-pmic.c mfd: hi655x: Add MFD driver for hi655x 2016-05-18 08:25:26 +01:00
hi6421-pmic-core.c mfd: hi6421-pmic: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:15 +01:00
htc-egpio.c mfd: htc-egpio: Use gpiochip data pointer 2016-04-19 07:58:23 +01:00
htc-i2cpld.c mfd: htc-i2cpld: Use gpiochip data pointer 2016-04-19 07:58:30 +01:00
htc-pasic3.c
intel_msic.c
intel_quark_i2c_gpio.c - New Drivers 2016-05-20 11:10:24 -07:00
intel_soc_pmic_bxtwc.c mfd: intel_soc_pmic_bxtwc: 64 bit bug in bxtwc_val_store() 2015-10-30 17:19:47 +00:00
intel_soc_pmic_core.c mfd: intel_soc_pmic_core: Terminate panel control GPIO lookup table correctly 2016-05-09 13:27:40 +01:00
intel_soc_pmic_core.h
intel_soc_pmic_crc.c
intel-lpss-acpi.c device property: don't bother the drivers with struct property_set 2016-04-09 03:10:50 +02:00
intel-lpss-pci.c device property: don't bother the drivers with struct property_set 2016-04-09 03:10:50 +02:00
intel-lpss.c - New Drivers 2016-05-20 11:10:24 -07:00
intel-lpss.h device property: don't bother the drivers with struct property_set 2016-04-09 03:10:50 +02:00
ipaq-micro.c mfd: ipaq-micro: Use __maybe_unused to hide pm functions 2016-03-16 08:50:41 +00:00
janz-cmodio.c
jz4740-adc.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
Kconfig mfd: hi655x: Add MFD driver for hi655x 2016-05-18 08:25:26 +01:00
kempld-core.c mfd: kempld-core: Simplify function return logic 2015-10-30 17:19:43 +00:00
lm3533-core.c mfd: lm3533: Fix unused variable build warning 2015-10-30 17:19:52 +00:00
lm3533-ctrlbank.c
lp3943.c mfd: lp3943: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:23 +01:00
lp8788-irq.c mfd: lp8788-irq: Uninitialized variable in irq handler 2016-04-11 13:31:40 +01:00
lp8788.c
lpc_ich.c mfd: lpc_ich: Intel device IDs for PCH 2015-11-24 11:10:46 +00:00
lpc_sch.c
Makefile mfd: hi655x: Add MFD driver for hi655x 2016-05-18 08:25:26 +01:00
max8907.c
max8925-core.c
max8925-i2c.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
max8997-irq.c
max8997.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
max8998-irq.c
max8998.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
max14577.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
max77620.c mfd: max77620: Add core driver for MAX77620/MAX20024 2016-05-09 15:42:00 +01:00
max77686.c mfd: max77686: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:20 +01:00
max77693.c mfd: max77686/max77693: Fix misspelled Samsung address 2016-04-19 07:59:14 +01:00
max77843.c mfd: Use to_i2c_client() instead of open-coding it 2016-01-14 08:43:50 +00:00
mc13xxx-core.c mfd: mc13xxx-core: Use of_property_read_bool() 2015-12-04 08:45:54 +00:00
mc13xxx-i2c.c
mc13xxx-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
mc13xxx.h
mcp-core.c
mcp-sa11x0.c
menelaus.c gpio: Include linux/gpio.h instead of asm/gpio.h 2016-02-16 00:20:03 +01:00
menf21bmc.c mfd: menf21bmc: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:30 +01:00
mfd-core.c - New Drivers 2016-05-20 11:10:24 -07:00
mt6397-core.c mfd: mt6397: IRQ domain should initialize before mfd_add_devices() 2016-05-09 08:20:22 +01:00
omap-usb-host.c
omap-usb-tll.c mfd: omap-usb-tll: Fix scheduling while atomic BUG 2016-05-09 15:41:48 +01:00
omap-usb.h
palmas.c
pcf50633-adc.c
pcf50633-core.c
pcf50633-gpio.c
pcf50633-irq.c mfd: pcf50633: Remove unneded ret variable 2015-10-30 17:19:42 +00:00
pm8921-core.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
qcom_rpm.c mfd: qcom_rpm: Fix a possible NULL dereference 2015-12-04 08:46:23 +00:00
qcom-spmi-pmic.c mfd: qcom-spmi-pmic: Don't access non-existing registers 2016-01-11 06:23:32 +00:00
rc5t583-irq.c mfd: rc5t583: Use devm_mfd_add_devices and devm_request_threaded_irq 2016-05-09 13:27:38 +01:00
rc5t583.c mfd: rc5t583: Use devm_mfd_add_devices and devm_request_threaded_irq 2016-05-09 13:27:38 +01:00
rdc321x-southbridge.c mfd: rdc321x: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:52 +01:00
retu-mfd.c
rk808.c mfd: rk808: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:55:59 +01:00
rn5t618.c mfd: rn5t618: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:06 +01:00
rt5033.c mfd: rt5033: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:17 +01:00
rtl8411.c
rts5209.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rts5227.c mfd: rtsx: Add support for rts522A 2015-10-30 17:19:51 +00:00
rts5229.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rts5249.c mfd: rtsx: Simplify function return logic 2015-10-30 17:19:44 +00:00
rtsx_pcr.c mfd: avoid newly introduced compiler warning 2015-11-06 10:47:12 -08:00
rtsx_pcr.h mfd: rtsx: Add support for rts522A 2015-10-30 17:19:51 +00:00
rtsx_usb.c
sec-core.c mfd: sec: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:38 +01:00
sec-irq.c mfd: sec: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:38 +01:00
si476x-cmd.c
si476x-i2c.c
si476x-prop.c
sky81452.c mfd: sky81452: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:28 +01:00
sm501.c mfd: sm501: Use gpiochip data pointer 2016-04-19 07:58:37 +01:00
smsc-ece1099.c mfd: smsc-ece1099: Remove unnecessarily remove callback 2016-05-09 08:24:01 +01:00
ssbi.c
sta2x11-mfd.c mfd: sta2x11: Use platform_register/unregister_drivers() 2016-01-11 06:23:38 +00:00
stmpe-i2c.c - New Device Support 2015-09-04 11:35:03 -07:00
stmpe-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
stmpe.c mfd: stmpe: Add the proper PWM resources 2016-03-16 08:50:37 +00:00
stmpe.h
stw481x.c mfd: stw481x: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:35 +01:00
sun6i-prcm.c
syscon.c mfd: syscon: Make syscon_regmap_config const 2016-03-16 08:50:18 +00:00
t7l66xb.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
tc3589x.c
tc6387xb.c
tc6393xb.c mfd: tc6393xb: Use gpiochip data pointer 2016-04-19 07:58:44 +01:00
ti_am335x_tscadc.c
timberdale.c [media] include/media: move platform_data to linux/platform_data/media 2015-11-17 06:58:42 -02:00
timberdale.h
tmio_core.c
tps6105x.c mfd: tps6105x: Remove linux/regulator/driver.h include 2016-05-09 08:21:11 +01:00
tps6507x.c mfd: tps6507x: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:42 +01:00
tps6586x.c
tps65010.c mfd: tps65010: Use gpiochip data pointer 2016-04-19 07:58:51 +01:00
tps65086.c mfd: tps65086: Add driver for the TPS65086 PMIC 2016-03-16 08:50:15 +00:00
tps65090.c mfd: tps65090: Set regmap config reg counts properly 2016-03-16 08:50:36 +00:00
tps65217.c mfd: tps65217: Use devm_mfd_add_devices() for mfd_device registration 2016-04-19 07:56:49 +01:00
tps65218.c
tps65910.c mfd: tps65910: Use devm_mfd_add_devices and devm_regmap_add_irq_chip 2016-05-09 13:27:39 +01:00
tps65911-comparator.c
tps65912-core.c mfd: tps65912: Add driver for the TPS65912 PMIC 2016-02-11 16:30:59 +00:00
tps65912-i2c.c mfd: tps65912: Add driver for the TPS65912 PMIC 2016-02-11 16:30:59 +00:00
tps65912-spi.c mfd: tps65912: Add driver for the TPS65912 PMIC 2016-02-11 16:30:59 +00:00
tps80031.c
twl4030-audio.c
twl4030-irq.c remove lots of IS_ERR_VALUE abuses 2016-05-27 15:26:11 -07:00
twl4030-power.c mfd: twl4030-power: Remove driver path in file comment 2016-05-09 08:24:41 +01:00
twl6030-irq.c
twl6040.c mfd: twl6040: Disable and unprepare clk32k in twl6040_power() error path 2016-05-09 08:23:52 +01:00
twl-core.c
twl-core.h
ucb1x00-assabet.c
ucb1x00-core.c mfd: ucb1x00: Use gpiochip data pointer 2016-04-19 07:59:00 +01:00
ucb1x00-ts.c
ucb1400_core.c
vexpress-sysreg.c mfd: vexpress-sysreg: Switch to gpiochip_add_data() 2016-04-19 07:59:06 +01:00
viperboard.c
vx855.c
wl1273-core.c mfd: wl1273-core: Use devm_mfd_add_devices() for mfd_device registration 2016-05-09 13:27:39 +01:00
wm831x-auxadc.c
wm831x-core.c mfd: wm831x: Fix possible NULL pointer dereference 2015-10-26 14:49:04 +00:00
wm831x-i2c.c
wm831x-irq.c
wm831x-otp.c mfd: wm831x: Fix broken wm831x_unique_id_show 2016-01-11 06:23:21 +00:00
wm831x-spi.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
wm5102-tables.c mfd: wm5102: Fix defaults array based on testing 2016-03-16 08:50:21 +00:00
wm5110-tables.c mfd: wm5110: ARIZONA_CLOCK_CONTROL should be volatile 2016-05-09 15:41:35 +01:00
wm8350-core.c
wm8350-gpio.c
wm8350-i2c.c
wm8350-irq.c
wm8350-regmap.c
wm8400-core.c mfd: Use IS_ENABLED(CONFIG_FOO) instead of checking FOO || FOO_MODULE 2016-05-09 08:23:56 +01:00
wm8994-core.c sound updates for 4.3-rc1 2015-09-04 11:46:02 -07:00
wm8994-irq.c
wm8994-regmap.c
wm8994.h
wm8997-tables.c sound updates for 4.3-rc1 2015-09-04 11:46:02 -07:00
wm8998-tables.c mfd: wm8998: Fix defaults array based on testing 2016-03-16 08:50:22 +00:00