debugfs after one of those functions has checked it and the struct thermal_debugfs object may be freed prematurely. To address the first problem, pass a pointer to the thermal zone's struct thermal_debugfs object to debugfs_create_file() in thermal_debug_tz_add() and make tze_seq_start(), tze_seq_next(), tze_seq_stop(), and tze_seq_show() retrieve it from s->private instead of a pointer to the thermal zone object. This will ensure that tz_debugfs will be valid across the "mitigations" file accesses until thermal_debugfs_remove_id() called by thermal_debug_tz_remove() removes that file. To address the second problem, use tz->lock in thermal_debug_tz_remove() around the tz->debugfs value check (in case the same thermal zone is removed at the same time in two different threads) and its reset to NULL. Cc :6.8+ # 6.8+ "> debugfs,after,one,of those,functions,has,checked,it,and,the,struct,thermal_debugfs,object may,be,freed,prematurely.,To,address,the,first,problem,,pass,a,pointer to,the,thermal,zone's,struct,thermal_debugfs,object,to debugfs_create_file(),in,thermal_debug_tz_add(),and,make tze_seq_start(),,tze_seq_next(),,tze_seq_stop(),,and,tze_seq_show() retrieve,it,from,s->private,instead,of,a,pointer,to,the,thermal,zone object.,This,will,ensure,that,tz_debugfs,will,be,valid,across,the "mitigations",file,accesses,until,thermal_debugfs_remove_id(),called by,thermal_debug_tz_remove(),removes,that,file.,To,address,the,second problem,,use,tz->lock,in,thermal_debug_tz_remove(),around,the tz->debugfs,value,check,(in,case,the,same,thermal,zone,is,removed,at the,same,time,in,two,different,threads),and,its,reset,to,NULL.,Cc :6.8+,,#,6.8+ "> SecuritySpace - CVE-2024-36961
 
 
 Vulnerability   
Search   
    Search 324607 CVE descriptions
and 146377 test descriptions,
access 10,000+ cross references.
Tests   CVE   All  

CVE ID:CVE-2024-36961
Description:In the Linux kernel, the following vulnerability has been resolved: thermal/debugfs: Fix two locking issues with thermal zone debug With the current thermal zone locking arrangement in the debugfs code, user space can open the "mitigations" file for a thermal zone before the zone's debugfs pointer is set which will result in a NULL pointer dereference in tze_seq_start(). Moreover, thermal_debug_tz_remove() is not called under the thermal zone lock, so it can run in parallel with the other functions accessing the thermal zone's struct thermal_debugfs object. Then, it may clear tz->debugfs after one of those functions has checked it and the struct thermal_debugfs object may be freed prematurely. To address the first problem, pass a pointer to the thermal zone's struct thermal_debugfs object to debugfs_create_file() in thermal_debug_tz_add() and make tze_seq_start(), tze_seq_next(), tze_seq_stop(), and tze_seq_show() retrieve it from s->private instead of a pointer to the thermal zone object. This will ensure that tz_debugfs will be valid across the "mitigations" file accesses until thermal_debugfs_remove_id() called by thermal_debug_tz_remove() removes that file. To address the second problem, use tz->lock in thermal_debug_tz_remove() around the tz->debugfs value check (in case the same thermal zone is removed at the same time in two different threads) and its reset to NULL. Cc :6.8+ # 6.8+
Test IDs: None available
Cross References: Common Vulnerability Exposure (CVE) ID: CVE-2024-36961
https://git.kernel.org/stable/c/6c57bdd0505422d5ccd2df541d993aec978c842e
https://git.kernel.org/stable/c/6c57bdd0505422d5ccd2df541d993aec978c842e
https://git.kernel.org/stable/c/c7f7c37271787a7f77d7eedc132b0b419a76b4c8
https://git.kernel.org/stable/c/c7f7c37271787a7f77d7eedc132b0b419a76b4c8




© 1998-2025 E-Soft Inc. All rights reserved.