drivers/net/ethernet/adi/adin1110.c | 3 +++ 1 file changed, 3 insertions(+)
The devm_gpiod_get_optional() function may return an ERR_PTR in case of
genuine GPIO acquisition errors, not just NULL which indicates the
legitimate absence of an optional GPIO.
Add an IS_ERR() check after the call in adin1110_check_spi(). On error,
return the error code to ensure proper failure handling rather than
proceeding with invalid pointers.
Fixes: 36934cac7aaf ("net: ethernet: adi: adin1110: add reset GPIO")
Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
---
drivers/net/ethernet/adi/adin1110.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/ethernet/adi/adin1110.c b/drivers/net/ethernet/adi/adin1110.c
index 30f9d271e595..71a2397edf2b 100644
--- a/drivers/net/ethernet/adi/adin1110.c
+++ b/drivers/net/ethernet/adi/adin1110.c
@@ -1089,6 +1089,9 @@ static int adin1110_check_spi(struct adin1110_priv *priv)
reset_gpio = devm_gpiod_get_optional(&priv->spidev->dev, "reset",
GPIOD_OUT_LOW);
+ if (IS_ERR(reset_gpio))
+ return dev_err_probe(&priv->spidev->dev, PTR_ERR(reset_gpio),
+ "failed to get reset gpio\n");
if (reset_gpio) {
/* MISO pin is used for internal configuration, can't have
* anyone else disturbing the SDO line.
--
2.25.1
On Mon, 2026-02-02 at 12:02 +0800, Chen Ni wrote:
> The devm_gpiod_get_optional() function may return an ERR_PTR in case of
> genuine GPIO acquisition errors, not just NULL which indicates the
> legitimate absence of an optional GPIO.
>
> Add an IS_ERR() check after the call in adin1110_check_spi(). On error,
> return the error code to ensure proper failure handling rather than
> proceeding with invalid pointers.
>
> Fixes: 36934cac7aaf ("net: ethernet: adi: adin1110: add reset GPIO")
> Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
> ---
For the change itself:
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
> drivers/net/ethernet/adi/adin1110.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/ethernet/adi/adin1110.c b/drivers/net/ethernet/adi/adin1110.c
> index 30f9d271e595..71a2397edf2b 100644
> --- a/drivers/net/ethernet/adi/adin1110.c
> +++ b/drivers/net/ethernet/adi/adin1110.c
> @@ -1089,6 +1089,9 @@ static int adin1110_check_spi(struct adin1110_priv *priv)
>
> reset_gpio = devm_gpiod_get_optional(&priv->spidev->dev, "reset",
> GPIOD_OUT_LOW);
> + if (IS_ERR(reset_gpio))
> + return dev_err_probe(&priv->spidev->dev, PTR_ERR(reset_gpio),
> + "failed to get reset gpio\n");
> if (reset_gpio) {
> /* MISO pin is used for internal configuration, can't have
> * anyone else disturbing the SDO line.
on 2026/2/2 12:02, Chen Ni wrote:
> The devm_gpiod_get_optional() function may return an ERR_PTR in case of
> genuine GPIO acquisition errors, not just NULL which indicates the
> legitimate absence of an optional GPIO.
>
> Add an IS_ERR() check after the call in adin1110_check_spi(). On error,
> return the error code to ensure proper failure handling rather than
> proceeding with invalid pointers.
>
> Fixes: 36934cac7aaf ("net: ethernet: adi: adin1110: add reset GPIO")
This patch is a bugfix, so it should be sent to net, not net-next.
> Signed-off-by: Chen Ni <nichen@iscas.ac.cn>
> ---
> drivers/net/ethernet/adi/adin1110.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/ethernet/adi/adin1110.c b/drivers/net/ethernet/adi/adin1110.c
> index 30f9d271e595..71a2397edf2b 100644
> --- a/drivers/net/ethernet/adi/adin1110.c
> +++ b/drivers/net/ethernet/adi/adin1110.c
> @@ -1089,6 +1089,9 @@ static int adin1110_check_spi(struct adin1110_priv *priv)
>
> reset_gpio = devm_gpiod_get_optional(&priv->spidev->dev, "reset",
> GPIOD_OUT_LOW);
> + if (IS_ERR(reset_gpio))
> + return dev_err_probe(&priv->spidev->dev, PTR_ERR(reset_gpio),
> + "failed to get reset gpio\n");
> if (reset_gpio) {
> /* MISO pin is used for internal configuration, can't have
> * anyone else disturbing the SDO line.
© 2016 - 2026 Red Hat, Inc.