linux/drivers/extcon
Dan Carpenter 58e4a2d27d extcon: Fix extcon_get_extcon_dev() error handling
The extcon_get_extcon_dev() function returns error pointers on error,
NULL when it's a -EPROBE_DEFER defer situation, and ERR_PTR(-ENODEV)
when the CONFIG_EXTCON option is disabled.  This is very complicated for
the callers to handle and a number of them had bugs that would lead to
an Oops.

In real life, there are two things which prevented crashes.  First,
error pointers would only be returned if there was bug in the caller
where they passed a NULL "extcon_name" and none of them do that.
Second, only two out of the eight drivers will build when CONFIG_EXTCON
is disabled.

The normal way to write this would be to return -EPROBE_DEFER directly
when appropriate and return NULL when CONFIG_EXTCON is disabled.  Then
the error handling is simple and just looks like:

	dev->edev = extcon_get_extcon_dev(acpi_dev_name(adev));
	if (IS_ERR(dev->edev))
		return PTR_ERR(dev->edev);

For the two drivers which can build with CONFIG_EXTCON disabled, then
extcon_get_extcon_dev() will now return NULL which is not treated as an
error and the probe will continue successfully.  Those two drivers are
"typec_fusb302" and "max8997-battery".  In the original code, the
typec_fusb302 driver had an 800ms hang in tcpm_get_current_limit() but
now that function is a no-op.  For the max8997-battery driver everything
should continue working as is.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
2022-05-13 17:03:40 +09:00
..
devres.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 282 2019-06-05 17:36:37 +02:00
extcon-adc-jack.c extcon: adc-jack: Fix an error handling path in 'adc_jack_probe()' 2020-05-29 17:36:01 +09:00
extcon-axp288.c extcon: Fix extcon_get_extcon_dev() error handling 2022-05-13 17:03:40 +09:00
extcon-fsa9480.c extcon: fsa9480: Support TI TSU6111 variant 2020-12-11 17:01:09 +09:00
extcon-gpio.c extconn: Clean-up few drivers by using managed work init 2021-03-23 15:22:40 +01:00
extcon-intel-cht-wc.c extcon: intel-cht-wc: Report RID_A for ACA adapters 2022-02-01 14:55:12 +01:00
extcon-intel-int3496.c extconn: Clean-up few drivers by using managed work init 2021-03-23 15:22:40 +01:00
extcon-intel-mrfld.c extcon: intel-mrfld: Sync hardware and software state on init 2021-06-21 18:28:00 +09:00
extcon-intel.h extcon: intel: Split out some definitions to a common header 2019-04-05 10:21:41 +09:00
extcon-max3355.c extcon: max3355: Drop unused include 2021-10-27 14:13:37 +09:00
extcon-max8997.c Char / Misc driver updates for 5.14-rc1 2021-07-05 13:42:16 -07:00
extcon-max14577.c extcon: extcon-max14577: Fix potential work-queue cancellation race 2021-06-17 13:21:44 +02:00
extcon-max77693.c extcon: extcon-max77693.c: Fix potential work-queue cancellation race 2021-06-17 13:22:02 +02:00
extcon-max77843.c extcon: max77843: Return error code of extcon_dev_allocate() 2020-09-24 19:20:49 +09:00
extcon-palmas.c extconn: Clean-up few drivers by using managed work init 2021-03-23 15:22:40 +01:00
extcon-ptn5150.c extcon: ptn5150: Do not print error during probe if nothing is attached 2020-09-30 00:38:54 +09:00
extcon-qcom-spmi-misc.c Driver core changes for 5.13-rc1 2021-04-26 11:05:36 -07:00
extcon-rt8973a.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
extcon-rt8973a.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
extcon-sm5502.c extcon: sm5502: Add support for SM5504 2021-06-21 18:28:01 +09:00
extcon-sm5502.h extcon: sm5502: Add support for SM5504 2021-06-21 18:28:01 +09:00
extcon-usb-gpio.c extcon: usb-gpio: fix a non-kernel-doc comment 2021-12-24 15:27:52 +09:00
extcon-usbc-cros-ec.c mfd / platform: cros_ec: Reorganize platform and mfd includes 2019-09-02 11:33:42 +01:00
extcon-usbc-tusb320.c extcon: usbc-tusb320: Add support for TUSB320L 2021-10-27 14:13:39 +09:00
extcon.c extcon: Fix extcon_get_extcon_dev() error handling 2022-05-13 17:03:40 +09:00
extcon.h USB/PHY patches for 4.15-rc1 2017-11-13 21:14:07 -08:00
Kconfig extcon: intel-cht-wc: Support devs with Micro-B / USB-2 only Type-C connectors 2022-02-01 14:55:12 +01:00
Makefile ASoC/extcon: arizona: Move arizona jack code to sound/soc/codecs/arizona-jack.c 2021-03-18 11:46:15 +00:00