mirror-linux/include/linux
Daniel Borkmann e420bed025 bpf: Add fd-based tcx multi-prog infra with link support
This work refactors and adds a lightweight extension ("tcx") to the tc BPF
ingress and egress data path side for allowing BPF program management based
on fds via bpf() syscall through the newly added generic multi-prog API.
The main goal behind this work which we also presented at LPC [0] last year
and a recent update at LSF/MM/BPF this year [3] is to support long-awaited
BPF link functionality for tc BPF programs, which allows for a model of safe
ownership and program detachment.

Given the rise in tc BPF users in cloud native environments, this becomes
necessary to avoid hard to debug incidents either through stale leftover
programs or 3rd party applications accidentally stepping on each others toes.
As a recap, a BPF link represents the attachment of a BPF program to a BPF
hook point. The BPF link holds a single reference to keep BPF program alive.
Moreover, hook points do not reference a BPF link, only the application's
fd or pinning does. A BPF link holds meta-data specific to attachment and
implements operations for link creation, (atomic) BPF program update,
detachment and introspection. The motivation for BPF links for tc BPF programs
is multi-fold, for example:

  - From Meta: "It's especially important for applications that are deployed
    fleet-wide and that don't "control" hosts they are deployed to. If such
    application crashes and no one notices and does anything about that, BPF
    program will keep running draining resources or even just, say, dropping
    packets. We at FB had outages due to such permanent BPF attachment
    semantics. With fd-based BPF link we are getting a framework, which allows
    safe, auto-detachable behavior by default, unless application explicitly
    opts in by pinning the BPF link." [1]

  - From Cilium-side the tc BPF programs we attach to host-facing veth devices
    and phys devices build the core datapath for Kubernetes Pods, and they
    implement forwarding, load-balancing, policy, EDT-management, etc, within
    BPF. Currently there is no concept of 'safe' ownership, e.g. we've recently
    experienced hard-to-debug issues in a user's staging environment where
    another Kubernetes application using tc BPF attached to the same prio/handle
    of cls_bpf, accidentally wiping all Cilium-based BPF programs from underneath
    it. The goal is to establish a clear/safe ownership model via links which
    cannot accidentally be overridden. [0,2]

BPF links for tc can co-exist with non-link attachments, and the semantics are
in line also with XDP links: BPF links cannot replace other BPF links, BPF
links cannot replace non-BPF links, non-BPF links cannot replace BPF links and
lastly only non-BPF links can replace non-BPF links. In case of Cilium, this
would solve mentioned issue of safe ownership model as 3rd party applications
would not be able to accidentally wipe Cilium programs, even if they are not
BPF link aware.

Earlier attempts [4] have tried to integrate BPF links into core tc machinery
to solve cls_bpf, which has been intrusive to the generic tc kernel API with
extensions only specific to cls_bpf and suboptimal/complex since cls_bpf could
be wiped from the qdisc also. Locking a tc BPF program in place this way, is
getting into layering hacks given the two object models are vastly different.

We instead implemented the tcx (tc 'express') layer which is an fd-based tc BPF
attach API, so that the BPF link implementation blends in naturally similar to
other link types which are fd-based and without the need for changing core tc
internal APIs. BPF programs for tc can then be successively migrated from classic
cls_bpf to the new tc BPF link without needing to change the program's source
code, just the BPF loader mechanics for attaching is sufficient.

For the current tc framework, there is no change in behavior with this change
and neither does this change touch on tc core kernel APIs. The gist of this
patch is that the ingress and egress hook have a lightweight, qdisc-less
extension for BPF to attach its tc BPF programs, in other words, a minimal
entry point for tc BPF. The name tcx has been suggested from discussion of
earlier revisions of this work as a good fit, and to more easily differ between
the classic cls_bpf attachment and the fd-based one.

For the ingress and egress tcx points, the device holds a cache-friendly array
with program pointers which is separated from control plane (slow-path) data.
Earlier versions of this work used priority to determine ordering and expression
of dependencies similar as with classic tc, but it was challenged that for
something more future-proof a better user experience is required. Hence this
resulted in the design and development of the generic attach/detach/query API
for multi-progs. See prior patch with its discussion on the API design. tcx is
the first user and later we plan to integrate also others, for example, one
candidate is multi-prog support for XDP which would benefit and have the same
'look and feel' from API perspective.

The goal with tcx is to have maximum compatibility to existing tc BPF programs,
so they don't need to be rewritten specifically. Compatibility to call into
classic tcf_classify() is also provided in order to allow successive migration
or both to cleanly co-exist where needed given its all one logical tc layer and
the tcx plus classic tc cls/act build one logical overall processing pipeline.

tcx supports the simplified return codes TCX_NEXT which is non-terminating (go
to next program) and terminating ones with TCX_PASS, TCX_DROP, TCX_REDIRECT.
The fd-based API is behind a static key, so that when unused the code is also
not entered. The struct tcx_entry's program array is currently static, but
could be made dynamic if necessary at a point in future. The a/b pair swap
design has been chosen so that for detachment there are no allocations which
otherwise could fail.

