[PATCH] ptp: Check dev_set_name() return value

Ma Ke posted 1 patch 1 year ago
drivers/ptp/ptp_clock.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
[PATCH] ptp: Check dev_set_name() return value
Posted by Ma Ke 1 year ago
It's possible that dev_set_name() returns -ENOMEM. We could catch and
handle it by adding dev_set_name() return value check.

Cc: stable@vger.kernel.org
Fixes: a33121e5487b ("ptp: fix the race between the release of ptp_clock and cdev")
Signed-off-by: Ma Ke <make_ruc2021@163.com>
---
 drivers/ptp/ptp_clock.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index 77a36e7bddd5..82405c07be3e 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -348,7 +348,9 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
 	ptp->dev.groups = ptp->pin_attr_groups;
 	ptp->dev.release = ptp_clock_release;
 	dev_set_drvdata(&ptp->dev, ptp);
-	dev_set_name(&ptp->dev, "ptp%d", ptp->index);
+	err = dev_set_name(&ptp->dev, "ptp%d", ptp->index);
+	if (err)
+		goto no_pps;
 
 	/* Create a posix clock and link it to the device. */
 	err = posix_clock_register(&ptp->clock, &ptp->dev);
-- 
2.25.1
Re: [PATCH] ptp: Check dev_set_name() return value
Posted by Richard Cochran 1 year ago
On Wed, Dec 11, 2024 at 10:26:12AM +0800, Ma Ke wrote:

> diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
> index 77a36e7bddd5..82405c07be3e 100644
> --- a/drivers/ptp/ptp_clock.c
> +++ b/drivers/ptp/ptp_clock.c
> @@ -348,7 +348,9 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
>  	ptp->dev.groups = ptp->pin_attr_groups;
>  	ptp->dev.release = ptp_clock_release;
>  	dev_set_drvdata(&ptp->dev, ptp);
> -	dev_set_name(&ptp->dev, "ptp%d", ptp->index);
> +	err = dev_set_name(&ptp->dev, "ptp%d", ptp->index);
> +	if (err)
> +		goto no_pps;

NAK

This fails to clean up by calling pps_unregister_source() on the error path.

Thanks,
Richard