• Aaron Hill's avatar
    drivers: thermal: int340x_thermal: Fix sysfs race condition · 129699bb
    Aaron Hill authored
    Changes since V1:
    * Use dev_info instead of printk
    * Use dev_warn instead of BUG_ON
    
    Previously, sysfs_create_group was called before all initialization had
    fully run - specifically, before pci_set_drvdata was called. Since the
    sysctl group is visible to userspace as soon as sysfs_create_group
    returns, a small window of time existed during which a process could read
    from an uninitialized/partially-initialized device.
    
    This commit moves the creation of the sysctl group to after all
    initialized is completed. This ensures that it's impossible for
    userspace to read from a sysctl file before initialization has fully
    completed.
    
    To catch any future regressions, I've added a check to ensure
    that proc_thermal_emum_mode is never PROC_THERMAL_NONE when a process
    tries to read from a sysctl file. Previously, the aforementioned race
    condition could result in the 'else' branch
    running while PROC_THERMAL_NONE was set,
    leading to a null pointer deference.
    Signed-off-by: default avatarAaron Hill <aa1ronham@gmail.com>
    Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
    129699bb
processor_thermal_device.c 13.4 KB