On 6/18/25 13:50, Bartosz Golaszewski wrote:
From: Bartosz Golaszewski bartosz.golaszewski@linaro.org
gb_fw_init() is only called in this driver's probe() and we abort the probing if it fails. This means that calling devm_gpiod_put() in error path is not required as devres will already manage the releasing of the resources when the device is detached.
Signed-off-by: Bartosz Golaszewski bartosz.golaszewski@linaro.org
drivers/greybus/gb-beagleplay.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-)
diff --git a/drivers/greybus/gb-beagleplay.c b/drivers/greybus/gb-beagleplay.c index da31f1131afc..1ea48b71a030 100644 --- a/drivers/greybus/gb-beagleplay.c +++ b/drivers/greybus/gb-beagleplay.c @@ -1041,7 +1041,6 @@ static const struct fw_upload_ops cc1352_bootloader_ops = { static int gb_fw_init(struct gb_beagleplay *bg) {
- int ret; struct fw_upload *fwl; struct gpio_desc *desc;
@@ -1060,29 +1059,17 @@ static int gb_fw_init(struct gb_beagleplay *bg) bg->bootloader_backdoor_gpio = desc; desc = devm_gpiod_get(&bg->sd->dev, "reset", GPIOD_IN);
- if (IS_ERR(desc)) {
ret = PTR_ERR(desc);
goto free_boot;
- }
- if (IS_ERR(desc))
bg->rst_gpio = desc;return PTR_ERR(desc);
fwl = firmware_upload_register(THIS_MODULE, &bg->sd->dev, "cc1352p7", &cc1352_bootloader_ops, bg);
- if (IS_ERR(fwl)) {
ret = PTR_ERR(fwl);
goto free_reset;
- }
- if (IS_ERR(fwl))
bg->fwl = fwl;return PTR_ERR(fwl);
return 0;
-free_reset:
- devm_gpiod_put(&bg->sd->dev, bg->rst_gpio);
- bg->rst_gpio = NULL;
-free_boot:
- devm_gpiod_put(&bg->sd->dev, bg->bootloader_backdoor_gpio);
- bg->bootloader_backdoor_gpio = NULL;
- return ret; }
static void gb_fw_deinit(struct gb_beagleplay *bg)
Can you add a comment above the function that it should only ever be called from probing code since it does not free up the resources? I might end up forgetting and using it improperly in the future.
Best Regards,
Ayush Singh