Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mfd: wcd934x: Fix an error handling path in wcd934x_slim_probe()

If devm_gpiod_get_optional() fails, some resources need to be released, as
already done in the .remove() function.

While at it, remove the unneeded error code from a dev_err_probe() call.
It is already added in a human readable way by dev_err_probe() itself.

Fixes: 6a0ee2a61a31 ("mfd: wcd934x: Replace legacy gpio interface for gpiod")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Link: https://lore.kernel.org/r/02d8447f6d1df52cc8357aae698152e9a9be67c6.1684565021.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Lee Jones <lee@kernel.org>

authored by

Christophe JAILLET and committed by
Lee Jones
f190b489 8f3ef556

+7 -2
+7 -2
drivers/mfd/wcd934x.c
··· 258 258 usleep_range(600, 650); 259 259 reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW); 260 260 if (IS_ERR(reset_gpio)) { 261 - return dev_err_probe(dev, PTR_ERR(reset_gpio), 262 - "Failed to get reset gpio: err = %ld\n", PTR_ERR(reset_gpio)); 261 + ret = dev_err_probe(dev, PTR_ERR(reset_gpio), 262 + "Failed to get reset gpio\n"); 263 + goto err_disable_regulators; 263 264 } 264 265 msleep(20); 265 266 gpiod_set_value(reset_gpio, 1); ··· 270 269 dev_set_drvdata(dev, ddata); 271 270 272 271 return 0; 272 + 273 + err_disable_regulators: 274 + regulator_bulk_disable(WCD934X_MAX_SUPPLY, ddata->supplies); 275 + return ret; 273 276 } 274 277 275 278 static void wcd934x_slim_remove(struct slim_device *sdev)