linux-stable/include/linux
Harry Yoo 732e62212f mm: move page table sync declarations to linux/pgtable.h
commit 7cc183f2e6 upstream.

During our internal testing, we started observing intermittent boot
failures when the machine uses 4-level paging and has a large amount of
persistent memory:

  BUG: unable to handle page fault for address: ffffe70000000034
  #PF: supervisor write access in kernel mode
  #PF: error_code(0x0002) - not-present page
  PGD 0 P4D 0
  Oops: 0002 [#1] SMP NOPTI
  RIP: 0010:__init_single_page+0x9/0x6d
  Call Trace:
   <TASK>
   __init_zone_device_page+0x17/0x5d
   memmap_init_zone_device+0x154/0x1bb
   pagemap_range+0x2e0/0x40f
   memremap_pages+0x10b/0x2f0
   devm_memremap_pages+0x1e/0x60
   dev_dax_probe+0xce/0x2ec [device_dax]
   dax_bus_probe+0x6d/0xc9
   [... snip ...]
   </TASK>

It turns out that the kernel panics while initializing vmemmap (struct
page array) when the vmemmap region spans two PGD entries, because the new
PGD entry is only installed in init_mm.pgd, but not in the page tables of
other tasks.

And looking at __populate_section_memmap():
  if (vmemmap_can_optimize(altmap, pgmap))
          // does not sync top level page tables
          r = vmemmap_populate_compound_pages(pfn, start, end, nid, pgmap);
  else
          // sync top level page tables in x86
          r = vmemmap_populate(start, end, nid, altmap);

In the normal path, vmemmap_populate() in arch/x86/mm/init_64.c
synchronizes the top level page table (See commit 9b861528a8 ("x86-64,
mem: Update all PGDs for direct mapping and vmemmap mapping changes")) so
that all tasks in the system can see the new vmemmap area.

However, when vmemmap_can_optimize() returns true, the optimized path
skips synchronization of top-level page tables.  This is because
vmemmap_populate_compound_pages() is implemented in core MM code, which
does not handle synchronization of the top-level page tables.  Instead,
the core MM has historically relied on each architecture to perform this
synchronization manually.

We're not the first party to encounter a crash caused by not-sync'd top
level page tables: earlier this year, Gwan-gyeong Mun attempted to address
the issue [1] [2] after hitting a kernel panic when x86 code accessed the
vmemmap area before the corresponding top-level entries were synced.  At
that time, the issue was believed to be triggered only when struct page
was enlarged for debugging purposes, and the patch did not get further
updates.

It turns out that current approach of relying on each arch to handle the
page table sync manually is fragile because 1) it's easy to forget to sync
the top level page table, and 2) it's also easy to overlook that the
kernel should not access the vmemmap and direct mapping areas before the
sync.

# The solution: Make page table sync more code robust and harder to miss

To address this, Dave Hansen suggested [3] [4] introducing
{pgd,p4d}_populate_kernel() for updating kernel portion of the page tables
and allow each architecture to explicitly perform synchronization when
installing top-level entries.  With this approach, we no longer need to
worry about missing the sync step, reducing the risk of future
regressions.

The new interface reuses existing ARCH_PAGE_TABLE_SYNC_MASK,
PGTBL_P*D_MODIFIED and arch_sync_kernel_mappings() facility used by
vmalloc and ioremap to synchronize page tables.

pgd_populate_kernel() looks like this:
static inline void pgd_populate_kernel(unsigned long addr, pgd_t *pgd,
                                       p4d_t *p4d)
{
        pgd_populate(&init_mm, pgd, p4d);
        if (ARCH_PAGE_TABLE_SYNC_MASK & PGTBL_PGD_MODIFIED)
                arch_sync_kernel_mappings(addr, addr);
}

It is worth noting that vmalloc() and apply_to_range() carefully
synchronizes page tables by calling p*d_alloc_track() and
arch_sync_kernel_mappings(), and thus they are not affected by this patch
series.

This series was hugely inspired by Dave Hansen's suggestion and hence
added Suggested-by: Dave Hansen.

Cc stable because lack of this series opens the door to intermittent
boot failures.


This patch (of 3):

Move ARCH_PAGE_TABLE_SYNC_MASK and arch_sync_kernel_mappings() to
linux/pgtable.h so that they can be used outside of vmalloc and ioremap.

Link: https://lkml.kernel.org/r/20250818020206.4517-1-harry.yoo@oracle.com
Link: https://lkml.kernel.org/r/20250818020206.4517-2-harry.yoo@oracle.com
Link: https://lore.kernel.org/linux-mm/20250220064105.808339-1-gwan-gyeong.mun@intel.com [1]
Link: https://lore.kernel.org/linux-mm/20250311114420.240341-1-gwan-gyeong.mun@intel.com [2]
Link: https://lore.kernel.org/linux-mm/d1da214c-53d3-45ac-a8b6-51821c5416e4@intel.com [3]
Link: https://lore.kernel.org/linux-mm/4d800744-7b88-41aa-9979-b245e8bf794b@intel.com  [4]
Fixes: 8d400913c2 ("x86/vmemmap: handle unpopulated sub-pmd ranges")
Signed-off-by: Harry Yoo <harry.yoo@oracle.com>
Acked-by: Kiryl Shutsemau <kas@kernel.org>
Reviewed-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Reviewed-by: "Uladzislau Rezki (Sony)" <urezki@gmail.com>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Acked-by: David Hildenbrand <david@redhat.com>
Cc: Alexander Potapenko <glider@google.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Andrey Konovalov <andreyknvl@gmail.com>
Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com>
Cc: Andy Lutomirski <luto@kernel.org>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Ard Biesheuvel <ardb@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: bibo mao <maobibo@loongson.cn>
Cc: Borislav Betkov <bp@alien8.de>
Cc: Christoph Lameter (Ampere) <cl@gentwo.org>
Cc: Dennis Zhou <dennis@kernel.org>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Dmitriy Vyukov <dvyukov@google.com>
Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Jane Chu <jane.chu@oracle.com>
Cc: Joao Martins <joao.m.martins@oracle.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Kevin Brodsky <kevin.brodsky@arm.com>
Cc: Liam Howlett <liam.howlett@oracle.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Peter Xu <peterx@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Tejun Heo <tj@kernel.org>
Cc: Thomas Gleinxer <tglx@linutronix.de>
Cc: Thomas Huth <thuth@redhat.com>
Cc: Vincenzo Frascino <vincenzo.frascino@arm.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2025-09-09 18:50:21 +02:00
..
amba
atomic
avf
bcma
byteorder
can
ceph
clk
crush
decompress
device
dma
dsa
extcon
firmware
fpga
fsl
gpio
greybus
hsi
i3c
iio
input
irqchip
isdn
lockd
mailbox
mdio
mfd
mlx4 net/mlx4_core: Avoid impossible mlx4_db_alloc() order value 2025-06-04 14:38:02 +02:00
mlx5 net/mlx5e: Add support to klm_umr_wqe 2025-08-28 16:24:02 +02:00
mmc
mtd mtd: hyperbus: Make hyperbus_unregister_device() return void 2025-03-13 12:50:09 +01:00
mux
net/intel
netfilter
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
pcs
perf
phy
pinctrl
platform_data platform/chrome: cros_ec: Use per-device lockdep key 2025-08-28 16:24:32 +02:00
power
qed
raid
regulator regulator: gpio: Add input_supply support in gpio_regulator_config 2025-07-10 15:57:48 +02:00
remoteproc
reset
rpmsg
rtc
sched sched/task_stack: fix object_is_on_stack() for KASAN tagged pointers 2025-05-02 07:44:21 +02:00
soc soc: samsung: exynos-chipid: Pass revision reg offsets 2025-05-02 07:44:26 +02:00
soundwire
spi
ssb
sunrpc
surface_aggregator
ulpi
unaligned
usb net: usbnet: Avoid potential RCU stall on LINK_CHANGE event 2025-08-28 16:24:14 +02:00
8250_pci.h
a.out.h
acct.h
acpi_dma.h
acpi_iort.h
acpi_mdio.h
acpi_pmtmr.h
acpi_viot.h
acpi.h
adb.h
adfs_fs.h
adreno-smmu-priv.h
adxl.h
aer.h
agp_backend.h
agpgart.h
ahci_platform.h
ahci-remap.h
aio.h
alarmtimer.h
alcor_pci.h
align.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
anon_inodes.h
apm_bios.h
apm-emulation.h
apple_bl.h
apple-gmux.h
arch_topology.h
arm_ffa.h
arm_sdei.h firmware: SDEI: Allow sdei initialization without ACPI_APEI_GHES 2025-06-27 11:05:11 +01:00
arm-cci.h
arm-smccc.h
armada-37xx-rwtm-mailbox.h
ascii85.h
asn1_ber_bytecode.h
asn1_decoder.h
asn1_encoder.h
asn1.h
assoc_array_priv.h
assoc_array.h
async_tx.h
async.h
ata_platform.h
ata.h
atalk.h
ath9k_platform.h
atm_tcp.h
atm.h
atmdev.h atm: atmtcp: Prevent arbitrary write in atmtcp_recv_control(). 2025-09-04 14:28:45 +02:00
atmel_pdc.h
atmel-isc-media.h
atmel-mci.h
atmel-ssc.h
atomic.h
attribute_container.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auxiliary_bus.h
auxvec.h
average.h
backing-dev-defs.h
backing-dev.h writeback: fix false warning in inode_to_wb() 2025-05-02 07:44:11 +02:00
backlight.h
badblocks.h
balloon_compaction.h
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_sprom.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
binfmts.h coredump: hand a pidfd to the usermode coredump helper 2025-06-04 14:38:07 +02:00
bio.h
bit_spinlock.h
bitfield.h
bitmap.h lib: bitmap: Introduce node-aware alloc API 2025-08-28 16:24:02 +02:00
bitops.h
bitrev.h
bits.h
blk_types.h block: Make REQ_OP_ZONE_FINISH a write operation 2025-08-28 16:24:31 +02:00
blk-cgroup.h blk-cgroup: support to track if policy is online 2025-05-02 07:44:22 +02:00
blk-crypto.h
blk-mq-pci.h
blk-mq-rdma.h
blk-mq-virtio.h
blk-mq.h
blk-pm.h
blkdev.h
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootconfig.h
bootmem_info.h
bottom_half.h
bpf_lirc.h
bpf_local_storage.h
bpf_lsm.h
bpf_trace.h
bpf_types.h
bpf_verifier.h
bpf-cgroup.h bpf: Move cgroup iterator helpers to bpf.h 2025-09-09 18:50:17 +02:00
bpf-netns.h
bpf.h bpf: Fix oob access in cgroup local storage 2025-09-09 18:50:17 +02:00
bpfilter.h
bpfptr.h
brcmphy.h
bsearch.h
bsg-lib.h
bsg.h
btf_ids.h
btf.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h
bug.h
build_bug.h
build-salt.h
buildid.h
bvec.h
c2port.h
cache.h
cacheinfo.h
capability.h
cb710.h
cc_platform.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cfag12864b.h
cfi.h
cgroup_rdma.h
cgroup_subsys.h
cgroup-defs.h cgroup: fix race between fork and cgroup.kill 2025-03-13 12:50:40 +01:00
cgroup.h
circ_buf.h
cleancache.h
clk-provider.h
clk.h
clkdev.h
clockchips.h
clocksource_ids.h
clocksource.h
cm4000_cs.h
cma.h
cn_proc.h
cnt32_to_63.h
coda.h
compaction.h
compat.h
compiler_attributes.h
compiler_types.h
compiler-clang.h
compiler-gcc.h
compiler-intel.h
compiler-version.h
compiler.h compiler: remove __ADDRESSABLE_ASM{_STR,}() again 2025-08-28 16:24:37 +02:00
completion.h
component.h
configfs.h
connector.h
console_struct.h tty/vt: consolemap: rename and document struct uni_pagedir 2025-07-10 15:57:36 +02:00
console.h tty: vt: make consw::con_switch() return a bool 2025-07-10 15:57:37 +02:00
consolemap.h
const.h
container.h
context_tracking_state.h
context_tracking.h
cookie.h
cordic.h
coredump.h
coresight-pmu.h
coresight-stm.h
coresight.h
count_zeros.h
counter.h
cper.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpu.h x86/bugs: Add a Transient Scheduler Attacks mitigation 2025-07-10 15:57:50 +02:00
cpufeature.h
cpufreq.h
cpuhotplug.h
cpuidle_haltpoll.h
cpuidle.h
cpumask.h
cpuset.h mm/page_alloc: detect allocation forbidden by cpuset and bail out early 2025-08-28 16:24:37 +02:00
crash_core.h
crash_dump.h
crc4.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc32poly.h
crc64.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
cred.h
crypto.h
cs5535.h
ctype.h
cuda.h
damon.h
dasd_mod.h
davinci_emac.h
dax.h
dca.h
dcache.h
dccp.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
delayed_call.h
dev_printk.h
devcoredump.h
devfreq_cooling.h
devfreq-event.h
devfreq.h
device_cgroup.h
device-mapper.h
device.h
devm-helpers.h
devpts_fs.h
dfl.h
digsig.h
dim.h
dio.h
dirent.h
dlm_plock.h
dlm.h
dm9000.h
dm-bufio.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dma-buf-map.h
dma-buf.h
dma-direct.h
dma-direction.h
dma-fence-array.h
dma-fence-chain.h
dma-fence.h
dma-heap.h
dma-iommu.h
dma-map-ops.h
dma-mapping.h dma-mapping: avoid potential unused data compilation warning 2025-06-04 14:37:54 +02:00
dma-resv.h dma-buf: add dma_resv_for_each_fence_unlocked v8 2025-07-17 18:30:52 +02:00
dmaengine.h
dmapool.h
dmar.h
dmi.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
drbd_genl_api.h
drbd_genl.h
drbd_limits.h
drbd.h
ds2782_battery.h
dtlk.h
dtpm.h
dw_apb_timer.h
dynamic_debug.h
dynamic_queue_limits.h
earlycpio.h
ecryptfs.h
edac.h
edd.h
eeprom_93cx6.h
eeprom_93xx46.h
efi_embedded_fw.h
efi-bgrt.h
efi.h efi: Avoid cold plugged memory for placing the kernel 2025-03-13 12:50:40 +01:00
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote-lto.h
elfnote.h
enclosure.h
energy_model.h
entry-common.h
entry-kvm.h
err.h
errname.h
errno.h
error-injection.h
errqueue.h
errseq.h
etherdevice.h
ethtool_netlink.h
ethtool.h
eventfd.h
eventpoll.h
evm.h
export.h
exportfs.h
ext2_fs.h
extable.h
extcon-provider.h
extcon.h
f2fs_fs.h
f75375s.h
falloc.h
fanotify.h
fault-inject-usercopy.h
fault-inject.h
fb.h
fbcon.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h
fec.h
fiemap.h
file.h
fileattr.h
filter.h xdp: Reset bpf_redirect_info before running a xdp's BPF prog. 2025-05-02 07:44:39 +02:00
fips.h
firewire.h
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_proportions.h
font.h
fortify-string.h
freelist.h
freezer.h
frontswap.h
fs_context.h fs_context: fix parameter name in infofc() macro 2025-08-28 16:24:05 +02:00
fs_enet_pd.h
fs_parser.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_types.h
fs_uart_pd.h
fs.h mm: drop the assumption that VM_SHARED always implies writable 2025-08-28 16:24:30 +02:00
fscache-cache.h
fscache.h
fscrypt.h
fsi-occ.h
fsi-sbefifo.h
fsi.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsl-diu-fb.h
fsldma.h
fsnotify_backend.h
fsnotify.h
fsverity.h
ftrace_irq.h
ftrace.h
futex.h
fwnode_mdio.h
fwnode.h of: property: Increase NR_FWNODE_REFERENCE_ARGS 2025-04-10 14:31:59 +02:00
gameport.h
gcd.h
genalloc.h
generic-radix-tree.h
genetlink.h
genhd.h
genl_magic_func.h
genl_magic_struct.h
getcpu.h
gfp.h
glob.h
gnss.h
goldfish.h
gpio_keys.h
gpio-pxa.h
gpio.h
greybus.h
hardirq.h
hash.h
hashtable.h
hdlc.h
hdlcdrv.h
hdmi.h
hid-debug.h
hid-roccat.h
hid-sensor-hub.h
hid-sensor-ids.h
hid.h HID: usbhid: Eliminate recurrent out-of-bounds bug in usbhid_parse() 2025-06-27 11:05:34 +01:00
hidden.h
hiddev.h
hidraw.h
highmem-internal.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
hmm.h
host1x.h
hp_sdc.h
hpet.h
hrtimer_defs.h
hrtimer.h
htcpld.h
huge_mm.h
hugetlb_cgroup.h
hugetlb_inline.h
hugetlb.h mm/hugetlb: unshare page tables during VMA split, not before 2025-06-27 11:05:35 +01:00
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.h Drivers: hv: vmbus: Add utility function for querying ring size 2025-07-10 15:57:36 +02:00
hypervisor.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-dev.h
i2c-mux.h
i2c-smbus.h
i2c.h
i8042.h
i8253.h clockevents/drivers/i8253: Fix stop sequence for timer 0 2025-04-10 14:31:48 +02:00
icmp.h
icmpv6.h
idle_inject.h
idr.h
ieee80211.h
ieee802154.h
if_arp.h
if_bridge.h
if_eql.h
if_ether.h
if_fddi.h
if_hsr.h
if_link.h
if_ltalk.h
if_macvlan.h
if_phonet.h
if_pppol2tp.h
if_pppox.h
if_rmnet.h
if_tap.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h net: vlan: Replace BUG() with WARN_ON_ONCE() in vlan_dev_* stubs 2025-08-28 16:24:22 +02:00
igmp.h
ihex.h
ima.h
imx-media.h
in6.h
in.h
indirect_call_wrapper.h
inet_diag.h
inet.h
inetdevice.h
init_ohci1394_dma.h
init_syscalls.h
init_task.h
init.h
initrd.h
inotify.h
input.h
instrumentation.h
instrumented.h
integrity.h
intel_rapl.h
intel_th.h
intel-iommu.h
intel-ish-client-if.h
intel-svm.h
interconnect-provider.h
interconnect.h
interrupt.h lockdep: Don't disable interrupts on RT in disable_irq_nosync_lockdep.*() 2025-04-10 14:31:57 +02:00
interval_tree_generic.h
interval_tree.h
io_uring.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io-pgtable.h
io.h
ioam6_genl.h
ioam6_iptunnel.h
ioam6.h
ioasid.h
iocontext.h
iomap.h
iommu-helper.h
iommu.h
iopoll.h
ioport.h
ioprio.h
iova.h
ip.h
ipack.h
ipc_namespace.h
ipc.h
ipmi_smi.h
ipmi.h
ipv6_route.h
ipv6.h Revert "ipv6: save dontfrag in cork" 2025-07-10 15:57:42 +02:00
irq_poll.h
irq_sim.h
irq_work.h
irq.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h
irqflags.h
irqhandler.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h
iversion.h
jbd2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label_ratelimit.h
jump_label.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h module: Extend the preempt disabled section in dereference_symbol_descriptor(). 2025-03-13 12:50:10 +01:00
kasan-checks.h
kasan-tags.h
kasan.h
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h
kcore.h
kcov.h
kcsan-checks.h
kcsan.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
kernel_read_file.h
kernel_stat.h
kernel-page-flags.h
kernel.h
kernelcapi.h
kernfs.h
kexec.h
key-type.h
key.h
keyboard.h
keyctl.h
keyslot-manager.h
kfence.h
kfifo.h
kgdb.h
khugepaged.h
klist.h
kmemleak.h
kmod.h
kmsg_dump.h
kobj_map.h
kobject_ns.h
kobject.h
kprobes.h
kref.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h
kstrtox.h
kthread.h
ktime.h
kvm_dirty_ring.h
kvm_host.h KVM: Explicitly verify target vCPU is online in kvm_get_vcpu() 2025-03-13 12:50:24 +01:00
kvm_irqfd.h
kvm_para.h
kvm_types.h
l2tp.h
lantiq.h
lapb.h
latencytop.h
lcd.h
lcm.h
led-class-flash.h
led-class-multicolor.h
led-lm3530.h
leds-bd2802.h
leds-lp3944.h
leds-lp3952.h
leds-pca9532.h
leds-regulator.h
leds-ti-lmu-common.h
leds.h
libata.h
libfdt_env.h
libfdt.h
libgcc.h
libnvdimm.h
libps2.h
license.h
limits.h
linear_range.h
linkage.h
linkmode.h
linux_logo.h
lis3lv02d.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
list.h
litex.h
livepatch.h
llc.h
llist.h
local_lock_internal.h
local_lock.h
lockdep_types.h
lockdep.h
lockref.h
log2.h
logic_iomem.h
logic_pio.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hook_defs.h
lsm_hooks.h
lz4.h
lzo.h crypto: lzo - Fix compression buffer overrun 2025-06-04 14:37:58 +02:00
mailbox_client.h
mailbox_controller.h
maple.h
marvell_phy.h
math64.h
math.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mcb.h
mdev.h
mdio-bitbang.h
mdio-gpio.h
mdio-mux.h
mdio.h
mei_cl_bus.h
mem_encrypt.h
memblock.h memblock: drop memblock_free_early_nid() and memblock_free_early() 2025-03-13 12:50:07 +01:00
memcontrol.h
memfd.h mm: reinstate ability to map write-sealed memfd mappings read-only 2025-08-28 16:24:30 +02:00
memory_hotplug.h
memory.h
mempolicy.h
mempool.h
memregion.h
memremap.h
memstick.h
mhi.h
micrel_phy.h
microchipphy.h
migrate_mode.h
migrate.h
mii_timestamper.h
mii.h
min_heap.h
minmax.h
misc_cgroup.h
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm_inline.h
mm_types_task.h
mm_types.h mm: hugetlb: independent PMD page table shared count 2025-06-27 11:05:35 +01:00
mm.h mm: reinstate ability to map write-sealed memfd mappings read-only 2025-08-28 16:24:30 +02:00
mman.h
mmap_lock.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h mm/page_alloc: detect allocation forbidden by cpuset and bail out early 2025-08-28 16:24:37 +02:00
mnt_idmapping.h
mnt_namespace.h
mod_devicetable.h
module_signature.h
module.h x86/its: Use dynamic thunks for indirect branches 2025-05-22 14:08:24 +02:00
moduleloader.h
moduleparam.h module: Restore the moduleparam prefix length check 2025-08-28 16:24:11 +02:00
most.h
mount.h
moxtet.h
mpage.h
mpi.h
mpls_iptunnel.h
mpls.h
mroute6.h
mroute_base.h
mroute.h
msdos_fs.h
msdos_partition.h
msg.h
msi.h
mtio.h
mutex.h
mv643xx_eth.h
mv643xx_i2c.h
mv643xx.h
mvebu-pmsu.h
mxm-wmi.h
namei.h
nd.h
ndctl.h
net.h
netdev_features.h
netdevice.h net: Add non-RCU dev_getbyhwaddr() helper 2025-03-13 12:50:53 +01:00
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netfs.h
netlink.h
netpoll.h
nfs3.h
nfs4.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h
nfs_iostat.h
nfs_page.h NFS: Fix a race when updating an existing write 2025-09-04 14:28:44 +02:00
nfs_ssc.h
nfs_xdr.h
nfs.h nfs: add missing selections of CONFIG_CRC32 2025-05-02 07:44:12 +02:00
nfsacl.h
nitro_enclaves.h
nl802154.h
nls.h
nmi.h
node.h
nodemask.h
nospec.h
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb_transport.h
ntb.h
nubus.h
numa.h
nvme-fc-driver.h
nvme-fc.h
nvme-rdma.h
nvme-tcp.h
nvme.h
nvmem-consumer.h
nvmem-provider.h
nvram.h
objagg.h
objtool.h
of_address.h
of_clk.h
of_device.h
of_dma.h
of_fdt.h
of_gpio.h
of_graph.h
of_iommu.h
of_irq.h
of_mdio.h
of_net.h
of_pci.h
of_pdt.h
of_platform.h
of_reserved_mem.h
of.h
oid_registry.h
olpc-ec.h
omap-dma.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once_lite.h
once.h
oom.h
openvswitch.h
osq_lock.h
overflow.h
packing.h
padata.h
page_counter.h
page_ext.h
page_idle.h
page_owner.h
page_ref.h
page_reporting.h
page-flags-layout.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h
pagewalk.h
panic_notifier.h
panic.h
parman.h
parport_pc.h
parport.h
parser.h
part_stat.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci_hotplug.h
pci_ids.h can: ems_pci: move ASIX AX99100 ids to pci_ids.h 2025-03-13 12:50:45 +01:00
pci-acpi.h
pci-ats.h
pci-dma-compat.h
pci-ecam.h
pci-ep-cfs.h
pci-epc.h
pci-epf.h
pci-p2pdma.h
pci.h PCI/ACPI: Fix runtime PM ref imbalance on Hot-Plug Capable ports 2025-08-28 16:24:31 +02:00
pcs-lynx.h
pda_power.h
pe.h
percpu_counter.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h
perf_event.h
perf_regs.h
personality.h
pfn_t.h
pfn.h
pgtable.h mm: move page table sync declarations to linux/pgtable.h 2025-09-09 18:50:21 +02:00
phonet.h
phy_fixed.h
phy_led_triggers.h
phy.h
phylink.h
pid_namespace.h
pid.h pid: add pidfd_prepare() 2025-06-04 14:38:07 +02:00
pim.h
pipe_fs_i.h
pkeys.h
pktcdvd.h
pl320-ipc.h
platform_device.h
platform_profile.h
pldmfw.h
plist.h
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h PM: sleep: Adjust check before setting power.must_resume 2025-04-10 14:31:57 +02:00
pm_wakeirq.h
pm_wakeup.h
pm-trace.h
pm.h
pmbus.h
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h
poll.h
posix_acl_xattr.h
posix_acl.h
posix-clock.h
posix-timers.h
power_supply.h
powercap.h
ppp_channel.h
ppp_defs.h
ppp-comp.h
pps_kernel.h pps: fix poll support 2025-08-28 16:24:06 +02:00
pr.h
prandom.h
preempt.h
prefetch.h
prime_numbers.h
printk.h
prmt.h
proc_fs.h proc: fix UAF in proc_get_inode() 2025-04-10 14:31:55 +02:00
proc_ns.h
processor.h
profile.h
projid.h
property.h
pruss_driver.h
psci.h
pseudo_fs.h
psi_types.h
psi.h
psp-sev.h
psp-tee.h
pstore_blk.h
pstore_ram.h
pstore_zone.h
pstore.h
ptdump.h
pti.h
ptp_classify.h ptp: Add generic PTP is_sync() function 2025-09-09 18:50:20 +02:00
ptp_clock_kernel.h
ptp_kvm.h
ptp_pch.h
ptr_ring.h
ptrace.h
purgatory.h
pvclock_gtod.h
pwm_backlight.h
pwm.h
pxa2xx_ssp.h
pxa168_eth.h
qcom_scm.h
qcom-geni-se.h
qnx6_fs.h
quota.h
quotaops.h
radix-tree.h
raid_class.h
ramfs.h
random.h
randomize_kstack.h
range.h
ras.h
ratelimit_types.h
ratelimit.h
rational.h
rbtree_augmented.h
rbtree_latch.h
rbtree_types.h
rbtree.h
rcu_node_tree.h
rcu_segcblist.h
rcu_sync.h
rculist_bl.h
rculist_nulls.h
rculist.h
rcupdate_trace.h
rcupdate_wait.h
rcupdate.h rcu/kvfree: Add kvfree_rcu_mightsleep() and kfree_rcu_mightsleep() 2025-05-18 08:20:35 +02:00
rcutiny.h
rcutree.h rcu: fix header guard for rcu_all_qs() 2025-06-04 14:38:03 +02:00
rcuwait.h
reboot-mode.h
reboot.h
reciprocal_div.h
refcount.h
regmap.h
regset.h
relay.h
remoteproc.h
resctrl.h
reset-controller.h
reset.h
resource_ext.h
resource.h
restart_block.h
rfkill.h
rhashtable-types.h
rhashtable.h
ring_buffer.h
rio_drv.h
rio_ids.h
rio_regs.h
rio.h
rmap.h
rmi.h
rndis.h
rodata_test.h
root_dev.h
rpmsg.h
rslib.h
rtc.h
rtmutex.h
rtnetlink.h
rtsx_common.h
rtsx_pci.h
rtsx_usb.h
rwbase_rt.h
rwlock_api_smp.h
rwlock_rt.h
rwlock_types.h
rwlock.h
rwsem.h
s3c_adc_battery.h
sbitmap.h
scatterlist.h
scc.h
sched_clock.h
sched.h sched: Add wrapper for get_wchan() to keep task blocked 2025-08-28 16:24:03 +02:00
scmi_protocol.h
scpi_protocol.h
screen_info.h
scs.h
sctp.h
scx200_gpio.h
scx200.h
sdb.h
seccomp.h
secretmem.h
securebits.h
security.h
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
seg6.h
selection.h
sem.h
semaphore.h
seq_buf.h
seq_file_net.h
seq_file.h
seqlock.h
seqno-fence.h
serdev.h
serial_8250.h
serial_bcm63xx.h
serial_core.h
serial_max3100.h
serial_s3c.h
serial_sci.h
serial.h
serio.h
set_memory.h
sfp.h
sh_clk.h
sh_dma.h
sh_eth.h
sh_intc.h
sh_timer.h
shdma-base.h
shm.h
shmem_fs.h
shrinker.h
signal_types.h
signal.h
signalfd.h
siox.h
siphash.h
sizes.h
skb_array.h
skbuff.h netmem: fix skb_frag_address_safe with unreadable skbs 2025-08-28 16:24:21 +02:00
skmsg.h
slab_def.h
slab.h slab: Introduce kmalloc_size_roundup() 2025-04-10 14:31:49 +02:00
slimbus.h
slub_def.h
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp_types.h
smp.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h
sockptr.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_rt.h
spinlock_types_raw.h
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h
splice.h
spmi.h
sram.h
srcu.h
srcutiny.h
srcutree.h
ssbi.h
stackdepot.h
stackleak.h
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_call_types.h
static_call.h
static_key.h
stdarg.h
stddef.h
stm.h
stmmac.h
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string_helpers.h
string.h
stringhash.h
stringify.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
surface_acpi_notify.h
suspend.h
svga.h
sw842.h
swab.h
swait.h
swap_cgroup.h
swap_slots.h
swap.h
swapfile.h
swapops.h
swiotlb.h
switchtec.h
sxgbe_platform.h
sync_core.h
sync_file.h
synclink.h
sys_soc.h
sys.h
syscall_user_dispatch.h
syscalls.h
syscore_ops.h
sysctl.h
sysfb.h
sysfs.h
syslog.h
sysrq.h
sysv_fs.h
t10-pi.h
task_io_accounting_ops.h
task_io_accounting.h
task_work.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h
tee_drv.h
textsearch_fsm.h
textsearch.h
tfrc.h
thermal.h
thread_info.h
threads.h
thunderbolt.h
ti_wilink_st.h
ti-emif-sram.h
tick.h
tifm.h
timb_dma.h
timb_gpio.h
time32.h
time64.h
time_namespace.h
time.h
timecounter.h
timekeeper_internal.h
timekeeping.h
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
timex.h
tnum.h
topology.h
torture.h
toshiba.h
tpm_command.h
tpm_eventlog.h
tpm.h tpm: tis: Double the timeout B to 4s 2025-06-04 14:38:08 +02:00
trace_clock.h
trace_events.h
trace_recursion.h
trace_seq.h tracing: Mark binary printing functions with __printf() attribute 2025-06-04 14:37:54 +02:00
trace.h tracing: Mark binary printing functions with __printf() attribute 2025-06-04 14:37:54 +02:00
tracefs.h
tracehook.h
tracepoint-defs.h
tracepoint.h
transport_class.h
ts-nbus.h
tsacct_kern.h
tty_buffer.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty_port.h
tty.h
typecheck.h
types.h types: Complement the aligned types with signed 64-bit one 2025-05-18 08:20:38 +02:00
u64_stats_sync.h
uacce.h
uaccess.h
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uio_driver.h
uio.h
umh.h
unicode.h
units.h
uprobes.h
usb_usual.h
usb.h
usbdevice_fs.h
user_namespace.h
user-return-notifier.h
user.h
userfaultfd_k.h
usermode_driver.h
util_macros.h
uts.h
utsname.h
uuid.h
vbox_utils.h
vdpa.h
verification.h
vermagic.h
vexpress.h
vfio_pci_core.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
vhost_iotlb.h
via_i2c.h
via-core.h
via-gpio.h
via.h
videodev2.h
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_dma_buf.h
virtio_net.h
virtio_pci_modern.h
virtio_ring.h
virtio_vsock.h
virtio.h
visorbus.h
vlynq.h
vm_event_item.h
vmacache.h
vmalloc.h mm: move page table sync declarations to linux/pgtable.h 2025-09-09 18:50:21 +02:00
vme.h
vmpressure.h
vmstat.h
vmw_vmci_api.h
vmw_vmci_defs.h
vringh.h
vt_buffer.h
vt_kern.h
vt.h
vtime.h
w1-gpio.h
w1.h
wait_bit.h
wait.h
watch_queue.h
watchdog.h
win_minmax.h
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
wmi.h
workqueue.h
writeback.h
ww_mutex.h
wwan.h
xarray.h XArray: Add calls to might_alloc() 2025-08-28 16:24:13 +02:00
xattr.h
xxhash.h
xz.h
yam.h
z2_battery.h
zconf.h
zlib.h
zorro.h
zpool.h
zsmalloc.h
zstd.h
zutil.h