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 |
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 >
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 --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
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