Skip to contentSkip to conversation

thermal: consistently use int for trip temp

PATCH Superseded Wei Ni 2 participants 3 messages Mar 3, 2016 Thermal

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Wei Ni

author
#0 lore raw

PATCH 1/1 thermal: consistently use int for trip temp

The commit 17e8351a7739 consistently use int for temperature, however it missed a few in trip temperature and thermal_core.

In current codes, the trip->temperature used "unsigned long" and zone->temperature used"int", if the temperature is negative value, it will get wrong result when compare temperature with trip temperature.

This patch can fix it.

---
 drivers/thermal/thermal_core.c | 4 ++--
 include/linux/thermal.h        | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)
drivers/thermal/thermal_core.c +2 -2
index a0a8fd1235e2..2cde55474e34 100644
@@ -684,7 +684,7 @@ trip_point_temp_store(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int trip, ret;
-	unsigned long temperature;
+	int temperature;
 
 	if (!tz->ops->set_trip_temp)
 		return -EPERM;
@@ -895,7 +895,7 @@ emul_temp_store(struct device *dev, struct device_attribute *attr,
 {
 	struct thermal_zone_device *tz = to_thermal_zone(dev);
 	int ret = 0;
-	unsigned long temperature;
+	int temperature;
 
 	if (kstrtoul(buf, 10, &temperature))
 		return -EINVAL;
include/linux/thermal.h +2 -2
index e13a1ace50e9..eee0b7ddd2c1 100644
@@ -350,8 +350,8 @@ struct thermal_zone_of_device_ops {
 
 struct thermal_trip {
 	struct device_node *np;
-	unsigned long int temperature;
-	unsigned long int hysteresis;
+	int temperature;
+	int hysteresis;
 	enum thermal_trip_type type;
 };
 
Signature · 1 line
1.9.1
#1 lore raw
reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree…

Hi Wei,

[auto build test WARNING on thermal/next]
[also build test WARNING on v4.5-rc6 next-20160302]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Wei-Ni/thermal-consistently-use-int-for-trip-temp/20160303-151648
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux.git next
config: sparc64-allyesconfig (attached as .config)

reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=sparc64

All warnings (new ones prefixed by >>):

drivers/thermal/thermal_core.c: In function 'trip_point_temp_store':

>> drivers/thermal/thermal_core.c:695:6: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type

if (kstrtoul(buf, 10, &temperature))
^
In file included from include/linux/list.h:8:0,
from include/linux/module.h:9,
from drivers/thermal/thermal_core.c:28:
include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
^
drivers/thermal/thermal_core.c: In function 'emul_temp_store':
drivers/thermal/thermal_core.c:900:6: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type
if (kstrtoul(buf, 10, &temperature))
^
In file included from include/linux/list.h:8:0,
from include/linux/module.h:9,
from drivers/thermal/thermal_core.c:28:
include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
^

vim +/kstrtoul +695 drivers/thermal/thermal_core.c

203d3d4a drivers/thermal/thermal.c      Zhang Rui         2008-01-17  679  }
203d3d4a drivers/thermal/thermal.c      Zhang Rui         2008-01-17  680  
203d3d4a drivers/thermal/thermal.c      Zhang Rui         2008-01-17  681  static ssize_t
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  682  trip_point_temp_store(struct device *dev, struct device_attribute *attr,
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  683  		     const char *buf, size_t count)
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  684  {
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  685  	struct thermal_zone_device *tz = to_thermal_zone(dev);
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  686  	int trip, ret;
1afa53cf drivers/thermal/thermal_core.c Wei Ni            2016-03-03  687  	int temperature;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  688  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  689  	if (!tz->ops->set_trip_temp)
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  690  		return -EPERM;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  691  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  692  	if (!sscanf(attr->attr.name, "trip_point_%d_temp", &trip))
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  693  		return -EINVAL;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  694  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25 @695  	if (kstrtoul(buf, 10, &temperature))
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  696  		return -EINVAL;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  697  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  698  	ret = tz->ops->set_trip_temp(tz, trip, temperature);
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  699  	if (ret)
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  700  		return ret;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  701  
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  702  	thermal_zone_device_update(tz);
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  703  

:::::: The code at line 695 was first introduced by commit
:::::: c56f5c0342dfee11a1a13d2f5bb7618de5b17590 Thermal: Make Thermal trip points writeable

:::::: TO: Durgadoss R <[email protected]>
:::::: CC: Len Brown <[email protected]>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#2 lore raw
In reply to Wei Ni
reproduce:

Hi Wei,

[auto build test WARNING on thermal/next]
[also build test WARNING on v4.5-rc6 next-20160302]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Wei-Ni/thermal-consistently-use-int-for-trip-temp/20160303-151648
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux.git next
config: x86_64-randconfig-x015-201609 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

In file included from include/uapi/linux/stddef.h:1:0,
from include/linux/stddef.h:4,
from include/uapi/linux/posix_types.h:4,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from include/linux/list.h:4,
from include/linux/module.h:9,
from drivers/thermal/thermal_core.c:28:
drivers/thermal/thermal_core.c: In function 'trip_point_temp_store':
drivers/thermal/thermal_core.c:695:24: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type [-Wincompatible-pointer-types]
if (kstrtoul(buf, 10, &temperature))
^
include/linux/compiler.h:147:30: note: in definition of macro '__trace_if'

     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^
>> drivers/thermal/thermal_core.c:695:2: note: in expansion of macro 'if'
     if (kstrtoul(buf, 10, &temperature))
     ^
   In file included from include/linux/list.h:8:0,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
    static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
                                   ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   drivers/thermal/thermal_core.c:695:24: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type [-Wincompatible-pointer-types]
     if (kstrtoul(buf, 10, &temperature))
                           ^
   include/linux/compiler.h:147:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^
>> drivers/thermal/thermal_core.c:695:2: note: in expansion of macro 'if'
     if (kstrtoul(buf, 10, &temperature))
     ^
   In file included from include/linux/list.h:8:0,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
    static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
                                   ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   drivers/thermal/thermal_core.c:695:24: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type [-Wincompatible-pointer-types]
     if (kstrtoul(buf, 10, &temperature))
                           ^
   include/linux/compiler.h:158:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^
>> drivers/thermal/thermal_core.c:695:2: note: in expansion of macro 'if'
     if (kstrtoul(buf, 10, &temperature))
     ^
   In file included from include/linux/list.h:8:0,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
    static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
                                   ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   drivers/thermal/thermal_core.c: In function 'emul_temp_store':
   drivers/thermal/thermal_core.c:900:24: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type [-Wincompatible-pointer-types]
     if (kstrtoul(buf, 10, &temperature))
                           ^
   include/linux/compiler.h:147:30: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                 ^
   drivers/thermal/thermal_core.c:900:2: note: in expansion of macro 'if'
     if (kstrtoul(buf, 10, &temperature))
     ^
   In file included from include/linux/list.h:8:0,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
    static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
                                   ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   drivers/thermal/thermal_core.c:900:24: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type [-Wincompatible-pointer-types]
     if (kstrtoul(buf, 10, &temperature))
                           ^
   include/linux/compiler.h:147:42: note: in definition of macro '__trace_if'
     if (__builtin_constant_p(!!(cond)) ? !!(cond) :   \
                                             ^
   drivers/thermal/thermal_core.c:900:2: note: in expansion of macro 'if'
     if (kstrtoul(buf, 10, &temperature))
     ^
   In file included from include/linux/list.h:8:0,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
    static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
                                   ^
   In file included from include/uapi/linux/stddef.h:1:0,
                    from include/linux/stddef.h:4,
                    from include/uapi/linux/posix_types.h:4,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from include/linux/list.h:4,
                    from include/linux/module.h:9,
                    from drivers/thermal/thermal_core.c:28:
   drivers/thermal/thermal_core.c:900:24: warning: passing argument 3 of 'kstrtoul' from incompatible pointer type [-Wincompatible-pointer-types]
     if (kstrtoul(buf, 10, &temperature))
                           ^
   include/linux/compiler.h:158:16: note: in definition of macro '__trace_if'
      ______r = !!(cond);     \
                   ^

drivers/thermal/thermal_core.c:900:2: note: in expansion of macro 'if'
if (kstrtoul(buf, 10, &temperature))
^
In file included from include/linux/list.h:8:0,
from include/linux/module.h:9,
from drivers/thermal/thermal_core.c:28:
include/linux/kernel.h:291:32: note: expected 'long unsigned int *' but argument is of type 'int *'
static inline int __must_check kstrtoul(const char *s, unsigned int base, unsigned long *res)
^

vim +/if +695 drivers/thermal/thermal_core.c

203d3d4a drivers/thermal/thermal.c      Zhang Rui         2008-01-17  679  }
203d3d4a drivers/thermal/thermal.c      Zhang Rui         2008-01-17  680  
203d3d4a drivers/thermal/thermal.c      Zhang Rui         2008-01-17  681  static ssize_t
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  682  trip_point_temp_store(struct device *dev, struct device_attribute *attr,
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  683  		     const char *buf, size_t count)
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  684  {
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  685  	struct thermal_zone_device *tz = to_thermal_zone(dev);
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  686  	int trip, ret;
1afa53cf drivers/thermal/thermal_core.c Wei Ni            2016-03-03  687  	int temperature;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  688  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  689  	if (!tz->ops->set_trip_temp)
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  690  		return -EPERM;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  691  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  692  	if (!sscanf(attr->attr.name, "trip_point_%d_temp", &trip))
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  693  		return -EINVAL;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  694  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25 @695  	if (kstrtoul(buf, 10, &temperature))
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  696  		return -EINVAL;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  697  
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  698  	ret = tz->ops->set_trip_temp(tz, trip, temperature);
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  699  	if (ret)
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  700  		return ret;
c56f5c03 drivers/thermal/thermal_sys.c  Durgadoss R       2012-07-25  701  
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  702  	thermal_zone_device_update(tz);
ad74e46c drivers/thermal/thermal_core.c Kuninori Morimoto 2015-12-15  703  

:::::: The code at line 695 was first introduced by commit
:::::: c56f5c0342dfee11a1a13d2f5bb7618de5b17590 Thermal: Make Thermal trip points writeable

:::::: TO: Durgadoss R <[email protected]>
:::::: CC: Len Brown <[email protected]>

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation