From: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
Use %pe to print error pointers directly and display their error names.
Keep PTR_ERR() calls when the numeric error value is needed for returning the error code.
Signed-off-by: Yalagada Pavan Kumar pavankumaryalagada@gmail.com --- v4: - Return error codes directly instead of storing them in ret, as suggested by Julia Lawall. - Remove the unused ret variable.
v3: - Extend the %pe conversion throughout Greybus, as suggested by Alex Elder.
v2: - Use %pe in the firmware management case, as suggested by Jeremy Clifton, to match the other cases.
v1: https://lore.kernel.org/outreachy/as0nhVbagZa8Birm@user/T/#t --- drivers/staging/greybus/arche-apb-ctrl.c | 37 ++++++++++-------------- drivers/staging/greybus/arche-platform.c | 26 +++++++---------- drivers/staging/greybus/fw-core.c | 16 +++++----- drivers/staging/greybus/uart.c | 2 +- 4 files changed, 35 insertions(+), 46 deletions(-)
diff --git a/drivers/staging/greybus/arche-apb-ctrl.c b/drivers/staging/greybus/arche-apb-ctrl.c index 4302c2226126..d30174310828 100644 --- a/drivers/staging/greybus/arche-apb-ctrl.c +++ b/drivers/staging/greybus/arche-apb-ctrl.c @@ -144,10 +144,9 @@ static int fw_flashing_seq(struct platform_device *pdev)
apb->spi_en = devm_gpiod_get(dev, "spi-en", flags); if (IS_ERR(apb->spi_en)) { - ret = PTR_ERR(apb->spi_en); - dev_err(dev, "Failed requesting SPI bus en GPIO: %d\n", - ret); - return ret; + dev_err(dev, "Failed requesting SPI bus en GPIO: %pe\n", + apb->spi_en); + return PTR_ERR(apb->spi_en); } }
@@ -318,43 +317,37 @@ static int apb_ctrl_get_fw_data(struct platform_device *pdev, struct arche_apb_ctrl_drvdata *apb) { struct device *dev = &pdev->dev; - int ret;
apb->resetn = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(apb->resetn)) { - ret = PTR_ERR(apb->resetn); - dev_err(dev, "Failed requesting reset GPIO: %d\n", ret); - return ret; + dev_err(dev, "Failed requesting reset GPIO: %pe\n", apb->resetn); + return PTR_ERR(apb->resetn); }
apb->boot_ret = devm_gpiod_get(dev, "boot-ret", GPIOD_OUT_LOW); if (IS_ERR(apb->boot_ret)) { - ret = PTR_ERR(apb->boot_ret); - dev_err(dev, "Failed requesting bootret GPIO: %d\n", ret); - return ret; + dev_err(dev, "Failed requesting bootret GPIO: %pe\n", apb->boot_ret); + return PTR_ERR(apb->boot_ret); }
/* It's not mandatory to support power management interface */ apb->pwroff = devm_gpiod_get_optional(dev, "pwr-off", GPIOD_IN); if (IS_ERR(apb->pwroff)) { - ret = PTR_ERR(apb->pwroff); - dev_err(dev, "Failed requesting pwroff_n GPIO: %d\n", ret); - return ret; + dev_err(dev, "Failed requesting pwroff_n GPIO: %pe\n", apb->pwroff); + return PTR_ERR(apb->pwroff); }
/* Do not make clock mandatory as of now (for DB3) */ apb->clk_en = devm_gpiod_get_optional(dev, "clock-en", GPIOD_OUT_LOW); if (IS_ERR(apb->clk_en)) { - ret = PTR_ERR(apb->clk_en); - dev_err(dev, "Failed requesting APB clock en GPIO: %d\n", ret); - return ret; + dev_err(dev, "Failed requesting APB clock en GPIO: %pe\n", apb->clk_en); + return PTR_ERR(apb->clk_en); }
apb->pwrdn = devm_gpiod_get(dev, "pwr-down", GPIOD_OUT_LOW); if (IS_ERR(apb->pwrdn)) { - ret = PTR_ERR(apb->pwrdn); - dev_warn(dev, "Failed requesting power down GPIO: %d\n", ret); - return ret; + dev_warn(dev, "Failed requesting power down GPIO: %pe\n", apb->pwrdn); + return PTR_ERR(apb->pwrdn); }
/* Regulators are optional, as we may have fixed supply coming in */ @@ -368,12 +361,12 @@ static int apb_ctrl_get_fw_data(struct platform_device *pdev,
apb->pinctrl = devm_pinctrl_get(&pdev->dev); if (IS_ERR(apb->pinctrl)) { - dev_err(&pdev->dev, "could not get pinctrl handle\n"); + dev_err(&pdev->dev, "could not get pinctrl handle: %pe\n", apb->pinctrl); return PTR_ERR(apb->pinctrl); } apb->pin_default = pinctrl_lookup_state(apb->pinctrl, "default"); if (IS_ERR(apb->pin_default)) { - dev_err(&pdev->dev, "could not get default pin state\n"); + dev_err(&pdev->dev, "could not get default pin state: %pe\n", apb->pin_default); return PTR_ERR(apb->pin_default); }
diff --git a/drivers/staging/greybus/arche-platform.c b/drivers/staging/greybus/arche-platform.c index de5de59ea8ab..8e75accc34b6 100644 --- a/drivers/staging/greybus/arche-platform.c +++ b/drivers/staging/greybus/arche-platform.c @@ -444,35 +444,32 @@ static int arche_platform_probe(struct platform_device *pdev)
arche_pdata->svc_reset = devm_gpiod_get(dev, "svc,reset", flags); if (IS_ERR(arche_pdata->svc_reset)) { - ret = PTR_ERR(arche_pdata->svc_reset); - dev_err(dev, "failed to request svc-reset GPIO: %d\n", ret); - return ret; + dev_err(dev, "failed to request svc-reset GPIO: %pe\n", arche_pdata->svc_reset); + return PTR_ERR(arche_pdata->svc_reset); } arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_OFF);
arche_pdata->svc_sysboot = devm_gpiod_get(dev, "svc,sysboot", GPIOD_OUT_LOW); if (IS_ERR(arche_pdata->svc_sysboot)) { - ret = PTR_ERR(arche_pdata->svc_sysboot); - dev_err(dev, "failed to request sysboot0 GPIO: %d\n", ret); - return ret; + dev_err(dev, "failed to request sysboot0 GPIO: %pe\n", arche_pdata->svc_sysboot); + return PTR_ERR(arche_pdata->svc_sysboot); }
/* setup the clock request gpio first */ arche_pdata->svc_refclk_req = devm_gpiod_get(dev, "svc,refclk-req", GPIOD_IN); if (IS_ERR(arche_pdata->svc_refclk_req)) { - ret = PTR_ERR(arche_pdata->svc_refclk_req); - dev_err(dev, "failed to request svc-clk-req GPIO: %d\n", ret); - return ret; + dev_err(dev, "failed to request svc-clk-req GPIO: %pe\n", + arche_pdata->svc_refclk_req); + return PTR_ERR(arche_pdata->svc_refclk_req); }
/* setup refclk2 to follow the pin */ arche_pdata->svc_ref_clk = devm_clk_get(dev, "svc_ref_clk"); if (IS_ERR(arche_pdata->svc_ref_clk)) { - ret = PTR_ERR(arche_pdata->svc_ref_clk); - dev_err(dev, "failed to get svc_ref_clk: %d\n", ret); - return ret; + dev_err(dev, "failed to get svc_ref_clk: %pe\n", arche_pdata->svc_ref_clk); + return PTR_ERR(arche_pdata->svc_ref_clk); }
platform_set_drvdata(pdev, arche_pdata); @@ -483,9 +480,8 @@ static int arche_platform_probe(struct platform_device *pdev) arche_pdata->wake_detect = devm_gpiod_get(dev, "svc,wake-detect", GPIOD_IN); if (IS_ERR(arche_pdata->wake_detect)) { - ret = PTR_ERR(arche_pdata->wake_detect); - dev_err(dev, "Failed requesting wake_detect GPIO: %d\n", ret); - return ret; + dev_err(dev, "Failed requesting wake_detect GPIO: %pe\n", arche_pdata->wake_detect); + return PTR_ERR(arche_pdata->wake_detect); }
arche_platform_set_wake_detect_state(arche_pdata, WD_STATE_IDLE); diff --git a/drivers/staging/greybus/fw-core.c b/drivers/staging/greybus/fw-core.c index 2016a74f137f..78321be80013 100644 --- a/drivers/staging/greybus/fw-core.c +++ b/drivers/staging/greybus/fw-core.c @@ -93,8 +93,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, if (IS_ERR(connection)) { ret = PTR_ERR(connection); dev_err(&bundle->dev, - "failed to create management connection (%d)\n", - ret); + "failed to create management connection (%pe)\n", + connection); goto err_destroy_connections; }
@@ -112,8 +112,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, gb_fw_download_request_handler); if (IS_ERR(connection)) { - dev_err(&bundle->dev, "failed to create download connection (%ld)\n", - PTR_ERR(connection)); + dev_err(&bundle->dev, "failed to create download connection (%pe)\n", + connection); } else { fw_core->download_connection = connection; } @@ -131,8 +131,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, NULL); if (IS_ERR(connection)) { - dev_err(&bundle->dev, "failed to create SPI connection (%ld)\n", - PTR_ERR(connection)); + dev_err(&bundle->dev, "failed to create SPI connection (%pe)\n", + connection); } else { fw_core->spi_connection = connection; } @@ -149,8 +149,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, NULL); if (IS_ERR(connection)) { - dev_err(&bundle->dev, "failed to create Authentication connection (%ld)\n", - PTR_ERR(connection)); + dev_err(&bundle->dev, "failed to create Authentication connection (%pe)\n", + connection); } else { fw_core->cap_connection = connection; } diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c index 172cf900eaf0..59a112cf47a0 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -951,7 +951,7 @@ static int gb_tty_init(void) TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_RESET_SAVED_TERMIOS); if (IS_ERR(gb_tty_driver)) { - pr_err("Can not allocate tty driver\n"); + pr_err("Can not allocate tty driver: %pe\n", gb_tty_driver); retval = PTR_ERR(gb_tty_driver); goto fail_unregister_dev; }
On 10/15/26 3:22 AM, pavankumaryalagada@gmail.com wrote:
From: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
Use %pe to print error pointers directly and display their error names.
Keep PTR_ERR() calls when the numeric error value is needed for returning the error code.
Signed-off-by: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
In a few places you are *adding* the error value where it was missing (which I think is an improvement). I assume that the return values in this case are negative errnos.
It would have been worth mentioning this other type of change in the patch description too. But it's not worth doing a new version for that. I trust you found all the spots, and fixed them this way. This looks good to me.
Reviewed-by: Alex Elder elder@riscstar.com
v4:
- Return error codes directly instead of storing them in ret, as suggested by Julia Lawall.
- Remove the unused ret variable.
v3:
- Extend the %pe conversion throughout Greybus, as suggested by Alex Elder.
v2:
- Use %pe in the firmware management case, as suggested by Jeremy Clifton, to match the other cases.
v1: https://lore.kernel.org/outreachy/as0nhVbagZa8Birm@user/T/#t
drivers/staging/greybus/arche-apb-ctrl.c | 37 ++++++++++-------------- drivers/staging/greybus/arche-platform.c | 26 +++++++---------- drivers/staging/greybus/fw-core.c | 16 +++++----- drivers/staging/greybus/uart.c | 2 +- 4 files changed, 35 insertions(+), 46 deletions(-)
diff --git a/drivers/staging/greybus/arche-apb-ctrl.c b/drivers/staging/greybus/arche-apb-ctrl.c index 4302c2226126..d30174310828 100644 --- a/drivers/staging/greybus/arche-apb-ctrl.c +++ b/drivers/staging/greybus/arche-apb-ctrl.c @@ -144,10 +144,9 @@ static int fw_flashing_seq(struct platform_device *pdev) apb->spi_en = devm_gpiod_get(dev, "spi-en", flags); if (IS_ERR(apb->spi_en)) {
ret = PTR_ERR(apb->spi_en);dev_err(dev, "Failed requesting SPI bus en GPIO: %d\n",ret);return ret;
dev_err(dev, "Failed requesting SPI bus en GPIO: %pe\n",apb->spi_en); } }return PTR_ERR(apb->spi_en);@@ -318,43 +317,37 @@ static int apb_ctrl_get_fw_data(struct platform_device *pdev, struct arche_apb_ctrl_drvdata *apb) { struct device *dev = &pdev->dev;
- int ret;
apb->resetn = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(apb->resetn)) {
ret = PTR_ERR(apb->resetn);dev_err(dev, "Failed requesting reset GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting reset GPIO: %pe\n", apb->resetn); }return PTR_ERR(apb->resetn);apb->boot_ret = devm_gpiod_get(dev, "boot-ret", GPIOD_OUT_LOW); if (IS_ERR(apb->boot_ret)) {
ret = PTR_ERR(apb->boot_ret);dev_err(dev, "Failed requesting bootret GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting bootret GPIO: %pe\n", apb->boot_ret); }return PTR_ERR(apb->boot_ret);/* It's not mandatory to support power management interface */ apb->pwroff = devm_gpiod_get_optional(dev, "pwr-off", GPIOD_IN); if (IS_ERR(apb->pwroff)) {
ret = PTR_ERR(apb->pwroff);dev_err(dev, "Failed requesting pwroff_n GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting pwroff_n GPIO: %pe\n", apb->pwroff); }return PTR_ERR(apb->pwroff);/* Do not make clock mandatory as of now (for DB3) */ apb->clk_en = devm_gpiod_get_optional(dev, "clock-en", GPIOD_OUT_LOW); if (IS_ERR(apb->clk_en)) {
ret = PTR_ERR(apb->clk_en);dev_err(dev, "Failed requesting APB clock en GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting APB clock en GPIO: %pe\n", apb->clk_en); }return PTR_ERR(apb->clk_en);apb->pwrdn = devm_gpiod_get(dev, "pwr-down", GPIOD_OUT_LOW); if (IS_ERR(apb->pwrdn)) {
ret = PTR_ERR(apb->pwrdn);dev_warn(dev, "Failed requesting power down GPIO: %d\n", ret);return ret;
dev_warn(dev, "Failed requesting power down GPIO: %pe\n", apb->pwrdn); }return PTR_ERR(apb->pwrdn);/* Regulators are optional, as we may have fixed supply coming in */ @@ -368,12 +361,12 @@ static int apb_ctrl_get_fw_data(struct platform_device *pdev, apb->pinctrl = devm_pinctrl_get(&pdev->dev); if (IS_ERR(apb->pinctrl)) {
dev_err(&pdev->dev, "could not get pinctrl handle\n");
return PTR_ERR(apb->pinctrl); } apb->pin_default = pinctrl_lookup_state(apb->pinctrl, "default"); if (IS_ERR(apb->pin_default)) {dev_err(&pdev->dev, "could not get pinctrl handle: %pe\n", apb->pinctrl);
dev_err(&pdev->dev, "could not get default pin state\n");
return PTR_ERR(apb->pin_default); }dev_err(&pdev->dev, "could not get default pin state: %pe\n", apb->pin_default);diff --git a/drivers/staging/greybus/arche-platform.c b/drivers/staging/greybus/arche-platform.c index de5de59ea8ab..8e75accc34b6 100644 --- a/drivers/staging/greybus/arche-platform.c +++ b/drivers/staging/greybus/arche-platform.c @@ -444,35 +444,32 @@ static int arche_platform_probe(struct platform_device *pdev) arche_pdata->svc_reset = devm_gpiod_get(dev, "svc,reset", flags); if (IS_ERR(arche_pdata->svc_reset)) {
ret = PTR_ERR(arche_pdata->svc_reset);dev_err(dev, "failed to request svc-reset GPIO: %d\n", ret);return ret;
dev_err(dev, "failed to request svc-reset GPIO: %pe\n", arche_pdata->svc_reset); } arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_OFF);return PTR_ERR(arche_pdata->svc_reset);arche_pdata->svc_sysboot = devm_gpiod_get(dev, "svc,sysboot", GPIOD_OUT_LOW); if (IS_ERR(arche_pdata->svc_sysboot)) {
ret = PTR_ERR(arche_pdata->svc_sysboot);dev_err(dev, "failed to request sysboot0 GPIO: %d\n", ret);return ret;
dev_err(dev, "failed to request sysboot0 GPIO: %pe\n", arche_pdata->svc_sysboot); }return PTR_ERR(arche_pdata->svc_sysboot);/* setup the clock request gpio first */ arche_pdata->svc_refclk_req = devm_gpiod_get(dev, "svc,refclk-req", GPIOD_IN); if (IS_ERR(arche_pdata->svc_refclk_req)) {
ret = PTR_ERR(arche_pdata->svc_refclk_req);dev_err(dev, "failed to request svc-clk-req GPIO: %d\n", ret);return ret;
dev_err(dev, "failed to request svc-clk-req GPIO: %pe\n",arche_pdata->svc_refclk_req); }return PTR_ERR(arche_pdata->svc_refclk_req);/* setup refclk2 to follow the pin */ arche_pdata->svc_ref_clk = devm_clk_get(dev, "svc_ref_clk"); if (IS_ERR(arche_pdata->svc_ref_clk)) {
ret = PTR_ERR(arche_pdata->svc_ref_clk);dev_err(dev, "failed to get svc_ref_clk: %d\n", ret);return ret;
dev_err(dev, "failed to get svc_ref_clk: %pe\n", arche_pdata->svc_ref_clk); }return PTR_ERR(arche_pdata->svc_ref_clk);platform_set_drvdata(pdev, arche_pdata); @@ -483,9 +480,8 @@ static int arche_platform_probe(struct platform_device *pdev) arche_pdata->wake_detect = devm_gpiod_get(dev, "svc,wake-detect", GPIOD_IN); if (IS_ERR(arche_pdata->wake_detect)) {
ret = PTR_ERR(arche_pdata->wake_detect);dev_err(dev, "Failed requesting wake_detect GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting wake_detect GPIO: %pe\n", arche_pdata->wake_detect); }return PTR_ERR(arche_pdata->wake_detect);arche_platform_set_wake_detect_state(arche_pdata, WD_STATE_IDLE); diff --git a/drivers/staging/greybus/fw-core.c b/drivers/staging/greybus/fw-core.c index 2016a74f137f..78321be80013 100644 --- a/drivers/staging/greybus/fw-core.c +++ b/drivers/staging/greybus/fw-core.c @@ -93,8 +93,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, if (IS_ERR(connection)) { ret = PTR_ERR(connection); dev_err(&bundle->dev,
"failed to create management connection (%d)\n",ret);
"failed to create management connection (%pe)\n",connection); goto err_destroy_connections; }@@ -112,8 +112,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, gb_fw_download_request_handler); if (IS_ERR(connection)) {
dev_err(&bundle->dev, "failed to create download connection (%ld)\n",PTR_ERR(connection));
dev_err(&bundle->dev, "failed to create download connection (%pe)\n",connection); } else { fw_core->download_connection = connection; }@@ -131,8 +131,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, NULL); if (IS_ERR(connection)) {
dev_err(&bundle->dev, "failed to create SPI connection (%ld)\n",PTR_ERR(connection));
dev_err(&bundle->dev, "failed to create SPI connection (%pe)\n",connection); } else { fw_core->spi_connection = connection; }@@ -149,8 +149,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, NULL); if (IS_ERR(connection)) {
dev_err(&bundle->dev, "failed to create Authentication connection (%ld)\n",PTR_ERR(connection));
dev_err(&bundle->dev, "failed to create Authentication connection (%pe)\n",connection); } else { fw_core->cap_connection = connection; }diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c index 172cf900eaf0..59a112cf47a0 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -951,7 +951,7 @@ static int gb_tty_init(void) TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_RESET_SAVED_TERMIOS); if (IS_ERR(gb_tty_driver)) {
pr_err("Can not allocate tty driver\n");
retval = PTR_ERR(gb_tty_driver); goto fail_unregister_dev; }pr_err("Can not allocate tty driver: %pe\n", gb_tty_driver);
On Thu, 15 Oct 2026, Alex Elder wrote:
On 10/15/26 3:22 AM, pavankumaryalagada@gmail.com wrote:
From: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
Use %pe to print error pointers directly and display their error names.
Keep PTR_ERR() calls when the numeric error value is needed for returning the error code.
Signed-off-by: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
In a few places you are *adding* the error value where it was missing (which I think is an improvement). I assume that the return values in this case are negative errnos.
It would have been worth mentioning this other type of change in the patch description too. But it's not worth doing a new version for that. I trust you found all the spots, and fixed them this way. This looks good to me.
This Coccinelle semantic patch finds over 3000 opportunities for this change in the kernel as a whole. Outside the context of outreachy, I wonder if people would be happy to see such changes, since the %pe code seems much more informative.
julia
@@ constant char [] c; expression f; @@
* f(..., c, ..., PTR_ERR(...), ...)
@@ constant char [] c; expression ret, e, f; @@ if (IS_ERR(e)) { ... ret = PTR_ERR(e); ... * f(..., c, ..., ret, ...) ... }
Reviewed-by: Alex Elder elder@riscstar.com
v4:
- Return error codes directly instead of storing them in ret, as suggested by Julia Lawall.
- Remove the unused ret variable.
v3:
- Extend the %pe conversion throughout Greybus, as suggested by Alex Elder.
v2:
- Use %pe in the firmware management case, as suggested by Jeremy Clifton, to match the other cases.
v1: https://lore.kernel.org/outreachy/as0nhVbagZa8Birm@user/T/#t
drivers/staging/greybus/arche-apb-ctrl.c | 37 ++++++++++-------------- drivers/staging/greybus/arche-platform.c | 26 +++++++---------- drivers/staging/greybus/fw-core.c | 16 +++++----- drivers/staging/greybus/uart.c | 2 +- 4 files changed, 35 insertions(+), 46 deletions(-)
diff --git a/drivers/staging/greybus/arche-apb-ctrl.c b/drivers/staging/greybus/arche-apb-ctrl.c index 4302c2226126..d30174310828 100644 --- a/drivers/staging/greybus/arche-apb-ctrl.c +++ b/drivers/staging/greybus/arche-apb-ctrl.c @@ -144,10 +144,9 @@ static int fw_flashing_seq(struct platform_device *pdev) apb->spi_en = devm_gpiod_get(dev, "spi-en", flags); if (IS_ERR(apb->spi_en)) {
ret = PTR_ERR(apb->spi_en);dev_err(dev, "Failed requesting SPI bus en GPIO:%d\n",
ret);return ret;
dev_err(dev, "Failed requesting SPI bus en GPIO:%pe\n",
apb->spi_en); } } @@ -318,43 +317,37 @@ static int apb_ctrl_get_fw_data(structreturn PTR_ERR(apb->spi_en);platform_device *pdev, struct arche_apb_ctrl_drvdata *apb) { struct device *dev = &pdev->dev;
- int ret; apb->resetn = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(apb->resetn)) {
ret = PTR_ERR(apb->resetn);dev_err(dev, "Failed requesting reset GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting reset GPIO: %pe\n",apb->resetn);
} apb->boot_ret = devm_gpiod_get(dev, "boot-ret", GPIOD_OUT_LOW); if (IS_ERR(apb->boot_ret)) {return PTR_ERR(apb->resetn);
ret = PTR_ERR(apb->boot_ret);dev_err(dev, "Failed requesting bootret GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting bootret GPIO: %pe\n",apb->boot_ret);
} /* It's not mandatory to support power management interface */ apb->pwroff = devm_gpiod_get_optional(dev, "pwr-off", GPIOD_IN); if (IS_ERR(apb->pwroff)) {return PTR_ERR(apb->boot_ret);
ret = PTR_ERR(apb->pwroff);dev_err(dev, "Failed requesting pwroff_n GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting pwroff_n GPIO: %pe\n",apb->pwroff);
} /* Do not make clock mandatory as of now (for DB3) */ apb->clk_en = devm_gpiod_get_optional(dev, "clock-en", GPIOD_OUT_LOW); if (IS_ERR(apb->clk_en)) {return PTR_ERR(apb->pwroff);
ret = PTR_ERR(apb->clk_en);dev_err(dev, "Failed requesting APB clock en GPIO: %d\n",ret);
return ret;
dev_err(dev, "Failed requesting APB clock en GPIO: %pe\n",apb->clk_en);
} apb->pwrdn = devm_gpiod_get(dev, "pwr-down", GPIOD_OUT_LOW); if (IS_ERR(apb->pwrdn)) {return PTR_ERR(apb->clk_en);
ret = PTR_ERR(apb->pwrdn);dev_warn(dev, "Failed requesting power down GPIO: %d\n", ret);return ret;
dev_warn(dev, "Failed requesting power down GPIO: %pe\n",apb->pwrdn);
} /* Regulators are optional, as we may have fixed supply coming in */return PTR_ERR(apb->pwrdn);@@ -368,12 +361,12 @@ static int apb_ctrl_get_fw_data(struct platform_device *pdev, apb->pinctrl = devm_pinctrl_get(&pdev->dev); if (IS_ERR(apb->pinctrl)) {
dev_err(&pdev->dev, "could not get pinctrl handle\n");
dev_err(&pdev->dev, "could not get pinctrl handle: %pe\n",apb->pinctrl); return PTR_ERR(apb->pinctrl); } apb->pin_default = pinctrl_lookup_state(apb->pinctrl, "default"); if (IS_ERR(apb->pin_default)) {
dev_err(&pdev->dev, "could not get default pin state\n");
dev_err(&pdev->dev, "could not get default pin state: %pe\n",apb->pin_default); return PTR_ERR(apb->pin_default); } diff --git a/drivers/staging/greybus/arche-platform.c b/drivers/staging/greybus/arche-platform.c index de5de59ea8ab..8e75accc34b6 100644 --- a/drivers/staging/greybus/arche-platform.c +++ b/drivers/staging/greybus/arche-platform.c @@ -444,35 +444,32 @@ static int arche_platform_probe(struct platform_device *pdev) arche_pdata->svc_reset = devm_gpiod_get(dev, "svc,reset", flags); if (IS_ERR(arche_pdata->svc_reset)) {
ret = PTR_ERR(arche_pdata->svc_reset);dev_err(dev, "failed to request svc-reset GPIO: %d\n", ret);return ret;
dev_err(dev, "failed to request svc-reset GPIO: %pe\n",arche_pdata->svc_reset);
} arche_platform_set_state(arche_pdata, ARCHE_PLATFORM_STATE_OFF); arche_pdata->svc_sysboot = devm_gpiod_get(dev, "svc,sysboot", GPIOD_OUT_LOW); if (IS_ERR(arche_pdata->svc_sysboot)) {return PTR_ERR(arche_pdata->svc_reset);
ret = PTR_ERR(arche_pdata->svc_sysboot);dev_err(dev, "failed to request sysboot0 GPIO: %d\n", ret);return ret;
dev_err(dev, "failed to request sysboot0 GPIO: %pe\n",arche_pdata->svc_sysboot);
} /* setup the clock request gpio first */ arche_pdata->svc_refclk_req = devm_gpiod_get(dev, "svc,refclk-req", GPIOD_IN); if (IS_ERR(arche_pdata->svc_refclk_req)) {return PTR_ERR(arche_pdata->svc_sysboot);
ret = PTR_ERR(arche_pdata->svc_refclk_req);dev_err(dev, "failed to request svc-clk-req GPIO: %d\n", ret);return ret;
dev_err(dev, "failed to request svc-clk-req GPIO: %pe\n",arche_pdata->svc_refclk_req); } /* setup refclk2 to follow the pin */ arche_pdata->svc_ref_clk = devm_clk_get(dev, "svc_ref_clk"); if (IS_ERR(arche_pdata->svc_ref_clk)) {return PTR_ERR(arche_pdata->svc_refclk_req);
ret = PTR_ERR(arche_pdata->svc_ref_clk);dev_err(dev, "failed to get svc_ref_clk: %d\n", ret);return ret;
dev_err(dev, "failed to get svc_ref_clk: %pe\n",arche_pdata->svc_ref_clk);
} platform_set_drvdata(pdev, arche_pdata);return PTR_ERR(arche_pdata->svc_ref_clk);@@ -483,9 +480,8 @@ static int arche_platform_probe(struct platform_device *pdev) arche_pdata->wake_detect = devm_gpiod_get(dev, "svc,wake-detect", GPIOD_IN); if (IS_ERR(arche_pdata->wake_detect)) {
ret = PTR_ERR(arche_pdata->wake_detect);dev_err(dev, "Failed requesting wake_detect GPIO: %d\n", ret);return ret;
dev_err(dev, "Failed requesting wake_detect GPIO: %pe\n",arche_pdata->wake_detect);
} arche_platform_set_wake_detect_state(arche_pdata, WD_STATE_IDLE);return PTR_ERR(arche_pdata->wake_detect);diff --git a/drivers/staging/greybus/fw-core.c b/drivers/staging/greybus/fw-core.c index 2016a74f137f..78321be80013 100644 --- a/drivers/staging/greybus/fw-core.c +++ b/drivers/staging/greybus/fw-core.c @@ -93,8 +93,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, if (IS_ERR(connection)) { ret = PTR_ERR(connection); dev_err(&bundle->dev,
"failed to create managementconnection (%d)\n",
ret);
"failed to create managementconnection (%pe)\n",
@@ -112,8 +112,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, gb_fw_download_request_handler); if (IS_ERR(connection)) {connection); goto err_destroy_connections; }
dev_err(&bundle->dev, "failed to createdownload connection (%ld)\n",
PTR_ERR(connection));
dev_err(&bundle->dev, "failed to createdownload connection (%pe)\n",
connection); } else { fw_core->download_connection = connection; }@@ -131,8 +131,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, NULL); if (IS_ERR(connection)) {
dev_err(&bundle->dev, "failed to create SPIconnection (%ld)\n",
PTR_ERR(connection));
dev_err(&bundle->dev, "failed to create SPIconnection (%pe)\n",
connection); } else { fw_core->spi_connection = connection; }@@ -149,8 +149,8 @@ static int gb_fw_core_probe(struct gb_bundle *bundle, connection = gb_connection_create(bundle, cport_id, NULL); if (IS_ERR(connection)) {
dev_err(&bundle->dev, "failed to createAuthentication connection (%ld)\n",
PTR_ERR(connection));
dev_err(&bundle->dev, "failed to createAuthentication connection (%pe)\n",
connection); } else { fw_core->cap_connection = connection; }diff --git a/drivers/staging/greybus/uart.c b/drivers/staging/greybus/uart.c index 172cf900eaf0..59a112cf47a0 100644 --- a/drivers/staging/greybus/uart.c +++ b/drivers/staging/greybus/uart.c @@ -951,7 +951,7 @@ static int gb_tty_init(void) TTY_DRIVER_DYNAMIC_DEV | TTY_DRIVER_RESET_SAVED_TERMIOS); if (IS_ERR(gb_tty_driver)) {
pr_err("Can not allocate tty driver\n");
retval = PTR_ERR(gb_tty_driver); goto fail_unregister_dev; }pr_err("Can not allocate tty driver: %pe\n", gb_tty_driver);
On Thu, Oct 15, 2026 at 02:10:53PM -0400, Julia Lawall wrote:
On Thu, 15 Oct 2026, Alex Elder wrote:
On 10/15/26 3:22 AM, pavankumaryalagada@gmail.com wrote:
From: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
Use %pe to print error pointers directly and display their error names.
Keep PTR_ERR() calls when the numeric error value is needed for returning the error code.
Signed-off-by: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
In a few places you are *adding* the error value where it was missing (which I think is an improvement). I assume that the return values in this case are negative errnos.
It would have been worth mentioning this other type of change in the patch description too. But it's not worth doing a new version for that. I trust you found all the spots, and fixed them this way. This looks good to me.
This Coccinelle semantic patch finds over 3000 opportunities for this change in the kernel as a whole. Outside the context of outreachy, I wonder if people would be happy to see such changes, since the %pe code seems much more informative.
I like %pe but it's not universally popular. I've seen people NAK these patches because it looks weird in their subsystem and I'm wondering how many error messages their code prints? Surely, any error message would stand out is weird and undesirable?
regards, dan carpenter
On Thu, Oct 15, 2026 at 01:52:38PM +0530, pavankumaryalagada@gmail.com wrote:
From: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
Use %pe to print error pointers directly and display their error names.
Keep PTR_ERR() calls when the numeric error value is needed for returning the error code.
Signed-off-by: Yalagada Pavan Kumar pavankumaryalagada@gmail.com
v4:
- Return error codes directly instead of storing them in ret, as suggested by Julia Lawall.
- Remove the unused ret variable.
Hi,
This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him a patch that has triggered this response. He used to manually respond to these common problems, but in order to save his sanity (he kept writing the same thing over and over, yet to different people), I was created. Hopefully you will not take offence and will fix the problem in your patch and resubmit it so that it can be accepted into the Linux kernel tree.
You are receiving this message because of the following common error(s) as indicated below:
- Your patch did not apply to any known trees that Greg is in control of. Possibly this is because you made it against Linus's tree, not the linux-next tree, which is where all of the development for the next version of the kernel is at. Please refresh your patch against the linux-next tree, or even better yet, the development tree specified in the MAINTAINERS file for the subsystem you are submitting a patch for, and resend it.
If you wish to discuss this problem further, or you have questions about how to resolve this issue, please feel free to respond to this email and Greg will reply once he has dug out from the pending patches received from other developers.
thanks,
greg k-h's patch email bot