twx-linux/drivers
Ard Biesheuvel b5bfb235f7 efi: Avoid cold plugged memory for placing the kernel
commit ba69e0750b0362870294adab09339a0c39c3beaf upstream.

UEFI 2.11 introduced EFI_MEMORY_HOT_PLUGGABLE to annotate system memory
regions that are 'cold plugged' at boot, i.e., hot pluggable memory that
is available from early boot, and described as system RAM by the
firmware.

Existing loaders and EFI applications running in the boot context will
happily use this memory for allocating data structures that cannot be
freed or moved at runtime, and this prevents the memory from being
unplugged. Going forward, the new EFI_MEMORY_HOT_PLUGGABLE attribute
should be tested, and memory annotated as such should be avoided for
such allocations.

In the EFI stub, there are a couple of occurrences where, instead of the
high-level AllocatePages() UEFI boot service, a low-level code sequence
is used that traverses the EFI memory map and carves out the requested
number of pages from a free region. This is needed, e.g., for allocating
as low as possible, or for allocating pages at random.

While AllocatePages() should presumably avoid special purpose memory and
cold plugged regions, this manual approach needs to incorporate this
logic itself, in order to prevent the kernel itself from ending up in a
hot unpluggable region, preventing it from being unplugged.

So add the EFI_MEMORY_HOTPLUGGABLE macro definition, and check for it
where appropriate.

