mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 10:04:12 +08:00
platform/x86: int3472: Avoid crash in unregistering regulator gpio
When int3472 is loaded before GPIO driver, acpi_get_and_request_gpiod() failed but the returned gpio descriptor is not NULL, it will cause panic in later gpiod_put(), so set the gpio_desc to NULL in register error handling to avoid such crash. Signed-off-by: Hao Yao <hao.yao@intel.com> Signed-off-by: Bingbu Cao <bingbu.cao@intel.com> Link: https://lore.kernel.org/r/20230524035135.90315-1-bingbu.cao@intel.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
This commit is contained in:
parent
061c228967
commit
fb109fba72
@ -101,9 +101,11 @@ int skl_int3472_register_clock(struct int3472_discrete_device *int3472,
|
||||
|
||||
int3472->clock.ena_gpio = acpi_get_and_request_gpiod(path, agpio->pin_table[0],
|
||||
"int3472,clk-enable");
|
||||
if (IS_ERR(int3472->clock.ena_gpio))
|
||||
return dev_err_probe(int3472->dev, PTR_ERR(int3472->clock.ena_gpio),
|
||||
"getting clk-enable GPIO\n");
|
||||
if (IS_ERR(int3472->clock.ena_gpio)) {
|
||||
ret = PTR_ERR(int3472->clock.ena_gpio);
|
||||
int3472->clock.ena_gpio = NULL;
|
||||
return dev_err_probe(int3472->dev, ret, "getting clk-enable GPIO\n");
|
||||
}
|
||||
|
||||
if (polarity == GPIO_ACTIVE_LOW)
|
||||
gpiod_toggle_active_low(int3472->clock.ena_gpio);
|
||||
@ -199,8 +201,9 @@ int skl_int3472_register_regulator(struct int3472_discrete_device *int3472,
|
||||
int3472->regulator.gpio = acpi_get_and_request_gpiod(path, agpio->pin_table[0],
|
||||
"int3472,regulator");
|
||||
if (IS_ERR(int3472->regulator.gpio)) {
|
||||
dev_err(int3472->dev, "Failed to get regulator GPIO line\n");
|
||||
return PTR_ERR(int3472->regulator.gpio);
|
||||
ret = PTR_ERR(int3472->regulator.gpio);
|
||||
int3472->regulator.gpio = NULL;
|
||||
return dev_err_probe(int3472->dev, ret, "getting regulator GPIO\n");
|
||||
}
|
||||
|
||||
/* Ensure the pin is in output mode and non-active state */
|
||||
|
Loading…
Reference in New Issue
Block a user