The work has been tested with tc-testing selftest suite which all passes, as
well as the tc BPF tests from the BPF CI, and also with Cilium's L4LB.

Thanks also to Nikolay Aleksandrov and Martin Lau for in-depth early reviews
of this work.

  [0] https://lpc.events/event/16/contributions/1353/
  [1] https://lore.kernel.org/bpf/CAEf4BzbokCJN33Nw_kg82sO=xppXnKWEncGTWCTB9vGCmLB6pw@mail.gmail.com
  [2] https://colocatedeventseu2023.sched.com/event/1Jo6O/tales-from-an-ebpf-programs-murder-mystery-hemanth-malla-guillaume-fournier-datadog
  [3] http://vger.kernel.org/bpfconf2023_material/tcx_meta_netdev_borkmann.pdf
  [4] https://lore.kernel.org/bpf/20210604063116.234316-1-memxor@gmail.com

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Link: https://lore.kernel.org/r/20230719140858.13224-3-daniel@iogearbox.net
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
2023-07-19 10:07:27 -07:00
..
amba
atomic
avf
bcma
byteorder
can can: length: refactor frame lengths definition to add size in bits 2023-06-22 09:43:40 +02:00
cdx
ceph
clk
comedi
crush
decompress
device for-6.5/block-2023-06-23 2023-06-26 12:47:20 -07:00
dma
dsa net: dsa: sja1105: always enable the send_meta options 2023-07-04 19:42:27 +01:00
extcon
firmware
fpga
fsl
gpio gpio updates for v6.5 2023-06-29 10:11:10 -07:00
greybus
hsi
i3c
iio Char/Misc and other driver subsystem updates for 6.5-rc1 2023-07-03 12:46:47 -07:00
input
irqchip ARM updates for v6.5-rc1 2023-06-26 17:07:53 -07:00
isdn
lockd NFS: add a sysfs link to the lockd rpc_client 2023-06-19 15:06:07 -04:00
mailbox
mdio
mfd - New Drivers 2023-07-03 10:55:04 -07:00
mlx4
mlx5 v6.5 merge window RDMA pull request 2023-06-29 21:01:17 -07:00
mmc Networking changes for 6.5. 2023-06-28 16:43:10 -07:00
mtd
mux
net/intel
netfilter
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
pcs net: pcs: xpcs: update PCS driver to use neg_mode 2023-06-22 19:41:01 -07:00
pds pds_vdpa: new adminq entries 2023-06-27 10:47:08 -04:00
perf - Arnd Bergmann has fixed a bunch of -Wmissing-prototypes in 2023-06-28 10:59:38 -07:00
phy
pinctrl
platform_data dmaengine updates for v6.5 2023-07-06 09:48:31 -07:00
power
pse-pd
qed
raid
regulator regulator: Updates for v6.5 2023-06-28 13:32:47 -07:00
remoteproc
reset
rpmsg
rtc
sched Scope-based Resource Management infrastructure 2023-07-04 13:50:38 -07:00
soc ARM: SoC changes for 6.5 2023-06-29 15:28:33 -07:00
soundwire soundwire: bus: Prevent lockdep asserts when stream has multiple buses 2023-06-21 16:31:44 +05:30
spi gpio updates for v6.5 2023-06-29 10:11:10 -07:00
ssb
sunrpc NFS client updates for Linux 6.5 2023-07-01 14:38:25 -07:00
surface_aggregator
ulpi usb: ulpi: Make container_of() no-op in to_ulpi_dev() 2023-06-22 08:59:56 +02:00
unaligned
usb USB / Thunderbolt driver updates for 6.5-rc1 2023-07-03 13:23:10 -07:00
8250_pci.h
acct.h
acpi.h More ACPI updates for 6.5-rc1 2023-07-06 22:25:06 -07:00
acpi_dma.h
acpi_iort.h arm64 updates for 6.5: 2023-06-26 17:11:53 -07:00
acpi_mdio.h
acpi_pmtmr.h
acpi_viot.h
adb.h
adfs_fs.h
adreno-smmu-priv.h
adxl.h
aer.h
agp_backend.h
agpgart.h
ahci-remap.h
ahci_platform.h
aio.h
alarmtimer.h
alcor_pci.h
align.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amd-pstate.h cpufreq: amd-pstate: Add a kernel config option to set default mode 2023-06-21 18:44:56 +02:00
anon_inodes.h
aperture.h
apm-emulation.h
apm_bios.h
apple-gmux.h
apple-mailbox.h
arch_topology.h
arm-cci.h
arm-smccc.h
arm_ffa.h KVM/arm64 updates for 6.5 2023-07-01 07:04:29 -04:00
arm_sdei.h
armada-37xx-rwtm-mailbox.h
ascii85.h
asn1.h
asn1_ber_bytecode.h
asn1_decoder.h
asn1_encoder.h
assoc_array.h
assoc_array_priv.h
async.h
async_tx.h
ata.h
ata_platform.h
atalk.h
ath9k_platform.h
atm.h
atm_tcp.h
atmdev.h
atmel-isc-media.h
atmel-mci.h
atmel-ssc.h
atmel_pdc.h
atomic.h
attribute_container.h
audit.h
audit_arch.h
auto_dev-ioctl.h
auto_fs.h
auxiliary_bus.h
auxvec.h
average.h
backing-dev-defs.h
backing-dev.h
backlight.h
badblocks.h
balloon_compaction.h
base64.h
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_sprom.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
binfmts.h
bio.h
bit_spinlock.h
bitfield.h
bitmap.h lib/bitmap: drop optimization of bitmap_{from,to}_arr64 2023-06-22 13:57:41 -07:00
bitops.h
bitrev.h
bits.h
blk-cgroup.h
blk-crypto-profile.h
blk-crypto.h
blk-integrity.h
blk-mq-pci.h
blk-mq-virtio.h
blk-mq.h block: add request polling helper 2023-06-28 16:09:41 -06:00
blk-pm.h
blk_types.h SCSI misc on 20230629 2023-06-30 11:57:07 -07:00
blkdev.h for-6.5/block-2023-06-23 2023-06-26 12:47:20 -07:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootconfig.h
bootmem_info.h bootmem: remove the vmemmap pages from kmemleak in free_bootmem_page 2023-07-08 09:29:31 -07:00
bottom_half.h
bpf-cgroup-defs.h
bpf-cgroup.h bpf, net: Check skb ownership against full socket. 2023-06-30 16:04:05 +02:00
bpf-netns.h
bpf.h bpf: Add 'owner' field to bpf_{list,rb}_node 2023-07-18 17:23:10 -07:00
bpf_lirc.h
bpf_local_storage.h
bpf_lsm.h
bpf_mem_alloc.h bpf: Introduce bpf_mem_free_rcu() similar to kfree_rcu(). 2023-07-12 23:45:23 +02:00
bpf_mprog.h bpf: Add fd-based tcx multi-prog infra with link support 2023-07-19 10:07:27 -07:00
bpf_trace.h
bpf_types.h
bpf_verifier.h
bpfilter.h
bpfptr.h
brcmphy.h net: phy: bcm7xxx: Add EPHY entry for 74165 2023-07-17 07:39:04 +01:00
bsearch.h
bsg-lib.h
bsg.h
btf.h
btf_ids.h bpf: consider CONST_PTR_TO_MAP as trusted pointer to struct bpf_map 2023-07-19 09:48:52 -07:00
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h \n 2023-06-29 13:39:51 -07:00
bug.h
build-salt.h
build_bug.h
buildid.h
bvec.h
c2port.h
cache.h mm/slab: decouple ARCH_KMALLOC_MINALIGN from ARCH_DMA_MINALIGN 2023-06-19 16:19:20 -07:00
cacheflush.h
cacheinfo.h
capability.h
cb710.h
cc_platform.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cfag12864b.h
cfi.h
cfi_types.h
cgroup-defs.h
cgroup.h - Yosry Ahmed brought back some cgroup v1 stats in OOM logs. 2023-06-28 10:28:11 -07:00
cgroup_api.h
cgroup_rdma.h
cgroup_refcnt.h
cgroup_subsys.h
circ_buf.h
cleanup.h locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
clk-provider.h Merge branches 'clk-imx', 'clk-microchip', 'clk-cleanup', 'clk-bindings', 'clk-ti' and 'clk-kasprintf' into clk-next 2023-06-26 08:55:22 -07:00
clk.h
clkdev.h
clockchips.h
clocksource.h
clocksource_ids.h
cma.h
cn_proc.h
cnt32_to_63.h
coda.h
compaction.h mm: compaction: mark kcompactd_run() and kcompactd_stop() __meminit 2023-06-19 16:19:28 -07:00
compat.h syscalls: Remove file path comments from headers 2023-06-22 17:10:09 +02:00
compiler-clang.h locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
compiler-gcc.h
compiler-version.h
compiler.h
compiler_attributes.h Scope-based Resource Management infrastructure 2023-07-04 13:50:38 -07:00
compiler_types.h
completion.h
component.h
configfs.h
connector.h
console.h
console_struct.h
consolemap.h
const.h
container.h
container_of.h
context_tracking.h
context_tracking_irq.h
context_tracking_state.h
cookie.h
cordic.h
coredump.h
coresight-pmu.h
coresight-stm.h
coresight.h
count_zeros.h
counter.h
cper.h
cpu.h A large update for SMP management: 2023-06-26 13:59:56 -07:00
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpufeature.h
cpufreq.h
cpuhotplug.h A large update for SMP management: 2023-06-26 13:59:56 -07:00
cpuidle.h
cpuidle_haltpoll.h
cpumask.h
cpumask_api.h
cpuset.h
crash_core.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc4.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc32poly.h
crc64.h
cred.h
crypto.h crypto: sig - Add interface for sign/verify 2023-06-23 16:15:36 +08:00
cs5535.h
ctype.h
cuda.h
damon.h
dasd_mod.h
davinci_emac.h
dax.h dax: enable dax fault handler to report VM_FAULT_HWPOISON 2023-06-26 07:54:23 -06:00
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-event.h
devfreq.h
devfreq_cooling.h
device-mapper.h
device.h Scope-based Resource Management infrastructure 2023-07-04 13:50:38 -07:00
device_cgroup.h
devm-helpers.h
devpts_fs.h
dfl.h
digsig.h
dim.h
dio.h
dirent.h
dlm.h
dlm_plock.h
dm-bufio.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dm-verity-loadpin.h
dm9000.h
dma-buf.h
dma-direct.h
dma-direction.h
dma-fence-array.h
dma-fence-chain.h
dma-fence-unwrap.h
dma-fence.h
dma-heap.h
dma-map-ops.h dma-mapping: force bouncing if the kmalloc() size is not cache-line-aligned 2023-06-19 16:19:23 -07:00
dma-mapping.h dma: allow dma_get_cache_alignment() to be overridden by the arch code 2023-06-19 16:19:20 -07:00
dma-resv.h
dmaengine.h
dmapool.h
dmar.h
dmi.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
drbd.h
drbd_config.h
drbd_genl.h
drbd_genl_api.h
drbd_limits.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-bgrt.h
efi.h EFI updates for v6.5 2023-06-30 21:35:52 -07:00
efi_embedded_fw.h
efs_vh.h
eisa.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.h
ethtool_netlink.h
eventfd.h
eventpoll.h
evm.h
export-internal.h kbuild: generate KSYMTAB entries by modpost 2023-06-22 21:17:10 +09:00
export.h linux/export.h: rename 'sec' argument to 'license' 2023-06-22 21:21:06 +09:00
exportfs.h
ext2_fs.h
extable.h
extcon-provider.h
extcon.h
f2fs_fs.h f2fs: fix to do sanity check on direct node in truncate_dnode() 2023-06-30 16:38:27 -07:00
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 locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
fileattr.h
filelock.h
filter.h
find.h
fips.h
firewire.h firewire updates for 6.5-rc1 2023-07-04 11:02:34 -07:00
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_proportions.h
font.h
fortify-string.h
fprobe.h
freelist.h
freezer.h
frontswap.h mm: zswap: support exclusive loads 2023-06-19 16:19:05 -07:00
fs.h \n 2023-06-29 13:39:51 -07:00
fs_api.h
fs_context.h
fs_enet_pd.h
fs_parser.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_types.h
fs_uart_pd.h
fscache-cache.h
fscache.h
fscrypt.h
fsi-occ.h
fsi-sbefifo.h
fsi.h
fsl-diu-fb.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsldma.h
fsnotify.h ovl: enable fsnotify events on underlying real files 2023-06-19 18:18:04 +02:00
fsnotify_backend.h
fsverity.h
ftrace.h tracing: arm64: Avoid missing-prototype warnings 2023-07-12 12:06:04 -04:00
ftrace_irq.h
futex.h
fwnode.h
fwnode_mdio.h
gameport.h
gcd.h
genalloc.h
generic-radix-tree.h
genetlink.h
genl_magic_func.h
genl_magic_struct.h
getcpu.h
gfp.h
gfp_api.h
gfp_types.h
glob.h
gnss.h
goldfish.h
gpio-pxa.h
gpio.h
gpio_keys.h
greybus.h
group_cpus.h
hardirq.h
hash.h
hashtable.h
hashtable_api.h
hdlc.h
hdlcdrv.h
hdmi.h video/hdmi: Reorder fields in 'struct hdmi_avi_infoframe' 2023-06-19 09:02:51 +02:00
hex.h
hid-debug.h
hid-roccat.h
hid-sensor-hub.h
hid-sensor-ids.h
hid.h
hid_bpf.h
hidden.h
hiddev.h
hidraw.h
highmem-internal.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hisi_acc_qm.h
hmm.h
host1x.h
host1x_context_bus.h
hp_sdc.h
hpet.h
hrtimer.h
hrtimer_api.h
hrtimer_defs.h
hte.h
huge_mm.h
hugetlb.h mm/hugetlb: remove hugetlb_set_page_subpool() 2023-06-23 16:59:33 -07:00
hugetlb_cgroup.h
hugetlb_inline.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.h
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
i8254.h
icmp.h
icmpv6.h ipv6: Constify the sk parameter of several helper functions. 2023-07-14 08:27:33 +01:00
idle_inject.h
idr.h
ieee80211.h wifi: ieee80211: fix erroneous NSTR bitmap size checks 2023-06-22 19:52:09 +02:00
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
igmp.h
ihex.h
ima.h
imx-media.h
in.h
in6.h
indirect_call_wrapper.h
inet.h
inet_diag.h
inetdevice.h
init.h x86/mem_encrypt: Remove stale mem_encrypt_init() declaration 2023-06-28 12:47:30 -07:00
init_ohci1394_dma.h
init_syscalls.h
init_task.h
initrd.h
inotify.h
input.h
instruction_pointer.h
instrumentation.h
instrumented.h
integrity.h
intel-ish-client-if.h
intel_rapl.h
intel_tcc.h
intel_th.h
intel_tpmi.h
interconnect-clk.h
interconnect-provider.h
interconnect.h
interrupt.h
interval_tree.h
interval_tree_generic.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io-pgtable.h
io.h
io_uring.h
io_uring_types.h
ioam6.h
ioam6_genl.h
ioam6_iptunnel.h
iocontext.h
iomap.h
iommu-helper.h
iommu.h
iommufd.h
iopoll.h
ioport.h
ioprio.h
iosys-map.h
iova.h
iova_bitmap.h
ip.h
ipack.h
ipc.h
ipc_namespace.h
ipmi.h
ipmi_smi.h
ipv6.h
ipv6_route.h
irq.h
irq_poll.h
irq_sim.h
irq_work.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h
irqdomain_defs.h
irqflags.h locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
irqhandler.h
irqnr.h
irqreturn.h
isa-dma.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h iscsi_ibft: Fix finding the iBFT under Xen Dom 0 2023-06-26 07:47:11 +02:00
ism.h s390/ism: Fix and simplify add()/remove() callback handling 2023-07-08 10:07:14 +01:00
iversion.h
jbd2.h jbd2: continue to record log between each mount 2023-06-26 19:35:13 -04:00
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label.h
jump_label_ratelimit.h
jz4740-adc.h
jz4780-nemc.h
kallsyms.h
kasan-checks.h
kasan-enabled.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 kdb: move kdb_send_sig() declaration to a better header file 2023-07-03 09:27:12 +01:00
kdebug.h
kdev_t.h
kern_levels.h
kernel-page-flags.h
kernel.h
kernel_read_file.h
kernel_stat.h
kernelcapi.h
kernfs.h
kexec.h
key-type.h
key.h
keyboard.h
keyctl.h
kfence.h
kfifo.h
kgdb.h kgdb: Provide a stub kgdb_nmicallback() if !CONFIG_KGDB 2023-06-29 15:06:32 +01:00
khugepaged.h
klist.h
kmemleak.h
kmod.h
kmsan-checks.h
kmsan.h
kmsan_string.h
kmsan_types.h
kmsg_dump.h
kobj_map.h
kobject.h
kobject_api.h
kobject_ns.h
kprobes.h
kref.h
kref_api.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h
kstrtox.h
kthread.h
ktime.h
ktime_api.h
kvm_dirty_ring.h
kvm_host.h KVM VMX changes for 6.5: 2023-07-01 07:20:04 -04: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 - New Drivers 2023-07-03 11:26:05 -07:00
libata.h SCSI misc on 20230629 2023-06-30 11:57:07 -07:00
libfdt.h
libfdt_env.h
libgcc.h
libnvdimm.h
libps2.h
license.h
limits.h
linear_range.h
linkage.h
linkmode.h
linux_logo.h
lis3lv02d.h
list.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
litex.h
livepatch.h
livepatch_sched.h
llc.h
llist.h
llist_api.h
local_lock.h
local_lock_internal.h
lockdep.h Locking changes for v6.5: 2023-06-27 14:14:30 -07:00
lockdep_api.h
lockdep_types.h Locking changes for v6.5: 2023-06-27 14:14:30 -07:00
lockref.h
log2.h
logic_iomem.h
logic_pio.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hook_defs.h security: Constify sk in the sk_getsecid hook. 2023-07-14 08:27:33 +01:00
lsm_hooks.h
lz4.h
lzo.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mailbox_client.h
mailbox_controller.h
map_benchmark.h
maple.h
maple_tree.h
marvell_phy.h
math.h
math64.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mcb.h
mdev.h
mdio-bitbang.h
mdio-gpio.h
mdio-mux.h
mdio.h net: mdio: add unlocked mdiobus and mdiodev bus accessors 2023-07-14 08:51:48 +01:00
mei_aux.h
mei_cl_bus.h
mem_encrypt.h
memblock.h mm/memory_hotplug: remove reset_node_managed_pages() in hotadd_init_pgdat() 2023-06-19 16:19:05 -07:00
memcontrol.h mm/memcg: remove return value of mem_cgroup_scan_tasks() 2023-06-19 16:19:35 -07:00
memfd.h
memory-tiers.h
memory.h
memory_hotplug.h mm/sparse: remove unused parameters in sparse_remove_section() 2023-06-19 16:19:04 -07:00
mempolicy.h
mempool.h
memregion.h
memremap.h
memstick.h
mhi.h
mhi_ep.h
micrel_phy.h
microchipphy.h
migrate.h mm/migrate: remove cruft from migration_entry_wait()s 2023-06-19 16:19:12 -07:00
migrate_mode.h
mii.h
mii_timestamper.h
min_heap.h
minmax.h
misc_cgroup.h
miscdevice.h
mm.h execve: always mark stack as growing down during early stack setup 2023-07-03 09:50:57 -07:00
mm_api.h
mm_inline.h mm: kill [add|del]_page_to_lru_list() 2023-06-23 16:59:31 -07:00
mm_types.h mm: move mm_count into its own cache line 2023-06-19 16:19:35 -07:00
mm_types_task.h
mman.h
mmap_lock.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h - Yosry Ahmed brought back some cgroup v1 stats in OOM logs. 2023-06-28 10:28:11 -07:00
mnt_idmapping.h
mnt_namespace.h
mod_devicetable.h driver core changes for 6.5-rc1 2023-07-03 12:56:23 -07:00
module.h
module_signature.h
module_symbol.h
moduleloader.h
moduleparam.h
most.h
mount.h - Arnd Bergmann has fixed a bunch of -Wmissing-prototypes in 2023-06-28 10:59:38 -07:00
moxtet.h
mpage.h
mpi.h
mpls.h
mpls_iptunnel.h
mroute.h net: remove sk_is_ipmr() and sk_is_icmpv6() helpers 2023-06-20 20:18:39 -07:00
mroute6.h ipv6: fix a typo in ip6mr_sk_ioctl() 2023-06-20 20:17:10 -07:00
mroute_base.h
msdos_fs.h
msdos_partition.h
msg.h
msi.h
msi_api.h
mtio.h
mutex.h locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
mutex_api.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
mvebu-pmsu.h
mxm-wmi.h
namei.h
nd.h
ndctl.h
net.h sock: Remove ->sendpage*() in favour of sendmsg(MSG_SPLICE_PAGES) 2023-06-24 15:50:13 -07:00
net_mm.h
net_tstamp.h
netdev_features.h
netdevice.h bpf: Add fd-based tcx multi-prog infra with link support 2023-07-19 10:07:27 -07:00
netfilter.h linux/netfilter.h: fix kernel-doc warnings 2023-06-26 13:27:51 +02:00
netfilter_bridge.h
netfilter_defs.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter_netdev.h
netfs.h
netlink.h
netpoll.h
nfs.h
nfs3.h
nfs4.h
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h NFS: add sysfs shutdown knob 2023-06-19 15:08:12 -04:00
nfs_iostat.h
nfs_page.h
nfs_ssc.h
nfs_xdr.h NFSv4.2: SETXATTR should update ctime 2023-06-19 12:10:48 -04:00
nfsacl.h
nitro_enclaves.h
nl802154.h
nls.h
nmi.h watchdog/hardlockup: define HARDLOCKUP_DETECTOR_ARCH 2023-06-19 16:25:29 -07:00
node.h
nodemask.h nodemask: Drop duplicate check in for_each_node_mask() 2023-06-22 13:57:41 -07:00
nospec.h
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb.h
ntb_transport.h
nubus.h
numa.h
nvme-auth.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
objtool_types.h
of.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
oid_registry.h
olpc-ec.h
omap-dma.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once.h
once_lite.h
oom.h
openvswitch.h
osq_lock.h
overflow.h
packing.h
padata.h
page-flags-layout.h
page-flags.h
page-isolation.h mm: remove obsolete alloc_migrate_target() 2023-06-19 16:19:00 -07:00
page_counter.h
page_ext.h
page_idle.h
page_owner.h
page_ref.h
page_reporting.h
page_table_check.h
pageblock-flags.h
pagemap.h
pagevec.h mm: remove struct pagevec 2023-06-23 16:59:30 -07:00
pagewalk.h
panic.h
panic_notifier.h
parman.h
parport.h Char/Misc and other driver subsystem updates for 6.5-rc1 2023-07-03 12:46:47 -07:00
parport_pc.h
parser.h
part_stat.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci-acpi.h
pci-ats.h
pci-doe.h
pci-ecam.h
pci-ep-cfs.h
pci-epc.h PCI: endpoint: Add BME notifier support 2023-06-23 15:05:28 -05:00
pci-epf.h PCI: endpoint: Add BME notifier support 2023-06-23 15:05:28 -05:00
pci-p2pdma.h
pci.h
pci_hotplug.h
pci_ids.h pci-v6.5-changes 2023-06-30 15:06:45 -07:00
pcs-lynx.h
pcs-rzn1-miic.h
pe.h
peci-cpu.h
peci.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h Scope-based Resource Management infrastructure 2023-07-04 13:50:38 -07:00
percpu_counter.h
perf_event.h cxl for v6.5 2023-07-01 08:58:41 -07:00
perf_event_api.h
perf_regs.h
personality.h
pfn.h
pfn_t.h
pgtable.h mm: ptep_get() conversion 2023-06-19 16:19:25 -07:00
pgtable_api.h
phonet.h
phy.h
phy_fixed.h
phy_led_triggers.h
phylink.h net: phylink: add support for PCS link change notifications 2023-07-14 08:51:48 +01:00
pid.h pid: Replace struct pid 1-element array with flex-array 2023-06-30 09:04:01 -07:00
pid_namespace.h
pim.h
pipe_fs_i.h
pkeys.h
pktcdvd.h
pl320-ipc.h
platform_device.h
platform_profile.h
pldmfw.h
plist.h
pm-trace.h
pm.h linux/export.h: rename 'sec' argument to 'license' 2023-06-22 21:21:06 +09:00
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h
pmbus.h
pmu.h
pnp.h
poison.h
poll.h
polynomial.h
posix-clock.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
power_supply.h
powercap.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
pps_kernel.h
pr.h
prandom.h
preempt.h locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
prefetch.h
prime_numbers.h
printk.h
prmt.h
proc_fs.h
proc_ns.h
processor.h
profile.h
projid.h
property.h
pruss_driver.h
psci.h
pseudo_fs.h
psi.h
psi_types.h
psp-platform-access.h
psp-sev.h
psp-tee.h
psp.h
pstore.h
pstore_blk.h
pstore_ram.h
pstore_zone.h
ptdump.h
pti.h
ptp_classify.h
ptp_clock_kernel.h ptp: Add .getmaxphase callback to ptp_clock_info 2023-06-20 09:02:33 +01:00
ptp_kvm.h
ptp_pch.h
ptr_ring.h
ptrace.h
ptrace_api.h
purgatory.h
pvclock_gtod.h
pwm.h
pwm_backlight.h
pxa2xx_ssp.h
pxa168_eth.h
qnx6_fs.h
quota.h
quotaops.h
radix-tree.h
raid_class.h
ramfs.h shmem: use ramfs_kill_sb() for kill_sb method of ramfs-based tmpfs 2023-06-19 16:19:04 -07:00
random.h
randomize_kstack.h
range.h
ras.h
ratelimit.h
ratelimit_types.h
rational.h
rbtree.h
rbtree_augmented.h
rbtree_latch.h
rbtree_types.h
rcu_node_tree.h
rcu_segcblist.h
rcu_sync.h
rculist.h
rculist_bl.h
rculist_nulls.h
rcupdate.h Scope-based Resource Management infrastructure 2023-07-04 13:50:38 -07:00
rcupdate_trace.h
rcupdate_wait.h
rcuref.h
rcutiny.h rcu: Export rcu_request_urgent_qs_task() 2023-07-12 23:45:23 +02:00
rcutree.h rcu: Export rcu_request_urgent_qs_task() 2023-07-12 23:45:23 +02:00
rcuwait.h
rcuwait_api.h
reboot-mode.h
reboot.h
reciprocal_div.h
ref_tracker.h
refcount.h
refcount_api.h
regmap.h
regset.h
relay.h
remoteproc.h
resctrl.h
reset-controller.h
reset.h
resource.h
resource_ext.h
restart_block.h
resume_user_mode.h
rethook.h Probes fixes and clean ups for v6.5-rc1: 2023-07-12 12:01:16 -07:00
rfkill.h
rhashtable-types.h
rhashtable.h
ring_buffer.h
rio.h
rio_drv.h
rio_ids.h
rio_regs.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
rv.h
rwbase_rt.h
rwlock.h
rwlock_api_smp.h
rwlock_rt.h
rwlock_types.h
rwsem.h locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
sbitmap.h
scatterlist.h scatterlist: add sg_set_folio() 2023-06-23 16:59:28 -07:00
scc.h
sched.h - Yosry Ahmed brought back some cgroup v1 stats in OOM logs. 2023-06-28 10:28:11 -07:00
sched_clock.h
scmi_protocol.h
scpi_protocol.h
screen_info.h
scs.h
sctp.h
scx200.h
scx200_gpio.h
seccomp.h
secretmem.h
securebits.h
security.h security: Constify sk in the sk_getsecid hook. 2023-07-14 08:27:33 +01:00
sed-opal.h
seg6.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
selection.h
sem.h
semaphore.h
seq_buf.h
seq_file.h
seq_file_net.h
seqlock.h
seqlock_api.h
serdev.h
serial.h
serial_8250.h Revert "8250: add support for ASIX devices with a FIFO bug" 2023-06-21 17:55:53 +02:00
serial_bcm63xx.h
serial_core.h
serial_max3100.h
serial_s3c.h
serial_sci.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.h
signal_types.h
signalfd.h
siox.h
siphash.h
sizes.h
skb_array.h
skbuff.h bpf: Add fd-based tcx multi-prog infra with link support 2023-07-19 10:07:27 -07:00
skmsg.h
slab.h Scope-based Resource Management infrastructure 2023-07-04 13:50:38 -07:00
slab_def.h
slimbus.h
slub_def.h
sm501-regs.h
sm501.h
smc91x.h
smp.h
smp_types.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h net: Kill MSG_SENDPAGE_NOTLAST 2023-06-24 15:50:13 -07:00
sockptr.h
softirq.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h locking: Introduce __cleanup() based infrastructure 2023-06-26 11:14:18 +02:00
spinlock_api.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_rt.h
spinlock_types.h
spinlock_types_raw.h
spinlock_types_up.h
spinlock_up.h
splice.h Networking changes for 6.5. 2023-06-28 16:43:10 -07:00
spmi.h
sram.h
srcu.h Scope-based Resource Management infrastructure 2023-07-04 13:50:38 -07:00
srcutiny.h
srcutree.h
ssbi.h
stackdepot.h
stackleak.h
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_call.h
static_call_types.h
static_key.h
stdarg.h
stddef.h
stm.h
stmmac.h net: stmmac: replace the en_tx_lpi_clockgating field with a flag 2023-07-13 20:57:14 -07:00
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string.h
string_choices.h
string_helpers.h
stringhash.h
stringify.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
surface_acpi_notify.h
suspend.h - Yosry Ahmed brought back some cgroup v1 stats in OOM logs. 2023-06-28 10:28:11 -07:00
svga.h
sw842.h
swab.h
swait.h
swait_api.h
swap.h mm: remove check_move_unevictable_pages() 2023-06-23 16:59:29 -07:00
swap_cgroup.h
swap_slots.h
swapfile.h
swapops.h mm/migrate: remove cruft from migration_entry_wait()s 2023-06-19 16:19:12 -07:00
swiotlb.h
switchtec.h
sxgbe_platform.h
sync_core.h
sync_file.h
synclink.h
sys.h
sys_soc.h
syscall_user_dispatch.h
syscalls.h asm-generic updates for 6.5 2023-07-06 10:06:04 -07:00
syscalls_api.h
syscore_ops.h
sysctl.h
sysfb.h
sysfs.h
syslog.h
sysrq.h
sysv_fs.h
t10-pi.h
task_io_accounting.h
task_io_accounting_ops.h
task_work.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h
tee_drv.h
tegra-icc.h
termios_internal.h
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h
thread_info.h
threads.h
thunderbolt.h
ti-emif-sram.h
ti_wilink_st.h
tick.h
tifm.h
timb_dma.h
timb_gpio.h
time.h
time32.h
time64.h
time_namespace.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.h
tpm_command.h
tpm_eventlog.h
trace.h
trace_clock.h
trace_events.h for-netdev 2023-07-13 19:13:24 -07:00
trace_recursion.h
trace_seq.h
tracefs.h
tracepoint-defs.h
tracepoint.h
transport_class.h
ts-nbus.h
tsacct_kern.h
tty.h
tty_buffer.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty_port.h
typecheck.h
types.h - Arnd Bergmann has fixed a bunch of -Wmissing-prototypes in 2023-06-28 10:59:38 -07:00
u64_stats_sync.h
u64_stats_sync_api.h
uacce.h
uaccess.h
ubsan.h
ucs2_string.h
udp.h
uidgid.h
uio.h Networking changes for 6.5. 2023-06-28 16:43:10 -07:00
uio_driver.h
umh.h
unicode.h
units.h
uprobes.h
usb.h
usb_usual.h
usbdevice_fs.h
user-return-notifier.h
user.h
user_events.h
user_namespace.h
userfaultfd_k.h userfaultfd: fix regression in userfaultfd_unmap_prep() 2023-06-19 16:19:28 -07:00
usermode_driver.h
util_macros.h
uts.h
utsname.h
uuid.h
vbox_utils.h
vdpa.h
verification.h
vermagic.h
vexpress.h
vfio.h
vfio_pci_core.h
vfs.h
vga_switcheroo.h
vgaarb.h
vhost_iotlb.h
via-core.h
via.h
via_i2c.h
videodev2.h
virtio.h virtio: Add missing documentation for structure fields 2023-06-27 10:47:09 -04:00
virtio_anchor.h
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_dma_buf.h
virtio_net.h
virtio_pci_legacy.h
virtio_pci_modern.h virtio: allow caller to override device DMA mask in vp_modern 2023-06-27 10:47:08 -04:00
virtio_ring.h
virtio_vsock.h
vlynq.h
vm_event_item.h
vmalloc.h
vmpressure.h
vmstat.h
vmw_vmci_api.h
vmw_vmci_defs.h
vringh.h
vt.h
vt_buffer.h
vt_kern.h
vtime.h
w1-gpio.h
w1.h
wait.h
wait_api.h
wait_bit.h
watch_queue.h
watchdog.h
win_minmax.h
wireless.h
wkup_m3_ipc.h
wm97xx.h
wmi.h
workqueue.h workqueue: clean up WORK_* constant types, clarify masking 2023-06-23 12:08:14 -07:00
workqueue_api.h
writeback.h
ww_mutex.h
wwan.h
xarray.h
xattr.h
xxhash.h
xz.h
yam.h
zconf.h
zlib.h
zorro.h
zpool.h mm: zswap: remove shrink from zpool interface 2023-06-19 16:19:27 -07:00
zsmalloc.h
zstd.h
zstd_errors.h
zstd_lib.h
zutil.h