All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean Delvare <khali@linux-fr.org>
To: Fenghua Yu <fenghua.yu@intel.com>
Cc: Jin Dongming <jin.dongming@np.css.fujitsu.com>,
	"Brown, Len" <len.brown@intel.com>,
	Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>,
	"H. Peter Anvin" <hpa@linux.jf.intel.com>,
	LKLM <linux-kernel@vger.kernel.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	mingo Redhat <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [lm-sensors] [Patch-next] Trival fixes in
Date: Tue, 31 Aug 2010 19:30:02 +0000	[thread overview]
Message-ID: <20100831213002.73e2f57d@hyperion.delvare> (raw)
In-Reply-To: <20100831170443.GA30454@fenghua-desk.sc.intel.com>

On Tue, 31 Aug 2010 10:04:43 -0700, Fenghua Yu wrote:
> On Tue, Aug 31, 2010 at 12:07:25AM -0700, Jean Delvare wrote:
> > On Mon, 30 Aug 2010 18:02:52 -0700, Fenghua Yu wrote:
> > > On Mon, Aug 30, 2010 at 05:55:48PM -0700, Jin Dongming wrote:
> > > > diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
> > > > index d9368ee..79d563a 100644
> > > > --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
> > > > +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
> > > > @@ -216,14 +216,27 @@ static __cpuinit int thermal_throttle_add_dev(struct sys_device *sys_dev,
> > > >  		err = sysfs_add_file_to_group(&sys_dev->kobj,
> > > >  					      &attr_core_power_limit_count.attr,
> > > >  					      thermal_attr_group.name);
> > > > -	if (cpu_has(c, X86_FEATURE_PTS))
> > > > +	if (err)
> > > > +		goto error;
> > > > +
> > > > +	if (cpu_has(c, X86_FEATURE_PTS)) {
> > > >  		err = sysfs_add_file_to_group(&sys_dev->kobj,
> > > >  					      &attr_package_throttle_count.attr,
> > > >  					      thermal_attr_group.name);
> > > > +		if (err)
> > > > +			goto error;
> > > > +
> > > >  		if (cpu_has(c, X86_FEATURE_PLN))
> > > >  			err = sysfs_add_file_to_group(&sys_dev->kobj,
> > > >  					&attr_package_power_limit_count.attr,
> > > >  					thermal_attr_group.name);
> > > > +		if (err)
> > > > +			goto error;
> > > > +	}
> > > > +
> > > > +	return 0;
> > > > +error:
> > > > +	sysfs_remove_group(&sys_dev->kobj, &thermal_attr_group);
> > > >  
> > > >  	return err;
> > > >  }
> > > 
> > > This fix is incorrect. In this patch, a previous error prevents from adding any
> > > further devices. There shouldn't be such dependency among the devices.
> > 
> > I don't quite follow you. Did you mean to write that a previous error
> > prevents from creating further _attributes_ for the same device? This
> > would be true.
> > 
> > Now I don't think this is a problem because 1* such errors should never
> > happen anyway and 2* if they do happen then further attempts to create
> > the other attributes are unlikely to succeed either.
> 
> I don't think there is dependency among the count files, i.e. failure to add a
> count file to the group shouldn't impact other files. Other filles can still be
> added to the group. In this case, user application only sees part of count
> numbers. And kernel may just warn on the failure instead of providing nothing
> to user.
> 
> In the patch, any failure to add a file will remove the whole group. This is
> too strict. Kernel doesn't provide any count number to user application.

Oh, my bad. I missed the call to sysfs_remove_group() when reviewing
the code. I agree with you that it shouldn't be added.

> Agree with you that such errors should never happen anyway. So original code
> works fine.

The original code works indeed (except for the missing curly braces)
but is confusing for the reader (which is why I raised the point and we
are discussing it now). If you are voluntarily ignoring errors, you
should add a comment saying so. And it is also a good practice to use a
dummy variable to store the error value you'll ignore, so that the
intent is clear.

> If to be picky to the error handling, a patch may just ignore returning errors
> from sysfs_add_file_to_group.

This is an option, yes. Unfortunately this also means that such errors
won't be even logged, while I think this would be desirable.

