diff mbox series

hwmon: (dell-smm) Fix warning on /proc/i8k creation error

Message ID 20211112171440.59006-1-W_Armin@gmx.de (mailing list archive)
State Accepted
Headers show
Series hwmon: (dell-smm) Fix warning on /proc/i8k creation error | expand

Commit Message

Armin Wolf Nov. 12, 2021, 5:14 p.m. UTC
The removal function is called regardless of whether
/proc/i8k was created successfully or not, the later
causing a WARN() on module removal.
Fix that by only registering the removal function
if /proc/i8k was created successfully.

Tested on a Inspiron 3505.

Fixes: 039ae58503f3 ("hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k")
Signed-off-by: Armin Wolf <W_Armin@gmx.de>
---
 drivers/hwmon/dell-smm-hwmon.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

--
2.30.2

Comments

Pali Rohár Nov. 12, 2021, 5:49 p.m. UTC | #1
On Friday 12 November 2021 18:14:40 Armin Wolf wrote:
> The removal function is called regardless of whether
> /proc/i8k was created successfully or not, the later
> causing a WARN() on module removal.
> Fix that by only registering the removal function
> if /proc/i8k was created successfully.
> 
> Tested on a Inspiron 3505.
> 
> Fixes: 039ae58503f3 ("hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k")
> Signed-off-by: Armin Wolf <W_Armin@gmx.de>

Acked-by: Pali Rohár <pali@kernel.org>

> ---
>  drivers/hwmon/dell-smm-hwmon.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
> index eaace478f508..5596c211f38d 100644
> --- a/drivers/hwmon/dell-smm-hwmon.c
> +++ b/drivers/hwmon/dell-smm-hwmon.c
> @@ -627,10 +627,9 @@ static void __init i8k_init_procfs(struct device *dev)
>  {
>  	struct dell_smm_data *data = dev_get_drvdata(dev);
> 
> -	/* Register the proc entry */
> -	proc_create_data("i8k", 0, NULL, &i8k_proc_ops, data);
> -
> -	devm_add_action_or_reset(dev, i8k_exit_procfs, NULL);
> +	/* Only register exit function if creation was successful */
> +	if (proc_create_data("i8k", 0, NULL, &i8k_proc_ops, data))
> +		devm_add_action_or_reset(dev, i8k_exit_procfs, NULL);
>  }
> 
>  #else
> --
> 2.30.2
>
Guenter Roeck Nov. 14, 2021, 4:52 p.m. UTC | #2
On Fri, Nov 12, 2021 at 06:14:40PM +0100, Armin Wolf wrote:
> The removal function is called regardless of whether
> /proc/i8k was created successfully or not, the later
> causing a WARN() on module removal.
> Fix that by only registering the removal function
> if /proc/i8k was created successfully.
> 
> Tested on a Inspiron 3505.
> 
> Fixes: 039ae58503f3 ("hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k")
> Signed-off-by: Armin Wolf <W_Armin@gmx.de>
> Acked-by: Pali Rohár <pali@kernel.org>

Applied.

Thanks,
Guenter

> ---
>  drivers/hwmon/dell-smm-hwmon.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> --
> 2.30.2
> 
> diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
> index eaace478f508..5596c211f38d 100644
> --- a/drivers/hwmon/dell-smm-hwmon.c
> +++ b/drivers/hwmon/dell-smm-hwmon.c
> @@ -627,10 +627,9 @@ static void __init i8k_init_procfs(struct device *dev)
>  {
>  	struct dell_smm_data *data = dev_get_drvdata(dev);
> 
> -	/* Register the proc entry */
> -	proc_create_data("i8k", 0, NULL, &i8k_proc_ops, data);
> -
> -	devm_add_action_or_reset(dev, i8k_exit_procfs, NULL);
> +	/* Only register exit function if creation was successful */
> +	if (proc_create_data("i8k", 0, NULL, &i8k_proc_ops, data))
> +		devm_add_action_or_reset(dev, i8k_exit_procfs, NULL);
>  }
> 
>  #else
diff mbox series

Patch

diff --git a/drivers/hwmon/dell-smm-hwmon.c b/drivers/hwmon/dell-smm-hwmon.c
index eaace478f508..5596c211f38d 100644
--- a/drivers/hwmon/dell-smm-hwmon.c
+++ b/drivers/hwmon/dell-smm-hwmon.c
@@ -627,10 +627,9 @@  static void __init i8k_init_procfs(struct device *dev)
 {
 	struct dell_smm_data *data = dev_get_drvdata(dev);

-	/* Register the proc entry */
-	proc_create_data("i8k", 0, NULL, &i8k_proc_ops, data);
-
-	devm_add_action_or_reset(dev, i8k_exit_procfs, NULL);
+	/* Only register exit function if creation was successful */
+	if (proc_create_data("i8k", 0, NULL, &i8k_proc_ops, data))
+		devm_add_action_or_reset(dev, i8k_exit_procfs, NULL);
 }

 #else