linux/drivers/platform/x86
Srinivas Pandruvada 64b73cff66 platform/x86/intel-uncore-freq: Fix static checker issue and potential race condition
There is a possible race condition when:
All CPUs in a package is offlined and just before the last CPU offline,
user tries to read sysfs entry and read happens while offline callback
is about to delete the sysfs entry.

Although not reproduced but this is possible scenerio and can be
reproduced by adding a msleep() in the show_min_max_freq_khz() before
mutex_lock() and read min_freq attribute from user space. Before
msleep() finishes, force every CPUs in a package offline.

This will cause deadlock, with offline and sysfs read/write operation
because of mutex_lock. The uncore_remove_die_entry() will not release
mutex till read/write callback returns because of kobject_put() and
read/write callback waiting on mutex.

We don't have to remove the sysfs folder when the package is offline.
While there is no CPU present, we can fail the read/write calls by
returning ENXIO error. So remove the kobject_put() call in offline path.

This also address the warning from static checker, as there is no
access to "data" variable after kobject_put:
"The patch 49a474c7ba: "platform/x86: Add support for Uncore
frequency control" from Jan 13, 2020, leads to the following static
checker warning:

        drivers/platform/x86/intel-uncore-frequency.c:285 uncore_remove_die_entry()
        error: dereferencing freed memory 'data'