Cc: stable@vger.kernel.org
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-02-21 13:57:17 +01:00
..
accel accel/qaic: Fix the for loop used to walk SG table 2024-11-01 01:58:21 +01:00
accessibility
acpi ACPI: x86: Add skip i2c clients quirk for Vexia EDU ATLA 10 tablet 5V 2025-02-21 13:57:12 +01:00
amba
android
ata ata: libata-sff: Ensure that we cannot write outside the allocated buffer 2025-02-17 09:40:35 +01:00
atm
auxdisplay
base driver core: class: Fix wild pointer dereferences in API class_dev_iter_next() 2025-02-08 09:52:27 +01:00
bcma
block nbd: don't allow reconnect after disconnect 2025-02-08 09:51:42 +01:00
bluetooth Bluetooth: btnxpuart: Fix glitches seen in dual A2DP streaming 2025-02-08 09:52:31 +01:00
bus of: remove internal arguments from of_property_for_each_u32() 2025-02-08 09:51:51 +01:00
cache
cdrom cdrom: Avoid barrier_nospec() in cdrom_ioctl_media_changed() 2024-11-01 01:58:25 +01:00
cdx
char misc: misc_minor_alloc to use ida for all dynamic/misc dynamic minors 2025-02-17 09:40:38 +01:00
clk clk: mediatek: mt2701-mm: add missing dummy clk 2025-02-17 09:40:20 +01:00
clocksource of: remove internal arguments from of_property_for_each_u32() 2025-02-08 09:51:51 +01:00
comedi comedi: Flush partial mappings in error case 2024-12-09 10:32:44 +01:00
connector
counter counter: ti-ecap-capture: Add check for clk_enable() 2024-12-09 10:32:37 +01:00
cpufreq cpufreq: s3c64xx: Fix compilation warning 2025-02-17 09:40:14 +01:00
cpuidle cpuidle: riscv-sbi: fix device node release in early exit of for_each_possible_cpu 2025-01-17 13:36:16 +01:00
crypto crypto: qce - unregister previously registered algos in error path 2025-02-17 09:40:35 +01:00
cxl cxl/region: Fix region creation for greater than x2 switches 2024-12-27 13:58:46 +01:00
dax dax: delete a stale directory pmem 2024-12-09 10:32:21 +01:00
dca
devfreq
dio
dma dmaengine: ti: edma: fix OF node reference leaks in edma_driver 2025-02-08 09:52:28 +01:00
dma-buf udmabuf: also check for F_SEAL_FUTURE_WRITE 2024-12-27 13:58:56 +01:00
edac EDAC/amd64: Simplify ECC check on unified memory controllers 2024-12-27 13:58:50 +01:00
eisa
extcon
firewire
firmware efi: Avoid cold plugged memory for placing the kernel 2025-02-21 13:57:17 +01:00
fpga
fsi
gnss
gpio gpiolib: Fix crash on error in gpiochip_get_ngpios() 2025-02-21 13:57:09 +01:00
gpu drm/amdgpu: avoid buffer overflow attach in smu_sys_set_pp_table() 2025-02-21 13:57:13 +01:00
greybus
hid HID: hid-thrustmaster: fix stack-out-of-bounds read in usb_check_int_endpoints() 2025-02-21 13:57:06 +01:00
hsi
hte
hv Drivers: hv: util: Avoid accessing a ringbuffer not initialized yet 2024-12-27 13:58:54 +01:00
hwmon hwmon: (drivetemp) Set scsi command timeout to 10s 2025-02-01 18:37:51 +01:00
hwspinlock
hwtracing
i2c i2c: Force ELAN06FA touchpad I2C bus freq to 100KHz 2025-02-17 09:40:08 +01:00
i3c i3c: master: Fix missing 'ret' assignment in set_speed() 2025-02-17 09:40:38 +01:00
idle
iio iio: light: as73211: fix channel handling in only-color triggered buffer 2025-02-17 09:40:32 +01:00
infiniband RDMA/efa: Reset device on probe failure 2025-02-21 13:57:09 +01:00
input Input: xpad - add support for wooting two he (arm) 2025-02-01 18:37:56 +01:00
interconnect
iommu iommu/arm-smmu-v3: Clean up more on probe failure 2025-02-17 09:40:09 +01:00
ipack
irqchip irqchip/apple-aic: Only handle PMC interrupt as FIQ when configured so 2025-02-17 09:40:38 +01:00
isdn
leds leds: lp8860: Write full EEPROM, not only half of it 2025-02-17 09:40:14 +01:00
macintosh
mailbox mailbox: tegra-hsp: Clear mailbox before using message 2025-02-17 09:40:38 +01:00
mcb
md dm-crypt: track tag_offset in convert_context 2025-02-17 09:40:25 +01:00
media media: vidtv: Fix a null-ptr-deref in vidtv_mux_stop_thread 2025-02-21 13:57:10 +01:00
memory memory: tegra20-emc: fix an OF node reference bug in tegra_emc_find_node_by_ram_code() 2025-02-08 09:52:14 +01:00
memstick
message scsi: fusion: Remove unused variable 'rc' 2024-12-09 10:32:18 +01:00
mfd mfd: lpc_ich: Add another Gemini Lake ISA bridge PCI device-id 2025-02-17 09:40:07 +01:00
misc misc: fastrpc: Fix copy buffer page size 2025-02-17 09:40:39 +01:00
mmc mmc: sdhci-msm: Correctly set the load for the regulator 2025-02-17 09:40:09 +01:00
most
mtd mtd: onenand: Fix uninitialized retlen in do_otp_read() 2025-02-17 09:40:38 +01:00
mux
net wifi: ath12k: fix handling of 6 GHz rules 2025-02-21 13:57:17 +01:00
nfc
ntb
nubus
nvdimm nvdimm: rectify the illogical code within nd_dax_probe() 2024-12-14 20:00:13 +01:00
nvme nvme-pci: Add TUXEDO IBP Gen9 to Samsung sleep quirk 2025-02-17 09:40:26 +01:00
nvmem nvmem: imx-ocotp-ele: set word length to 1 2025-02-17 09:40:36 +01:00
of of: reserved-memory: Fix using wrong number of cells to get property 'alignment' 2025-02-17 09:40:21 +01:00
opp OPP: OF: Fix an OF node leak in _opp_add_static_v2() 2025-02-08 09:51:55 +01:00
parisc
parport parport: Proper fix for array out-of-bounds access 2024-10-22 15:46:33 +02:00
pci PCI: switchtec: Add Microchip PCI100X device IDs 2025-02-21 13:57:11 +01:00
pcmcia
peci
perf perf/arm-cmn: Ensure port and device id bits are set properly 2024-12-09 10:32:57 +01:00
phy phy: rockchip: naneng-combphy: fix phy reset 2025-01-02 10:32:02 +01:00
pinctrl pinctrl: cy8c95x0: Respect IRQ trigger settings from firmware 2025-02-21 13:57:06 +01:00
platform platform/x86: acer-wmi: Ignore AC events 2025-02-17 09:40:10 +01:00
pmdomain pmdomain: imx8mp-blk-ctrl: add missing loop break condition 2025-01-23 17:21:17 +01:00
pnp
power power: supply: gpio-charger: Fix set charge current limits 2025-01-02 10:32:10 +01:00
powercap powercap: dtpm_devfreq: Fix error check against dev_pm_qos_add_request() 2024-11-01 01:58:31 +01:00
pps pps: Fix a use-after-free 2025-02-08 09:52:38 +01:00
ps3
ptp ptp: Ensure info->enable callback is always set 2025-02-17 09:40:41 +01:00
pwm pwm: microchip-core: fix incorrect comparison with max period 2025-02-17 09:40:31 +01:00
rapidio
ras
regulator regulator: core: Add missing newline character 2025-02-08 09:52:29 +01:00
remoteproc remoteproc: core: Fix ida_free call while not allocated 2025-02-08 09:52:37 +01:00
reset
rpmsg rpmsg: glink: use only lower 16-bits of param2 for CMD_OPEN name length 2024-12-09 10:32:29 +01:00
rtc rtc: zynqmp: Fix optional clock name property 2025-02-17 09:40:41 +01:00
s390 net/smc: compatible with 128-bits extended GID of virtual ISM device 2024-12-14 19:59:36 +01:00
sbus
scsi scsi: storvsc: Set correct data length for sending SCSI command without payload 2025-02-17 09:40:27 +01:00
sh sh: intc: Fix use-after-free bug in register_intc_controller() 2024-12-09 10:33:00 +01:00
siox
slimbus
soc soc/tegra: fuse: Update Tegra234 nvmem keepout list 2025-02-21 13:57:09 +01:00
soundwire
spi spi: sn-f-ospi: Fix division by zero 2025-02-21 13:57:06 +01:00
spmi
ssb
staging staging: media: max96712: fix kernel oops when removing module 2025-02-08 09:52:38 +01:00
target scsi: target: core: Fix null-ptr-deref in target_alloc_device() 2024-11-01 01:58:24 +01:00
tc
tee
thermal thermal: of: fix OF node leak in of_thermal_zone_find() 2025-01-17 13:36:18 +01:00
thunderbolt thunderbolt: Don't display nvm_version unless upgrade supported 2025-01-09 13:31:49 +01:00
tty tty: xilinx_uartps: split sysrq handling 2025-02-17 09:40:43 +01:00
ufs scsi: ufs: bsg: Set bsg_queue to NULL after removal 2025-02-21 13:57:11 +01:00
uio
usb USB: serial: option: drop MeiG Smart defines 2025-02-21 13:57:16 +01:00
vdpa vdpa/mlx5: Fix suboptimal range on iotlb iteration 2024-12-09 10:32:30 +01:00
vfio vfio/pci: Enable iowrite64 and ioread64 for vfio pci 2025-02-21 13:57:11 +01:00
vhost
video fbdev: omap: use threaded IRQ for LCD DMA 2025-02-21 13:57:09 +01:00
virt
virtio
vlynq
w1
watchdog watchdog: rti_wdt: Fix an OF node leak in rti_wdt_probe() 2025-02-08 09:52:25 +01:00
xen xen/swiotlb: relax alignment requirements 2025-02-21 13:57:08 +01:00
zorro
Kconfig
Makefile