radeon: handle errors in radeon_hwmon_init()
Subsystems (3)
PATCH 1/1 radeon: handle errors in radeon_hwmon_init()
Smatch complained that the ERR_PTR from hwmon_device_register() wasn't handled. I added some error handling in radeon_hwmon_init() to silence the warning.
Unfortunately errors from radeon_pm_init() aren't handled so this doesn't really make a difference beyond silencing the warning.
drivers/gpu/drm/radeon/radeon_pm.c +16 -4
@@ -472,9 +472,9 @@ static const struct attribute_group hwmon_attrgroup = { .attrs = hwmon_attributes, }; -static void radeon_hwmon_init (struct radeon_device *rdev) +static int radeon_hwmon_init (struct radeon_device *rdev) { -int err; +int err =0 ; rdev->pm.int_hwmon_dev =NULL ;
@@ -483,15 +483,24 @@ static void radeon_hwmon_init(struct radeon_device *rdev)case THERMAL_TYPE_RV770 :case THERMAL_TYPE_EVERGREEN : rdev->pm.int_hwmon_dev =hwmon_device_register (rdev->dev); +if (IS_ERR (rdev->pm.int_hwmon_dev)) { + err =PTR_ERR (rdev->pm.int_hwmon_dev); +DRM_ERROR ("Unable to register hwmon device: %d\n" , err); +break ; + }dev_set_drvdata (rdev->pm.int_hwmon_dev, rdev->ddev); err =sysfs_create_group (&rdev->pm.int_hwmon_dev->kobj, &hwmon_attrgroup); -if (err) +if (err) {DRM_ERROR ("Unable to create hwmon sysfs file: %d\n" , err); +hwmon_device_unregister (rdev->dev); + }break ;default :break ; } + +return err; }static void radeon_hwmon_fini (struct radeon_device *rdev)
@@ -540,6 +549,7 @@ void radeon_pm_resume(struct radeon_device *rdev)int radeon_pm_init (struct radeon_device *rdev) {int ret; +/* default to profile method */ rdev->pm.pm_method =PM_METHOD_PROFILE ; rdev->pm.profile =PM_PROFILE_DEFAULT ;
@@ -561,7 +571,9 @@ int radeon_pm_init(struct radeon_device *rdev) }/* set up the internal thermal sensor if applicable */ -radeon_hwmon_init (rdev); + ret =radeon_hwmon_init (rdev); +if (ret) +return ret;if (rdev->pm.num_power_states >1 ) {/* where's the best place to put these? */ ret =device_create_file (rdev->dev, &dev_attr_power_profile);
2010/8/8 Dan Carpenter <[email protected]>:
Quoted 8 lines
Smatch complained that the
ERR_PTRfromhwmon_device_register()wasn't handled. I added some error handling inradeon_hwmon_init()to silence the warning.Unfortunately errors from
radeon_pm_init()aren't handled so this doesn't really make a difference beyond silencing the warning.Signed-off-by Dan Carpenter <[email protected]>
Didn't we try to switch from DRM_ERROR to dev_err? I think that's preferred method.
Signature · 1 line
Rafał
Alex Deucher
Reviewed-by2010/8/7 Rafał Miłecki <[email protected]>:
Quoted 5 lines
2010/8/8 Dan Carpenter <[email protected]>:
Quoted 4 lines
Smatch complained that the
ERR_PTRfromhwmon_device_register()wasn't handled. I added some error handling inradeon_hwmon_init()to silence the warning.
Quoted 7 lines
Quoted 4 lines
Unfortunately errors from
radeon_pm_init()aren't handled so this doesn't really make a difference beyond silencing the warning.Signed-off-by Dan Carpenter <[email protected]>Didn't we try to switch from
DRM_ERRORtodev_err? I think that's preferred method.
Other than that, the patch looks fine.
PATCH v2 1/1 radeon: handle errors in radeon_hwmon_init()
In reply to Rafał MiłeckiSmatch complained that the ERR_PTR from hwmon_device_register() wasn't handled. I added some error handling in radeon_hwmon_init() to silence the warning.
Unfortunately errors from radeon_pm_init() aren't handled so this doesn't really make a difference beyond silencing the warning.
Also I changed DRM_ERROR() to dev_err() which is the new preferred method.
---
V2: switched from DRM_ERROR() to dev_err()
drivers/gpu/drm/radeon/radeon_pm.c +19 -5
@@ -472,9 +472,9 @@ static const struct attribute_group hwmon_attrgroup = { .attrs = hwmon_attributes, }; -static void radeon_hwmon_init (struct radeon_device *rdev) +static int radeon_hwmon_init (struct radeon_device *rdev) { -int err; +int err =0 ; rdev->pm.int_hwmon_dev =NULL ;
@@ -483,15 +483,26 @@ static void radeon_hwmon_init(struct radeon_device *rdev)case THERMAL_TYPE_RV770 :case THERMAL_TYPE_EVERGREEN : rdev->pm.int_hwmon_dev =hwmon_device_register (rdev->dev); +if (IS_ERR (rdev->pm.int_hwmon_dev)) { + err =PTR_ERR (rdev->pm.int_hwmon_dev); +dev_err (rdev->dev, +"Unable to register hwmon device: %d\n" , err); +break ; + }dev_set_drvdata (rdev->pm.int_hwmon_dev, rdev->ddev); err =sysfs_create_group (&rdev->pm.int_hwmon_dev->kobj, &hwmon_attrgroup); -if (err) -DRM_ERROR ("Unable to create hwmon sysfs file: %d\n" , err); +if (err) { +dev_err (rdev->dev, +"Unable to create hwmon sysfs file: %d\n" , err); +hwmon_device_unregister (rdev->dev); + }break ;default :break ; } + +return err; }static void radeon_hwmon_fini (struct radeon_device *rdev)
@@ -540,6 +551,7 @@ void radeon_pm_resume(struct radeon_device *rdev)int radeon_pm_init (struct radeon_device *rdev) {int ret; +/* default to profile method */ rdev->pm.pm_method =PM_METHOD_PROFILE ; rdev->pm.profile =PM_PROFILE_DEFAULT ;
@@ -561,7 +573,9 @@ int radeon_pm_init(struct radeon_device *rdev) }/* set up the internal thermal sensor if applicable */ -radeon_hwmon_init (rdev); + ret =radeon_hwmon_init (rdev); +if (ret) +return ret;if (rdev->pm.num_power_states >1 ) {/* where's the best place to put these? */ ret =device_create_file (rdev->dev, &dev_attr_power_profile);
--
To unsubscribe from this list: send the line "unsubscribe kernel-janitors" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html