"

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-02-28 12:44:11 +02:00
..
intel_speed_select_if platform/x86: ISST: Allow additional core-power mailbox commands 2020-01-20 11:39:31 +02:00
acer-wireless.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
acer-wmi.c platform/x86: acer-wmi: Switch to acpi_dev_get_first_match_dev() 2019-07-30 14:12:51 +03:00
acerhdf.c treewide: Rename Peter Feuerer to Peter Kaestle 2019-10-21 12:17:23 +03:00
alienware-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
amilo-rfkill.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
apple-gmux.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
asus-laptop.c platform-drivers-x86 for v5.5-1 2019-12-01 18:24:25 -08:00
asus-nb-wmi.c platform/x86: asus-nb-wmi: Support left round button on N56VB 2020-01-20 11:39:39 +02:00
asus-wireless.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
asus-wmi.c platform/x86: asus-wmi: switch to use <linux/units.h> helpers 2020-01-31 10:30:40 -08:00
asus-wmi.h platform/x86: asus-wmi: Only Tell EC the OS will handle display hotkeys from asus_nb_wmi 2019-06-12 11:54:16 +03:00
classmate-laptop.c platform/x86: classmate-laptop: remove unused variable 2019-10-15 10:55:10 +03:00
compal-laptop.c platform/x86: compal-laptop: Initialize "value" in ec_read_u8() 2019-09-07 21:16:09 +03:00
dcdbas.c docs: driver-api: add a series of orphaned documents 2019-07-15 11:03:02 -03:00
dcdbas.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 287 2019-06-05 17:36:37 +02:00
dell_rbu.c platform/x86: dell_rbu: Unify format of the printed messages 2020-02-10 17:47:38 +02:00
dell-laptop.c platform/x86: dell-laptop: disable kbd backlight on Inspiron 10xx 2019-10-15 10:55:09 +03:00
dell-rbtn.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
dell-rbtn.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
dell-smbios-base.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dell-smbios-smm.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dell-smbios-wmi.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
dell-smbios.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dell-smo8800.c Merge branch 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2019-07-15 21:10:39 -07:00
dell-wmi-aio.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
dell-wmi-descriptor.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
dell-wmi-descriptor.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
dell-wmi-led.c platform/x86: dell-wmi-led: Adjust instance of wmi_evaluate_method calls to 0 2017-06-28 09:01:36 -07:00
dell-wmi.c platform/x86: dell-wmi: Use existing defined KBD_LED_* magic values 2019-07-30 14:12:51 +03:00
eeepc-laptop.c platform/x86: eeepc-laptop: Use pr_warn instead of pr_warning 2019-10-18 15:00:48 +02:00
eeepc-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
fujitsu-laptop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
fujitsu-tablet.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 414 2019-06-05 17:37:14 +02:00
gpd-pocket-fan.c platform/x86: GPD pocket fan: Allow somewhat lower/higher temperature limits 2020-01-10 11:57:22 +02:00
hdaps.c platform/x86: hdaps: switch to using polled mode of input devices 2019-10-15 10:55:09 +03:00
hp_accel.c platform/x86: hp_accel: Add support for HP ZBook 17 G5 2019-07-29 18:31:48 +03:00
hp-wireless.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
hp-wmi.c platform/x86: hp-wmi: Make buffer for HPWMI_FEATURE2_QUERY 128 bytes 2019-12-20 19:00:50 +02:00
huawei-wmi.c platform/x86: huawei-wmi: Remove unnecessary battery mutex 2019-10-21 12:17:30 +03:00
i2c-multi-instantiate.c platform/x86: i2c-multi-instantiate: Fail the probe if no IRQ provided 2019-10-15 10:55:10 +03:00
ibm_rtl.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
ideapad-laptop.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
intel_atomisp2_pm.c platform/x86: intel_atomisp2_pm: Spelling fixes 2020-01-10 11:57:22 +02:00
intel_bxtwc_tmu.c platform/x86: intel_bxtwc_tmu: Remove dev_err() usage after platform_get_irq() 2019-08-01 18:03:02 +03:00
intel_cht_int33fe_common.c platform/x86: intel_cht_int33fe: Split code to Micro-B and Type-C 2019-10-15 10:55:10 +03:00
intel_cht_int33fe_common.h platform/x86: intel_cht_int33fe: Split code to Micro-B and Type-C 2019-10-15 10:55:10 +03:00
intel_cht_int33fe_microb.c platform/x86: intel_cht_int33fe: Split code to Micro-B and Type-C 2019-10-15 10:55:10 +03:00
intel_cht_int33fe_typec.c platform/x86: intel_cht_int33fe: use inline reference properties 2019-12-03 11:46:20 +01:00
intel_chtdc_ti_pwrbtn.c platform/x86: intel_chtdc_ti_pwrbtn: Add SPDX identifier 2018-09-27 12:18:16 +03:00
intel_int0002_vgpio.c platform/x86: intel_int0002_vgpio: Pass irqchip when adding gpiochip 2019-10-27 02:10:58 +03:00
intel_ips.c platform/x86: intel_ips: Convert to use DEFINE_SHOW_ATTRIBUTE macro 2018-12-03 21:40:03 +02:00
intel_ips.h platform/x86: intel-ips: Use the correct style for SPDX License Identifier 2020-01-10 11:57:21 +02:00
intel_menlow.c platform/x86: intel_menlow: switch to use <linux/units.h> helpers 2020-01-31 10:30:40 -08:00
intel_mid_powerbtn.c platform/x86: intel_mid_powerbtn: Take a copy of ddata 2020-01-22 18:51:58 +02:00
intel_mid_thermal.c platform/x86: intel_mid_thermal: Convert to use SPDX identifier 2018-09-27 12:18:17 +03:00
intel_mrfld_pwrbtn.c platform/x86: Add support for Basin Cove power button 2019-05-09 00:33:03 +03:00
intel_oaktrail.c platform/x86: intel_oaktrail: Use pr_warn instead of pr_warning 2019-10-18 15:01:35 +02:00
intel_pmc_core_pltdrv.c platform/x86: intel_pmc_core: update Comet Lake platform driver 2020-01-10 11:57:22 +02:00
intel_pmc_core.c platform/x86: intel_pmc_core: Add slp_s0_offset attribute back to tgl_reg_map 2020-02-28 12:44:00 +02:00
intel_pmc_core.h platform/x86: intel_pmc_core: Add debugfs support to access live status registers 2020-02-11 15:04:43 +02:00
intel_pmc_ipc.c platform/x86: intel_pmc_ipc: Switch to use driver->dev_groups 2020-01-22 18:52:27 +02:00
intel_punit_ipc.c platform/x86: intel_punit_ipc: Drop useless label 2019-10-27 02:10:57 +03:00
intel_scu_ipc.c platform/x86: intel_scu_ipc: Reformat kernel-doc comments of exported functions 2020-01-22 18:52:17 +02:00
intel_scu_ipcutil.c platform/x86: intel_scu_ipc: Convert to use SPDX identifier 2018-09-27 12:18:19 +03:00
intel_telemetry_core.c platform/x86: intel_telemetry: Convert to use SPDX identifier 2018-09-27 12:18:20 +03:00
intel_telemetry_debugfs.c platform/x86: intel_telemetry_debugfs: Respect error code of kstrtou32_from_user() 2020-01-10 11:50:32 +02:00
intel_telemetry_pltdrv.c platform/x86: intel_telemetry_pltdrv: use devm_platform_ioremap_resource() 2020-01-10 11:50:32 +02:00
intel_turbo_max_3.c platform/x86: intel_turbo_max_3: Convert to use SPDX identifier 2018-09-27 12:18:20 +03:00
intel-hid.c platform/x86: intel-hid: Move MODULE_DEVICE_TABLE() closer to the table 2020-02-10 11:12:18 +02:00
intel-rst.c platform/x86: intel-rst: Convert to use SPDX identifier 2018-09-27 12:18:19 +03:00
intel-smartconnect.c platform/x86: intel-smartconnect: Convert to use SPDX identifier 2018-09-27 12:18:19 +03:00
intel-uncore-frequency.c platform/x86/intel-uncore-freq: Fix static checker issue and potential race condition 2020-02-28 12:44:11 +02:00
intel-vbtn.c platform/x86: intel-vbtn: Move MODULE_DEVICE_TABLE() closer to the table 2020-02-10 11:12:18 +02:00
intel-wmi-thunderbolt.c platform/x86: wmi: add context argument to the probe function 2019-06-17 15:22:47 +03:00
Kconfig platform/x86: Kconfig: Group modules by companies and functions 2020-02-10 17:47:38 +02:00
lg-laptop.c platform/x86: Add LG Gram laptop special features driver 2018-10-19 19:21:57 +03:00
Makefile platform/x86: Makefile: Group modules by companies and functions 2020-02-10 17:47:37 +02:00
mlx-platform.c platform/x86: mlx-platform: Add support for next generation systems 2020-01-13 21:02:46 +02:00
msi-laptop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 1 2019-05-21 11:28:39 +02:00
msi-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
mxm-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
panasonic-laptop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 392 2019-06-05 17:37:11 +02:00
pcengines-apuv2.c platform/x86: pcengines-apuv2: Spelling fixes in the driver 2019-12-20 19:01:59 +02:00
peaq-wmi.c platform/x86: peaq-wmi: switch to using polled mode of input devices 2019-10-15 10:55:09 +03:00
pmc_atom.c platform/x86: pmc_atom: Add Lex 2I385SW to critclk_systems DMI table 2020-02-10 17:47:38 +02:00
samsung-laptop.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
samsung-q10.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
sony-laptop.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
surface3_button.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
surface3-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 441 2019-06-05 17:37:17 +02:00
surfacepro3_button.c platform/x86: surfacepro3_button: Fix device check 2019-07-28 12:58:40 +03:00
system76_acpi.c platform/x86: Add System76 ACPI driver 2019-10-15 10:55:11 +03:00
tc1100-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
thinkpad_acpi.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
topstar-laptop.c platform/x86: topstar-laptop: replace licence text with SPDX tag 2018-02-23 18:43:42 +02:00
toshiba_acpi.c proc: convert everything to "struct proc_ops" 2020-02-04 03:05:26 +00:00
toshiba_bluetooth.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
toshiba_haps.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
toshiba-wmi.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 157 2019-05-30 11:26:37 -07:00
touchscreen_dmi.c platform/x86: touchscreen_dmi: Fix indentation in several places 2020-01-10 11:57:22 +02:00
wmi-bmof.c platform-drivers-x86 for v5.3-1 2019-07-14 16:51:47 -07:00
wmi.c compat_ioctl: move more drivers to compat_ptr_ioctl 2019-10-23 17:23:44 +02:00
xiaomi-wmi.c platform/x86: wmi: add Xiaomi WMI key driver 2019-06-29 15:56:36 +03:00
xo1-rfkill.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
xo15-ebook.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00