> Or use err |= sysfs_add_file_to_group to collect
> all errors and return err but without calling sysfs_remove_group.

Please never use |= on non-bitwise values, it can only lead to bugs and
confusion.

-- 
Jean Delvare

_______________________________________________
lm-sensors mailing list
lm-sensors@lm-sensors.org
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

WARNING: multiple messages have this Message-ID (diff)
From: Jean Delvare <khali@linux-fr.org>
To: Fenghua Yu <fenghua.yu@intel.com>
Cc: Jin Dongming <jin.dongming@np.css.fujitsu.com>,
	"Brown, Len" <len.brown@intel.com>,
	Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>,
	"H. Peter Anvin" <hpa@linux.jf.intel.com>,
	LKLM <linux-kernel@vger.kernel.org>,
	"lm-sensors@lm-sensors.org" <lm-sensors@lm-sensors.org>,
	mingo Redhat <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [Patch-next] Trival fixes in thermal_throttle_add_dev().
Date: Tue, 31 Aug 2010 21:30:02 +0200	[thread overview]
Message-ID: <20100831213002.73e2f57d@hyperion.delvare> (raw)
In-Reply-To: <20100831170443.GA30454@fenghua-desk.sc.intel.com>

On Tue, 31 Aug 2010 10:04:43 -0700, Fenghua Yu wrote:
> On Tue, Aug 31, 2010 at 12:07:25AM -0700, Jean Delvare wrote:
> > On Mon, 30 Aug 2010 18:02:52 -0700, Fenghua Yu wrote:
> > > On Mon, Aug 30, 2010 at 05:55:48PM -0700, Jin Dongming wrote:
> > > > diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
> > > > index d9368ee..79d563a 100644
> > > > --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
> > > > +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
> > > > @@ -216,14 +216,27 @@ static __cpuinit int thermal_throttle_add_dev(struct sys_device *sys_dev,
> > > >  		err = sysfs_add_file_to_group(&sys_dev->kobj,
> > > >  					      &attr_core_power_limit_count.attr,
> > > >  					      thermal_attr_group.name);
> > > > -	if (cpu_has(c, X86_FEATURE_PTS))
> > > > +	if (err)
> > > > +		goto error;
> > > > +
> > > > +	if (cpu_has(c, X86_FEATURE_PTS)) {
> > > >  		err = sysfs_add_file_to_group(&sys_dev->kobj,
> > > >  					      &attr_package_throttle_count.attr,
> > > >  					      thermal_attr_group.name);
> > > > +		if (err)
> > > > +			goto error;
> > > > +
> > > >  		if (cpu_has(c, X86_FEATURE_PLN))
> > > >  			err = sysfs_add_file_to_group(&sys_dev->kobj,
> > > >  					&attr_package_power_limit_count.attr,
> > > >  					thermal_attr_group.name);
> > > > +		if (err)
> > > > +			goto error;
> > > > +	}
> > > > +
> > > > +	return 0;
> > > > +error:
> > > > +	sysfs_remove_group(&sys_dev->kobj, &thermal_attr_group);
> > > >  
> > > >  	return err;
> > > >  }
> > > 
> > > This fix is incorrect. In this patch, a previous error prevents from adding any
> > > further devices. There shouldn't be such dependency among the devices.
> > 
> > I don't quite follow you. Did you mean to write that a previous error
> > prevents from creating further _attributes_ for the same device? This
> > would be true.
> > 
> > Now I don't think this is a problem because 1* such errors should never
> > happen anyway and 2* if they do happen then further attempts to create
> > the other attributes are unlikely to succeed either.
> 
> I don't think there is dependency among the count files, i.e. failure to add a
> count file to the group shouldn't impact other files. Other filles can still be
> added to the group. In this case, user application only sees part of count
> numbers. And kernel may just warn on the failure instead of providing nothing
> to user.
> 
> In the patch, any failure to add a file will remove the whole group. This is
> too strict. Kernel doesn't provide any count number to user application.

Oh, my bad. I missed the call to sysfs_remove_group() when reviewing
the code. I agree with you that it shouldn't be added.

