Skip to contentSkip to conversation

Fixed hwmon_register_device() error regression

PATCH In review Josh Benson 2 participants 2 messages May 29, 2017 Thermal

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Fixed hwmon_register_device() error regression

---
 drivers/thermal/thermal_hwmon.c | 20 +++-----------------
 1 file changed, 3 insertions(+), 17 deletions(-)
drivers/thermal/thermal_hwmon.c +3 -17
index 541af5946203..c4a508a124dc 100644
@@ -59,14 +59,6 @@ static LIST_HEAD(thermal_hwmon_list);
 static DEFINE_MUTEX(thermal_hwmon_list_lock);
 
 static ssize_t
-name_show(struct device *dev, struct device_attribute *attr, char *buf)
-{
-	struct thermal_hwmon_device *hwmon = dev_get_drvdata(dev);
-	return sprintf(buf, "%s\n", hwmon->type);
-}
-static DEVICE_ATTR_RO(name);
-
-static ssize_t
 temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
 	int temperature;
@@ -165,15 +157,12 @@ int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
 
 	INIT_LIST_HEAD(&hwmon->tz_list);
 	strlcpy(hwmon->type, tz->type, THERMAL_NAME_LENGTH);
-	hwmon->device = hwmon_device_register(NULL);
+	hwmon->device = hwmon_device_register_with_info(NULL, hwmon->type,
+							hwmon, NULL, NULL);
 	if (IS_ERR(hwmon->device)) {
 		result = PTR_ERR(hwmon->device);
 		goto free_mem;
 	}
-	dev_set_drvdata(hwmon->device, hwmon);
-	result = device_create_file(hwmon->device, &dev_attr_name);
-	if (result)
-		goto free_mem;
 
  register_sys_interface:
 	temp = kzalloc(sizeof(*temp), GFP_KERNEL);
@@ -222,10 +211,8 @@ int thermal_add_hwmon_sysfs(struct thermal_zone_device *tz)
  free_temp_mem:
 	kfree(temp);
  unregister_name:
-	if (new_hwmon_device) {
-		device_remove_file(hwmon->device, &dev_attr_name);
+	if (new_hwmon_device)
 		hwmon_device_unregister(hwmon->device);
-	}
  free_mem:
 	if (new_hwmon_device)
 		kfree(hwmon);
@@ -267,7 +254,6 @@ void thermal_remove_hwmon_sysfs(struct thermal_zone_device *tz)
 	list_del(&hwmon->node);
 	mutex_unlock(&thermal_hwmon_list_lock);
 
-	device_remove_file(hwmon->device, &dev_attr_name);
 	hwmon_device_unregister(hwmon->device);
 	kfree(hwmon);
 }
Signature · 1 line
2.13.0
reviewer
#1 lore raw

Hi, Josh

Quoted 1 line · Josh Benson

First of all, you're missing a proper changelog here. Second, this patch has already been reverted by commit 3feb479cea37 because the name of some thermal devices contains special characters which is incompatible with hwmon.

thanks,
rui

Quoted 69 lines

---
 drivers/thermal/thermal_hwmon.c | 20 +++-----------------

 1 file changed, 3 insertions(+), 17 deletions(-)
drivers/thermal/thermal_hwmon.c +0 -0
index 541af5946203..c4a508a124dc 100644
@@ -59,14 +59,6 @@ static LIST_HEAD(thermal_hwmon_list);
  static DEFINE_MUTEX(thermal_hwmon_list_lock);


 static ssize_t
-name_show(struct device *dev, struct device_attribute *attr, char *buf)

drivers/thermal/thermal_hwmon.c +0 -7
-{
-	struct thermal_hwmon_device *hwmon = dev_get_drvdata(dev);
-	return sprintf(buf, "%s\n", hwmon->type);
-}
-static DEVICE_ATTR_RO(name);
-
-static ssize_t

 temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
 {
  int temperature;

drivers/thermal/thermal_hwmon.c +0 -0
@@ -165,15 +157,12 @@ int thermal_add_hwmon_sysfs(struct
 thermal_zone_device *tz)


  INIT_LIST_HEAD(&hwmon->tz_list); strlcpy(hwmon->type, tz->type, THERMAL_NAME_LENGTH);

drivers/thermal/thermal_hwmon.c +1 -1
-	hwmon->device = hwmon_device_register(NULL);
+	hwmon->device = hwmon_device_register_with_info(NULL, hwmon-
Quoted 1 line

type,

drivers/thermal/thermal_hwmon.c +1 -0
+							hwmon, NULL,

NULL);
  if (IS_ERR(hwmon->device)) {
  result = PTR_ERR(hwmon->device);
  goto free_mem;
  }

drivers/thermal/thermal_hwmon.c +0 -4
-	dev_set_drvdata(hwmon->device, hwmon);
-	result = device_create_file(hwmon->device, &dev_attr_name);
-	if (result)
-		goto free_mem;


  register_sys_interface:
  temp = kzalloc(sizeof(*temp), GFP_KERNEL);

drivers/thermal/thermal_hwmon.c +0 -0
@@ -222,10 +211,8 @@ int thermal_add_hwmon_sysfs(struct
 thermal_zone_device *tz)

  free_temp_mem:
  kfree(temp);
  unregister_name:

drivers/thermal/thermal_hwmon.c +1 -2
-	if (new_hwmon_device) {
-		device_remove_file(hwmon->device, &dev_attr_name);
+	if (new_hwmon_device)

  hwmon_device_unregister(hwmon->device);

drivers/thermal/thermal_hwmon.c +0 -1
-	}

  free_mem:
  if (new_hwmon_device)
  kfree(hwmon);

drivers/thermal/thermal_hwmon.c +0 -0
@@ -267,7 +254,6 @@ void thermal_remove_hwmon_sysfs(struct
 thermal_zone_device *tz)
  	list_del(&hwmon->node);
  	mutex_unlock(&thermal_hwmon_list_lock);

drivers/thermal/thermal_hwmon.c +0 -1
-	device_remove_file(hwmon->device, &dev_attr_name);

  hwmon_device_unregister(hwmon->device);
  kfree(hwmon);
 }