Go to file
Lukas Wunner 93a063073c PCI/sysfs: Protect driver's D3cold preference from user space
commit 70b70a4307 upstream.

struct pci_dev contains two flags which govern whether the device may
suspend to D3cold:

* no_d3cold provides an opt-out for drivers (e.g. if a device is known
  to not wake from D3cold)

* d3cold_allowed provides an opt-out for user space (default is true,
  user space may set to false)

Since commit 9d26d3a8f1 ("PCI: Put PCIe ports into D3 during suspend"),
the user space setting overwrites the driver setting.  Essentially user
space is trusted to know better than the driver whether D3cold is
working.

That feels unsafe and wrong.  Assume that the change was introduced
inadvertently and do not overwrite no_d3cold when d3cold_allowed is
modified.  Instead, consider d3cold_allowed in addition to no_d3cold
when choosing a suspend state for the device.

That way, user space may opt out of D3cold if the driver hasn't, but it
may no longer force an opt in if the driver has opted out.

Fixes: 9d26d3a8f1 ("PCI: Put PCIe ports into D3 during suspend")
Link: https://lore.kernel.org/r/b8a7f4af2b73f6b506ad8ddee59d747cbf834606.1695025365.git.lukas@wunner.de
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Cc: stable@vger.kernel.org	# v4.8+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2023-11-28 17:15:00 +00:00
arch KVM: x86: Fix lapic timer interrupt lost after loading a snapshot. 2023-11-28 17:15:00 +00:00
block blk-mq: make sure active queue usage is held for bio_integrity_prep() 2023-11-28 17:14:55 +00:00
certs KEYS: Add missing function documentation 2023-04-24 16:15:52 +03:00
crypto crypto: pcrypt - Fix hungtask for PADATA_RESET 2023-11-28 17:14:46 +00:00
Documentation net/mlx5e: Add recovery flow for tx devlink health reporter for unhealthy PTP SQ 2023-11-28 17:14:57 +00:00
drivers PCI/sysfs: Protect driver's D3cold preference from user space 2023-11-28 17:15:00 +00:00
fs proc: sysctl: prevent aliased sysctls from getting passed to init 2023-11-28 17:15:00 +00:00
include proc: sysctl: prevent aliased sysctls from getting passed to init 2023-11-28 17:15:00 +00:00
init proc: sysctl: prevent aliased sysctls from getting passed to init 2023-11-28 17:15:00 +00:00
io_uring io_uring/fdinfo: remove need for sqpoll lock for thread/pid retrieval 2023-11-28 17:14:56 +00:00
ipc Merge branch 'work.namespace' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2023-02-24 19:20:07 -08:00
kernel audit: don't WARN_ON_ONCE(!current->mm) in audit_exe_compare() 2023-11-28 17:15:00 +00:00
lib lib/generic-radix-tree.c: Don't overflow in peek() 2023-11-28 17:14:40 +00:00
LICENSES LICENSES: Add the copyleft-next-0.3.1 license 2022-11-08 15:44:01 +01:00
mm vfs: fix readahead(2) on block devices 2023-11-20 11:56:43 +01:00
net net: sched: do not offload flows with a helper in act_ct 2023-11-28 17:14:57 +00:00
rust rust: types: make Opaque be !Unpin 2023-11-08 14:09:04 +01:00
samples samples/bpf: syscall_tp_user: Fix array out-of-bound access 2023-11-28 17:14:52 +00:00
scripts randstruct: Fix gcc-plugin performance mode to stay in group 2023-11-28 17:14:58 +00:00
security apparmor: fix invalid reference on profile->disconnected 2023-11-20 11:57:12 +01:00
sound ALSA: hda/realtek: Add quirk for ASUS UX7602ZM 2023-11-28 17:14:52 +00:00
tools perf intel-pt: Fix async branch flags 2023-11-28 17:14:58 +00:00
usr initramfs: Encode dependency on KBUILD_BUILD_TIMESTAMP 2023-06-06 17:54:49 +09:00
virt kvm/vfio: ensure kvg instance stays around in kvm_vfio_group_add() 2023-09-13 09:53:29 +02:00
.clang-format iommu: Add for_each_group_device() 2023-05-23 08:15:51 +02:00
.cocciconfig
.get_maintainer.ignore get_maintainer: add Alan to .get_maintainer.ignore 2022-08-20 15:17:44 -07:00
.gitattributes .gitattributes: set diff driver for Rust source code files 2023-05-31 17:48:25 +02:00
.gitignore Revert ".gitignore: ignore *.cover and *.mbx" 2023-07-04 15:05:12 -07:00
.mailmap mailmap: add entries for Simon Horman 2023-08-16 09:53:10 +01:00
.rustfmt.toml rust: add .rustfmt.toml 2022-09-28 09:02:20 +02:00
COPYING COPYING: state that all contributions really are covered by this file 2020-02-10 13:32:20 -08:00
CREDITS - Address -Wmissing-prototype warnings 2023-06-26 16:43:54 -07:00
Kbuild Kbuild updates for v6.1 2022-10-10 12:00:45 -07:00
Kconfig kbuild: ensure full rebuild when the compiler is updated 2020-05-12 13:28:33 +09:00
MAINTAINERS sound fixes for 6.5 2023-08-25 08:48:14 -07:00
Makefile Linux 6.5.12 2023-11-20 11:57:26 +01:00
README Drop all 00-INDEX files from Documentation/ 2018-09-09 15:08:58 -06:00

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.