• Sergey Senozhatsky's avatar
    radeon_pm: fix oops in hwmon_attributes_visible() and radeon_hwmon_show_temp_thresh() · e4158f1b
    Sergey Senozhatsky authored
    Since commit ec39f64b ("drm/radeon/dpm: Convert to use
    devm_hwmon_register_with_groups") radeon_hwmon_init() is using
    hwmon_device_register_with_groups(), which sets `rdev' as a device
    private driver_data, while hwmon_attributes_visible() and
    radeon_hwmon_show_temp_thresh() are still waiting for `drm_device'.
    
    Fix them by using dev_get_drvdata(), in order to avoid this oops:
    
      BUG: unable to handle kernel paging request at 0000000000001e28
      IP: [<ffffffffa02ae8b4>] hwmon_attributes_visible+0x18/0x3d [radeon]
      PGD 15057e067 PUD 151a8e067 PMD 0
      Oops: 0000 [#1] PREEMPT SMP
      Call Trace:
        internal_create_group+0x114/0x1d9
        sysfs_create_group+0xe/0x10
        sysfs_create_groups+0x22/0x5f
        device_add+0x34f/0x501
        device_register+0x15/0x18
        hwmon_device_register_with_groups+0xb5/0xed
        radeon_hwmon_init+0x56/0x7c [radeon]
        radeon_pm_init+0x134/0x7e5 [radeon]
        radeon_modeset_init+0x75f/0x8ed [radeon]
        radeon_driver_load_kms+0xc6/0x187 [radeon]
        drm_dev_register+0xf9/0x1b4 [drm]
        drm_get_pci_dev+0x98/0x129 [drm]
        radeon_pci_probe+0xa3/0xac [radeon]
        pci_device_probe+0x6e/0xcf
        driver_probe_device+0x98/0x1c4
        __driver_attach+0x5c/0x7e
        bus_for_each_dev+0x7b/0x85
        driver_attach+0x19/0x1b
        bus_add_driver+0x104/0x1ce
        driver_register+0x89/0xc5
        __pci_register_driver+0x58/0x5b
        drm_pci_init+0x86/0xea [drm]
        radeon_init+0x97/0x1000 [radeon]
        do_one_initcall+0x7f/0x117
        load_module+0x1583/0x1bb4
        SyS_init_module+0xa0/0xaf
    Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Alexander Deucher <Alexander.Deucher@amd.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e4158f1b
radeon_pm.c 47.1 KB