> Agree with you that such errors should never happen anyway. So original code
> works fine.

The original code works indeed (except for the missing curly braces)
but is confusing for the reader (which is why I raised the point and we
are discussing it now). If you are voluntarily ignoring errors, you
should add a comment saying so. And it is also a good practice to use a
dummy variable to store the error value you'll ignore, so that the
intent is clear.

> If to be picky to the error handling, a patch may just ignore returning errors
> from sysfs_add_file_to_group.

This is an option, yes. Unfortunately this also means that such errors
won't be even logged, while I think this would be desirable.

> Or use err |= sysfs_add_file_to_group to collect
> all errors and return err but without calling sysfs_remove_group.

Please never use |= on non-bitwise values, it can only lead to bugs and
confusion.

-- 
Jean Delvare

  reply	other threads:[~2010-08-31 19:30 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-26  2:39 [lm-sensors] [Patch-next] Package Level Power limit: fix the Jin Dongming
2010-08-26  2:39 ` [Patch-next] Package Level Power limit: fix the generation of package_power_limit_count sysfile Jin Dongming
2010-08-26  6:08 ` [lm-sensors] [Patch-next] Package Level Power limit: fix the Fenghua Yu
2010-08-26  6:08   ` [Patch-next] Package Level Power limit: fix the generation of package_power_limit_count sysfile Fenghua Yu
2010-08-26  8:29   ` [lm-sensors] [Patch-next] therm_throt.c: fix missing { and } Jin Dongming
2010-08-26  8:29     ` Jin Dongming
2010-08-26 20:51     ` [lm-sensors] " Fenghua Yu
2010-08-26 20:51       ` Fenghua Yu
2010-08-27 13:20     ` [lm-sensors] " Jean Delvare
2010-08-27 13:20       ` Jean Delvare
2010-08-30  7:58       ` Jin Dongming
2010-08-30  7:58         ` Jin Dongming
2010-08-30 19:15         ` Yu, Fenghua
2010-08-30 19:15           ` Yu, Fenghua
2010-08-31  0:55           ` [lm-sensors] [Patch-next] Trival fixes in Jin Dongming
2010-08-31  0:55             ` [Patch-next] Trival fixes in thermal_throttle_add_dev() Jin Dongming
2010-08-31  1:02             ` [lm-sensors] [Patch-next] Trival fixes in Fenghua Yu
2010-08-31  1:02               ` [Patch-next] Trival fixes in thermal_throttle_add_dev() Fenghua Yu
2010-08-31  7:07               ` [lm-sensors] [Patch-next] Trival fixes in Jean Delvare
2010-08-31  7:07                 ` [Patch-next] Trival fixes in thermal_throttle_add_dev() Jean Delvare
2010-08-31 17:04                 ` [lm-sensors] [Patch-next] Trival fixes in Fenghua Yu
2010-08-31 17:04                   ` [Patch-next] Trival fixes in thermal_throttle_add_dev() Fenghua Yu
2010-08-31 19:30                   ` Jean Delvare [this message]
2010-08-31 19:30                     ` Jean Delvare
2010-09-02  0:36                     ` [lm-sensors] [Patch-next] Trival fixes in Jin Dongming
2010-09-02  0:36                       ` [Patch-next] Trival fixes in thermal_throttle_add_dev() Jin Dongming
2010-08-31  6:55             ` [lm-sensors] [Patch-next] Trival fixes in Jean Delvare
2010-08-31  6:55               ` [Patch-next] Trival fixes in thermal_throttle_add_dev() Jean Delvare
2010-10-08 10:54     ` [tip:x86/urgent] x86, mce, therm_throt.c: Fix missing curly braces in error handling logic tip-bot for Jin Dongming

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100831213002.73e2f57d@hyperion.delvare \
    --to=khali@linux-fr.org \
    --cc=fenghua.yu@intel.com \
    --cc=hpa@linux.jf.intel.com \
    --cc=jin.dongming@np.css.fujitsu.com \
    --cc=len.brown@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lm-sensors@lm-sensors.org \
    --cc=mingo@redhat.com \
    --cc=seto.hidetoshi@jp.fujitsu.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.