This is a note to let you know that I've just added the patch titled drm/radeon: properly unregister hwmon interface (v2) to the 3.14-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: drm-radeon-properly-unregister-hwmon-interface-v2.patch and it can be found in the queue-3.14 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From cb3e4e7c59e4b43ac378631f6101f5c8de3a27a5 Mon Sep 17 00:00:00 2001 From: Alex Deucher <alexdeucher@xxxxxxxxx> Date: Tue, 15 Apr 2014 12:44:32 -0400 Subject: drm/radeon: properly unregister hwmon interface (v2) From: Alex Deucher <alexdeucher@xxxxxxxxx> commit cb3e4e7c59e4b43ac378631f6101f5c8de3a27a5 upstream. Need to properly unregister the hwmon device on driver unload. v2: minor clean up bug: https://bugzilla.kernel.org/show_bug.cgi?id=73931 Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/radeon/radeon_pm.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) --- a/drivers/gpu/drm/radeon/radeon_pm.c +++ b/drivers/gpu/drm/radeon/radeon_pm.c @@ -603,7 +603,6 @@ static const struct attribute_group *hwm static int radeon_hwmon_init(struct radeon_device *rdev) { int err = 0; - struct device *hwmon_dev; switch (rdev->pm.int_thermal_type) { case THERMAL_TYPE_RV6XX: @@ -616,11 +615,11 @@ static int radeon_hwmon_init(struct rade case THERMAL_TYPE_KV: if (rdev->asic->pm.get_temperature == NULL) return err; - hwmon_dev = hwmon_device_register_with_groups(rdev->dev, - "radeon", rdev, - hwmon_groups); - if (IS_ERR(hwmon_dev)) { - err = PTR_ERR(hwmon_dev); + rdev->pm.int_hwmon_dev = hwmon_device_register_with_groups(rdev->dev, + "radeon", rdev, + hwmon_groups); + 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); } @@ -632,6 +631,12 @@ static int radeon_hwmon_init(struct rade return err; } +static void radeon_hwmon_fini(struct radeon_device *rdev) +{ + if (rdev->pm.int_hwmon_dev) + hwmon_device_unregister(rdev->pm.int_hwmon_dev); +} + static void radeon_dpm_thermal_work_handler(struct work_struct *work) { struct radeon_device *rdev = @@ -1331,6 +1336,8 @@ static void radeon_pm_fini_old(struct ra device_remove_file(rdev->dev, &dev_attr_power_method); } + radeon_hwmon_fini(rdev); + if (rdev->pm.power_state) kfree(rdev->pm.power_state); } @@ -1350,6 +1357,8 @@ static void radeon_pm_fini_dpm(struct ra } radeon_dpm_fini(rdev); + radeon_hwmon_fini(rdev); + if (rdev->pm.power_state) kfree(rdev->pm.power_state); } Patches currently in stable-queue which might be from alexdeucher@xxxxxxxxx are queue-3.14/drm-radeon-disable-mclk-dpm-on-r7-260x.patch queue-3.14/drm-radeon-fix-audio-pin-counts-for-dce6-v2.patch queue-3.14/drm-radeon-fix-atpx-detection-on-non-vga-gpus.patch queue-3.14/drm-radeon-don-t-allow-runpm-1-on-systems-with-out-atpx.patch queue-3.14/drm-radeon-re-enable-mclk-dpm-on-r7-260x-asics.patch queue-3.14/drm-radeon-pm-don-t-walk-the-crtc-list-before-it-has-been-initialized-v2.patch queue-3.14/drm-radeon-si-make-sure-mc-ucode-is-loaded-before-checking-the-size.patch queue-3.14/drm-radeon-fix-count-in-cik_sdma_ring_test.patch queue-3.14/drm-radeon-fix-runpm-handling-on-apus-v4.patch queue-3.14/drm-radeon-add-support-for-newer-mc-ucode-on-si-v2.patch queue-3.14/drm-radeon-properly-unregister-hwmon-interface-v2.patch queue-3.14/drm-radeon-disable-dpm-on-rv770-by-default.patch queue-3.14/drm-radeon-ci-make-sure-mc-ucode-is-loaded-before-checking-the-size.patch queue-3.14/drm-radeon-add-support-for-newer-mc-ucode-on-ci-v2.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html