Skip to content

hwmon: (coretemp) Check for null before removing sysfs attrs

Phil Auld requested to merge prauld/centos-stream-9:bz2101449 into main

Bugzilla: https://bugzilla.redhat.com/2101449

commit a89ff5f5cc64b9fe7a992cf56988fd36f56ca82a
Author: Phil Auld pauld@redhat.com
Date: Thu Nov 17 11:23:13 2022 -0500

hwmon: (coretemp) Check for null before removing sysfs attrs  

If coretemp_add_core() gets an error then pdata->core_data[indx]  
is already NULL and has been kfreed. Don't pass that to  
sysfs_remove_group() as that will crash in sysfs_remove_group().  

[Shortened for readability]  
[91854.020159] sysfs: cannot create duplicate filename '/devices/platform/coretemp.0/hwmon/hwmon2/temp20_label'  
<cpu offline>  
[91855.126115] BUG: kernel NULL pointer dereference, address: 0000000000000188  
[91855.165103] #PF: supervisor read access in kernel mode  
[91855.194506] #PF: error_code(0x0000) - not-present page  
[91855.224445] PGD 0 P4D 0  
[91855.238508] Oops: 0000 [#1] PREEMPT SMP PTI  
...  
[91855.342716] RIP: 0010:sysfs_remove_group+0xc/0x80  
...  
[91855.796571] Call Trace:  
[91855.810524]  coretemp_cpu_offline+0x12b/0x1dd [coretemp]  
[91855.841738]  ? coretemp_cpu_online+0x180/0x180 [coretemp]  
[91855.871107]  cpuhp_invoke_callback+0x105/0x4b0  
[91855.893432]  cpuhp_thread_fun+0x8e/0x150  
...  

Fix this by checking for NULL first.  

Signed-off-by: Phil Auld <pauld@redhat.com>  
Cc: linux-hwmon@vger.kernel.org  
Cc: Fenghua Yu <fenghua.yu@intel.com>  
Cc: Jean Delvare <jdelvare@suse.com>  
Cc: Guenter Roeck <linux@roeck-us.net>  
Link: https://lore.kernel.org/r/20221117162313.3164803-1-pauld@redhat.com  
Fixes: 199e0de7f5df3 ("hwmon: (coretemp) Merge pkgtemp with coretemp")  
Signed-off-by: Guenter Roeck <linux@roeck-us.net>  

Signed-off-by: Phil Auld pauld@redhat.com

Edited by Phil Auld

Merge request reports