twx-linux/include/linux
John Fastabend 4f738adba3 bpf: create tcp_bpf_ulp allowing BPF to monitor socket TX/RX data
This implements a BPF ULP layer to allow policy enforcement and
monitoring at the socket layer. In order to support this a new
program type BPF_PROG_TYPE_SK_MSG is used to run the policy at
the sendmsg/sendpage hook. To attach the policy to sockets a
sockmap is used with a new program attach type BPF_SK_MSG_VERDICT.

Similar to previous sockmap usages when a sock is added to a
sockmap, via a map update, if the map contains a BPF_SK_MSG_VERDICT
program type attached then the BPF ULP layer is created on the
socket and the attached BPF_PROG_TYPE_SK_MSG program is run for
every msg in sendmsg case and page/offset in sendpage case.

BPF_PROG_TYPE_SK_MSG Semantics/API:

BPF_PROG_TYPE_SK_MSG supports only two return codes SK_PASS and
SK_DROP. Returning SK_DROP free's the copied data in the sendmsg
case and in the sendpage case leaves the data untouched. Both cases
return -EACESS to the user. Returning SK_PASS will allow the msg to
be sent.

In the sendmsg case data is copied into kernel space buffers before
running the BPF program. The kernel space buffers are stored in a
scatterlist object where each element is a kernel memory buffer.
Some effort is made to coalesce data from the sendmsg call here.
For example a sendmsg call with many one byte iov entries will
likely be pushed into a single entry. The BPF program is run with
data pointers (start/end) pointing to the first sg element.

In the sendpage case data is not copied. We opt not to copy the
data by default here, because the BPF infrastructure does not
know what bytes will be needed nor when they will be needed. So
copying all bytes may be wasteful. Because of this the initial
start/end data pointers are (0,0). Meaning no data can be read or
written. This avoids reading data that may be modified by the
user. A new helper is added later in this series if reading and
writing the data is needed. The helper call will do a copy by
default so that the page is exclusively owned by the BPF call.

The verdict from the BPF_PROG_TYPE_SK_MSG applies to the entire msg
in the sendmsg() case and the entire page/offset in the sendpage case.
This avoids ambiguity on how to handle mixed return codes in the
sendmsg case. Again a helper is added later in the series if
a verdict needs to apply to multiple system calls and/or only
a subpart of the currently being processed message.

The helper msg_redirect_map() can be used to select the socket to
send the data on. This is used similar to existing redirect use
cases. This allows policy to redirect msgs.

Pseudo code simple example:

The basic logic to attach a program to a socket is as follows,

  // load the programs
  bpf_prog_load(SOCKMAP_TCP_MSG_PROG, BPF_PROG_TYPE_SK_MSG,
		&obj, &msg_prog);

  // lookup the sockmap
  bpf_map_msg = bpf_object__find_map_by_name(obj, "my_sock_map");

  // get fd for sockmap
  map_fd_msg = bpf_map__fd(bpf_map_msg);

  // attach program to sockmap
  bpf_prog_attach(msg_prog, map_fd_msg, BPF_SK_MSG_VERDICT, 0);

Adding sockets to the map is done in the normal way,

  // Add a socket 'fd' to sockmap at location 'i'
  bpf_map_update_elem(map_fd_msg, &i, fd, BPF_ANY);

After the above any socket attached to "my_sock_map", in this case
'fd', will run the BPF msg verdict program (msg_prog) on every
sendmsg and sendpage system call.

For a complete example see BPF selftests or sockmap samples.

Implementation notes:

It seemed the simplest, to me at least, to use a refcnt to ensure
psock is not lost across the sendmsg copy into the sg, the bpf program
running on the data in sg_data, and the final pass to the TCP stack.
Some performance testing may show a better method to do this and avoid
the refcnt cost, but for now use the simpler method.

Another item that will come after basic support is in place is
supporting MSG_MORE flag. At the moment we call sendpages even if
the MSG_MORE flag is set. An enhancement would be to collect the
pages into a larger scatterlist and pass down the stack. Notice that
bpf_tcp_sendmsg() could support this with some additional state saved
across sendmsg calls. I built the code to support this without having
to do refactoring work. Other features TBD include ZEROCOPY and the
TCP_RECV_QUEUE/TCP_NO_QUEUE support. This will follow initial series
shortly.

Future work could improve size limits on the scatterlist rings used
here. Currently, we use MAX_SKB_FRAGS simply because this was being
used already in the TLS case. Future work could extend the kernel sk
APIs to tune this depending on workload. This is a trade-off
between memory usage and throughput performance.

Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2018-03-19 21:14:38 +01:00
..
amba
avf virtchnl: Add filter data structures 2018-02-14 09:43:22 -08:00
bcma
byteorder
can can: dev: Add support for limiting configured bitrate 2018-01-16 15:11:32 +01:00
ceph
clk
crush
decompress
dma
dsa
extcon
firmware/meson
fpga
fsl
gpio The is the bulk of GPIO changes for the v4.16 kernel cycle. 2018-01-31 12:25:27 -08:00
hsi
iio Staging/IIO patches for 4.16-rc1 2018-02-01 09:51:57 -08:00
input
irqchip
isdn
lockd lockd: convert nlm_rqst.a_count from atomic_t to refcount_t 2018-01-14 23:06:30 -05:00
mailbox
mfd RTC for 4.16 2018-02-02 14:19:19 -08:00
mlx4
mlx5 {net,IB}/mlx5: Add flow steering helpers 2018-03-06 22:20:14 -08:00
mmc mmc: slot-gpio: add a helper to check capability of GPIO WP detection 2018-01-18 09:08:56 +01:00
mtd Core changes: 2018-01-29 09:58:36 +01:00
mux
netfilter Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2018-01-31 14:31:10 -08:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
perf arm_pmu: acpi: request IRQs up-front 2018-02-20 11:34:54 +00:00
phy
pinctrl pinctrl: remove include file from <linux/device.h> 2018-02-03 12:10:09 -08:00
platform_data platform-drivers-x86 for v4.16-1 2018-02-06 15:30:52 -08:00
power
qed
raid
regulator regulator: add PM suspend and resume hooks 2018-01-26 14:43:55 +00:00
remoteproc
reset
rpmsg
rtc
sched Merge branch 'akpm' (patches from Andrew) 2018-02-22 10:45:46 -08:00
soc ARM: SoC driver updates for 4.16 2018-02-01 16:35:31 -08:00
soundwire
spi
ssb
sunrpc NFS client bugfixes and latency improvements for Linux 4.16 2018-02-09 14:55:30 -08:00
ulpi
unaligned
usb
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi_dma.h
acpi_iort.h
acpi_pmtmr.h
acpi.h device property: Constify device_get_match_data() 2018-02-12 10:41:11 +01:00
adb.h
adfs_fs.h
aer.h
agp_backend.h
agpgart.h
ahci_platform.h
ahci-remap.h
aio.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amifd.h
amifdreg.h
anon_inodes.h
apm_bios.h
apm-emulation.h
apple_bl.h
apple-gmux.h
arch_topology.h
arm_sdei.h firmware: arm_sdei: Add driver for Software Delegated Exceptions 2018-01-13 10:44:56 +00:00
arm-cci.h
arm-smccc.h arm/arm64: smccc: Implement SMCCC v1.1 inline primitive 2018-02-06 22:54:15 +00:00
asn1_ber_bytecode.h
asn1_decoder.h
asn1.h
assoc_array_priv.h
assoc_array.h
async_tx.h
async.h
ata_platform.h
ata.h
atalk.h net: Make atalk_ptr depend on ATALK or IRDA 2018-02-14 11:55:33 -05:00
ath9k_platform.h
atm_suni.h
atm_tcp.h
atm.h
atmdev.h
atmel_pdc.h
atmel_tc.h
atmel-mci.h
atmel-ssc.h
atomic.h
attribute_container.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auxvec.h
average.h
b1pcmcia.h
backing-dev-defs.h
backing-dev.h lockdep: Convert some users to const 2018-01-18 11:56:49 +01: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
bfin_mac.h
binfmts.h
bio.h block: display the correct diskname for bio 2018-03-01 08:41:25 -07:00
bit_spinlock.h
bitfield.h
bitmap.h lib: optimize cpumask_next_and() 2018-02-06 18:32:44 -08:00
bitops.h
bitrev.h
blk_types.h blk-mq: introduce BLK_STS_DEV_RESOURCE 2018-01-30 20:18:28 -07:00
blk-cgroup.h blkcg: simplify statistic accumulation code 2018-01-16 08:56:36 -07:00
blk-mq-pci.h
blk-mq-rdma.h
blk-mq-virtio.h
blk-mq.h
blkdev.h block: fix a typo in comment of BLK_MQ_POLL_STATS_BKTS 2018-02-15 08:27:06 -07:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootmem.h
bottom_half.h
bpf_trace.h
bpf_types.h bpf: create tcp_bpf_ulp allowing BPF to monitor socket TX/RX data 2018-03-19 21:14:38 +01:00
bpf_verifier.h
bpf-cgroup.h bpf: NULL pointer check is not needed in BPF_CGROUP_RUN_PROG_INET_SOCK 2018-02-23 16:23:11 +01:00
bpf.h bpf: create tcp_bpf_ulp allowing BPF to monitor socket TX/RX data 2018-03-19 21:14:38 +01:00
brcmphy.h
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h for-linus-20180204 2018-02-04 11:16:35 -08:00
bug.h
build_bug.h build_bug.h: remove BUILD_BUG_ON_NULL() 2018-02-06 18:32:46 -08:00
bvec.h
c2port.h
cache.h
cacheinfo.h
capability.h
cb710.h
cciss_ioctl.h
ccp.h
cdev.h
cdrom.h
cfag12864b.h
cgroup_rdma.h
cgroup_subsys.h
cgroup-defs.h
cgroup.h
circ_buf.h
cleancache.h
clk-provider.h Merge branches 'clk-remove-asm-clkdev', 'clk-debugfs-fixes', 'clk-renesas' and 'clk-meson' into clk-next 2018-01-26 16:43:32 -08:00
clk.h
clkdev.h
clock_cooling.h
clockchips.h
clocksource.h
cm4000_cs.h
cma.h
cmdline-parser.h
cn_proc.h
cnt32_to_63.h
coda_psdev.h
coda.h
compaction.h
compat.h signal: Unify and correct copy_siginfo_from_user32 2018-01-15 17:55:59 -06:00
compiler_types.h
compiler-clang.h x86/retpoline: Support retpoline builds with Clang 2018-02-20 11:17:58 +01:00
compiler-gcc.h Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-02-26 09:34:21 -08:00
compiler-intel.h
compiler.h bug.h: work around GCC PR82365 in BUG() 2018-02-21 15:35:43 -08:00
completion.h
component.h
concap.h
configfs.h
connector.h
console_struct.h
console.h
consolemap.h
container.h
context_tracking_state.h
context_tracking.h
cordic.h
coredump.h
coresight-pmu.h
coresight-stm.h
coresight.h
count_zeros.h
cper.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpu.h Merge branch 'x86-pti-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-01-14 09:51:25 -08:00
cpufeature.h
cpufreq.h cpufreq: Add and use cpufreq_for_each_{valid_,}entry_idx() 2018-02-08 10:21:39 +01:00
cpuhotplug.h Merge branch 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm 2018-02-02 09:50:51 -08:00
cpuidle.h Merge branches 'pm-cpuidle' and 'pm-opp' 2018-02-15 12:01:53 +01:00
cpumask.h cpumask: Make for_each_cpu_wrap() available on UP as well 2018-02-16 10:40:24 +01:00
cpuset.h kernel/cpuset: current_cpuset_is_being_rebound can be boolean 2018-02-06 18:32:47 -08:00
crash_core.h kdump: write correct address of mem_section into vmcoreinfo 2018-01-13 10:42:48 -08:00
crash_dump.h crash_dump: is_kdump_kernel can be boolean 2018-02-06 18:32:47 -08:00
crc4.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
cred.h
crypto.h
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
davinci_emac.h
dax.h
dca.h
dcache.h vfs: factor out helpers d_instantiate_anon() and d_alloc_anon() 2018-01-24 11:25:59 +01:00
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h delayacct: Account blkio completion on the correct task 2018-01-16 03:29:36 +01:00
delayed_call.h
dell-led.h
devcoredump.h
devfreq_cooling.h
devfreq-event.h
devfreq.h
device_cgroup.h
device-mapper.h dm mpath: delay the retry of a request if the target responded as busy 2018-01-29 13:44:54 -05:00
device.h pinctrl: remove include file from <linux/device.h> 2018-02-03 12:10:09 -08:00
devpts_fs.h
digsig.h
dio.h
dirent.h
dlm_plock.h
dlm.h
dm9000.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dma_remapping.h
dma-buf.h
dma-contiguous.h
dma-debug.h
dma-direct.h dma-direct: reject too small dma masks 2018-01-15 09:35:15 +01:00
dma-direction.h
dma-fence-array.h
dma-fence.h
dma-iommu.h
dma-mapping.h dma-mapping: fix a comment typo 2018-02-12 15:59:08 +00: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
dw_apb_timer.h
dynamic_debug.h
dynamic_queue_limits.h
earlycpio.h
ecryptfs.h
edac.h
edd.h
edma.h
eeprom_93cx6.h
eeprom_93xx46.h
efi-bgrt.h
efi.h Merge branch 'next-tpm' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2018-01-31 13:12:31 -08:00
efs_vh.h
eisa.h
elevator.h block: Unexport elv_register_queue() and elv_unregister_queue() 2018-01-18 12:54:41 -07:00
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
error-injection.h error-injection: Add injectable error types 2018-01-12 17:33:38 -08:00
errqueue.h
errseq.h
etherdevice.h net: Extra '_get' in declaration of arch_get_platform_mac_address 2018-02-08 15:13:30 -05:00
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 f2fs: support inode creation time 2018-01-25 14:10:39 -08:00
f75375s.h
falloc.h
fanotify.h
fault-inject.h
fb.h fbdev changes for v4.16: 2018-02-07 13:10:43 -08:00
fbcon.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h vfs, fdtable: Prevent bounds-check bypass via speculative execution 2018-01-30 21:54:32 +01:00
fec.h
file.h
filter.h bpf: create tcp_bpf_ulp allowing BPF to monitor socket TX/RX data 2018-03-19 21:14:38 +01:00
fips.h
firewire.h
firmware-map.h
firmware.h
fixp-arith.h
flat.h
flex_array.h
flex_proportions.h
fmc-sdb.h
fmc.h
font.h
frame.h
freezer.h
frontswap.h
fs_enet_pd.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fs.h dax: fix vma_is_fsdax() helper 2018-02-26 12:32:42 -08:00
fscache-cache.h
fscache.h
fscrypt_notsupp.h
fscrypt_supp.h
fscrypt.h
fsi.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsl-diu-fb.h
fsldma.h
fsnotify_backend.h
fsnotify.h
ftrace_irq.h
ftrace.h init_task out-of-lining 2018-01-29 09:08:34 -08:00
futex.h
fwnode.h device property: Constify device_get_match_data() 2018-02-12 10:41:11 +01:00
gameport.h
gcd.h
genalloc.h
genetlink.h
genhd.h genhd: Fix BUG in blkdev_open() 2018-02-26 09:48:42 -07:00
genl_magic_func.h include/linux/genl_magic_func.h: remove own BUILD_BUG_ON*() defines 2018-02-06 18:32:46 -08:00
genl_magic_struct.h
getcpu.h
gfp.h
glob.h
goldfish.h
gpio_keys.h
gpio-pxa.h
gpio.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
hiddev.h
hidraw.h
highmem.h
highuid.h
hil_mlc.h
hil.h
hippidevice.h
hmm.h
host1x.h
hp_sdc.h
hpet.h
hrtimer.h hrtimer: Implement support for softirq based hrtimers 2018-01-16 09:51:22 +01:00
htcpld.h
huge_mm.h
hugetlb_cgroup.h
hugetlb_inline.h
hugetlb.h hugetlb, mbind: fall back to default policy if vma is NULL 2018-01-31 17:18:40 -08:00
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-gpio.h
i2c-mux-gpio.h
i2c-mux.h
i2c-ocores.h
i2c-omap.h
i2c-pca-platform.h
i2c-pnx.h
i2c-pxa.h
i2c-smbus.h
i2c-xiic.h
i2c.h i2c: add 'set_sda' to bus_recovery_info 2018-01-16 00:04:19 +01:00
i8042.h
i8253.h
icmp.h
icmpv6.h
ide.h
idr.h idr: Add documentation 2018-02-06 16:41:29 -05:00
ieee80211.h mac80211: add get TID helper 2018-02-22 21:13:03 +01:00
ieee802154.h
if_arp.h
if_bridge.h
if_eql.h
if_ether.h
if_fddi.h
if_frad.h
if_link.h
if_ltalk.h
if_macvlan.h
if_phonet.h
if_pppol2tp.h
if_pppox.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
in6.h
in.h
inet_diag.h
inet.h
inetdevice.h devinet_ioctl(): take copyin/copyout to caller 2018-01-24 19:13:45 -05:00
init_ohci1394_dma.h
init_task.h Expand INIT_STRUCT_PID and remove 2018-01-17 11:30:16 +00:00
init.h x86/retpoline: Support retpoline builds with Clang 2018-02-20 11:17:58 +01:00
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel-iommu.h iommu/vt-d: Add a check for 5-level paging support 2018-01-17 15:02:50 +01:00
intel-pti.h
intel-svm.h
interrupt.h
interval_tree_generic.h
interval_tree.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io.h
ioc3.h
ioc4.h
iocontext.h
iomap.h
iommu-common.h
iommu-helper.h
iommu.h
iopoll.h
ioport.h kernel/resource: iomem_is_exclusive can be boolean 2018-02-06 18:32:47 -08:00
ioprio.h
iova.h
ip.h
ipack.h
ipc_namespace.h
ipc.h
ipmi_smi.h
ipmi-fru.h
ipmi.h
ipv6_route.h
ipv6.h
irq_cpustat.h
irq_poll.h
irq_sim.h
irq_work.h
irq.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h
irqflags.h init_task out-of-lining 2018-01-29 09:08:34 -08:00
irqhandler.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h
iscsi_ibft.h
isdn_divertif.h
isdn_ppp.h
isdn.h
isdnif.h
isicom.h
iversion.h iversion: Rename make inode_cmp_iversion{+raw} to inode_eq_iversion{+raw} 2018-02-01 08:15:25 -05:00
jbd2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label_ratelimit.h
jump_label.h jump_label: Explicitly disable jump labels in __init code 2018-02-21 16:54:05 +01:00
jz4740-adc.h
jz4780-nemc.h
kallsyms.h kallsyms: let print_ip_sym() print raw addresses 2018-02-06 18:32:45 -08:00
kasan-checks.h
kasan.h kasan: clean up KASAN_SHADOW_SCALE_SHIFT usage 2018-02-06 18:32:43 -08:00
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h Merge branch 'akpm' (patches from Andrew) 2018-02-22 10:45:46 -08:00
kcore.h vfs/proc/kcore, x86/mm/kcore: Fix SMAP fault when dumping vsyscall user page 2018-02-13 09:15:58 +01:00
kcov.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
kernel_stat.h
kernel-page-flags.h
kernel.h extable: Make init_kernel_text() global 2018-02-21 16:54:06 +01:00
kernelcapi.h
kernfs.h
kexec.h
key-type.h
key.h
keyboard.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 error-injection: Separate error-injection from kprobe 2018-01-12 17:33:38 -08:00
kref.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h
kthread.h
ktime.h
kvm_host.h kvm: fix warning for non-x86 builds 2018-02-24 01:43:47 +01:00
kvm_irqfd.h
kvm_para.h
kvm_types.h
l2tp.h
lapb.h
latencytop.h
lcd.h
lcm.h
led-class-flash.h
led-lm3530.h
leds_pwm.h
leds-bd2802.h
leds-lp3944.h
leds-lp3952.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h
leds.h
libata.h
libfdt_env.h
libfdt.h
libgcc.h
libnvdimm.h acpi: nfit: add persistent memory control flag for nd_region 2018-02-01 15:01:15 -07:00
libps2.h
license.h
lightnvm.h
linkage.h
linux_logo.h
lis3lv02d.h
list_bl.h
list_lru.h
list_nulls.h
list_sort.h
list.h
livepatch.h
llc.h
llist.h
lockdep.h Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2018-01-30 10:44:56 -08:00
lockref.h lib/lockref: __lockref_is_dead can be boolean 2018-02-06 18:32:47 -08:00
log2.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hooks.h
lz4.h
lzo.h
mailbox_client.h
mailbox_controller.h
maple.h
marvell_phy.h
math64.h
max17040_battery.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mcb.h
mdev.h
mdio-bitbang.h
mdio-mux.h
mdio.h
mei_cl_bus.h
mem_encrypt.h
memblock.h mm/memblock: memblock_is_map/region_memory can be boolean 2018-02-06 18:32:47 -08:00
memcontrol.h mm: memcontrol: fix NR_WRITEBACK leak in memcg and system stats 2018-02-21 15:35:42 -08:00
memory_hotplug.h
memory.h
mempolicy.h
mempool.h
memremap.h
memstick.h
mic_bus.h
micrel_phy.h
microchipphy.h
migrate_mode.h
migrate.h
mii.h
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm_inline.h x86/mm, mm/hwpoison: Don't unconditionally unmap kernel 1:1 pages 2018-02-13 16:25:06 +01:00
mm_types_task.h
mm_types.h mm: remove reference to PG_buddy 2018-01-31 17:18:38 -08:00
mm-arch-hooks.h
mm.h libnvdimm for 4.16 2018-02-06 10:41:33 -08:00
mman.h
mmdebug.h
mmiotrace.h
mmu_context.h
mmu_notifier.h mm, mmu_notifier: annotate mmu notifiers with blockable invalidate callbacks 2018-01-31 17:18:38 -08:00
mmzone.h include/linux/mmzone.h: fix explanation of lower bits in the SPARSEMEM mem_map pointer 2018-01-31 17:18:39 -08:00
mnt_namespace.h
mod_devicetable.h
module.h kernel/module: module_is_live can be boolean 2018-02-06 18:32:47 -08:00
moduleloader.h
moduleparam.h
mount.h
mpage.h
mpi.h
mpls_iptunnel.h
mpls.h
mroute6.h ip6mr: Remove MFC_NOTIFY and refactor flags 2018-03-01 13:13:23 -05:00
mroute_base.h ipmr, ip6mr: Unite dumproute flows 2018-03-01 13:13:23 -05:00
mroute.h ip6mr: Remove MFC_NOTIFY and refactor flags 2018-03-01 13:13:23 -05:00
msdos_fs.h
msg.h
msi.h
mutex.h locking/mutex: Add comment to __mutex_owner() to deter usage 2018-02-21 08:56:40 +01:00
mv643xx_eth.h
mv643xx_i2c.h
mv643xx.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h
nd.h
net_dim.h net/dim: Fix fixpoint divide exception in net_dim_stats_compare 2018-01-19 14:53:32 -05:00
net.h net: make getname() functions return length rather than use int* parameter 2018-02-12 14:15:04 -05:00
netdev_features.h
netdevice.h net: unpollute priv_flags space 2018-03-07 12:38:24 -05:00
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h
netfilter.h
netlink.h netlink: extack: avoid parenthesized string constant warning 2018-01-15 15:15:23 -05:00
netpoll.h
nfs3.h
nfs4.h NFS: Fix nfsstat breakage due to LOOKUPP 2018-01-14 23:06:29 -05:00
nfs_fs_i.h
nfs_fs_sb.h
nfs_fs.h
nfs_iostat.h
nfs_page.h
nfs_xdr.h
nfs.h
nfsacl.h
nl802154.h
nls.h
nmi.h
node.h
nodemask.h
nospec.h nospec: Include <asm/barrier.h> dependency 2018-02-17 08:40:59 +01:00
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb_transport.h
ntb.h NTB: Fix UB/bug in ntb_mw_get_align() 2018-01-28 22:17:24 -05:00
nubus.h nubus: Add support for the driver model 2018-01-16 16:47:29 +01:00
numa.h
nvme-fc-driver.h
nvme-fc.h
nvme-rdma.h
nvme.h nvme-pci: clean up SMBSZ bit definitions 2018-01-17 17:55:14 +01:00
nvmem-consumer.h
nvmem-provider.h
nvram.h
of_address.h
of_device.h
of_dma.h
of_fdt.h
of_gpio.h DeviceTree updates for 4.16: 2018-02-01 10:57:45 -08:00
of_graph.h
of_iommu.h iommu: Clean up of_iommu_init_fn 2018-01-17 15:25:50 +01:00
of_irq.h
of_mdio.h
of_net.h
of_pci.h PCI: Make of_irq_parse_pci() static 2018-01-25 08:48:20 -06:00
of_pdt.h
of_platform.h
of_reserved_mem.h
of.h DeviceTree updates for 4.16: 2018-02-01 10:57:45 -08:00
oid_registry.h
olpc-ec.h
omap-dma.h
omap-dmaengine.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once.h
oom.h
openvswitch.h
oprofile.h
osq_lock.h
oxu210hp.h
padata.h
page_counter.h
page_ext.h
page_idle.h
page_owner.h
page_ref.h
page-flags-layout.h
page-flags.h mm: remove PG_highmem description 2018-01-31 17:18:40 -08:00
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h mm: get 7% more pages in a pagevec 2018-01-31 17:18:37 -08:00
parman.h
parport_pc.h
parport.h
parser.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci_hotplug.h PCI: Add SPDX GPL-2.0+ to replace GPL v2 or later boilerplate 2018-01-28 15:49:06 -06:00
pci_ids.h wireless-drivers-next patches for 4.16 2018-02-08 15:32:25 -05:00
pci-acpi.h
pci-aspm.h
pci-ats.h
pci-dma-compat.h PCI: Remove NULL device handling from PCI DMA API 2018-01-17 18:05:51 -06:00
pci-dma.h
pci-ecam.h PCI: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
pci-ep-cfs.h PCI: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
pci-epc.h Merge branch 'pci/spdx' into next 2018-02-01 11:40:07 -06:00
pci-epf.h PCI: Add SPDX GPL-2.0 to replace GPL v2 boilerplate 2018-01-28 15:48:29 -06:00
pci.h pci-v4.16-changes 2018-02-06 09:59:40 -08:00
pcieport_if.h
pda_power.h
pe.h
percpu_counter.h
percpu_ida.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h
perf_event.h
perf_regs.h
personality.h
pfn_t.h mm, dax: introduce pfn_t_special() 2018-01-19 16:50:53 -08:00
pfn.h
phonet.h
phy_fixed.h
phy_led_triggers.h
phy.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-06 01:20:46 -05:00
phylink.h
pid_namespace.h
pid.h
pim.h
pipe_fs_i.h pipe: reject F_SETPIPE_SZ with size over UINT_MAX 2018-02-06 18:32:47 -08:00
pkeys.h
pktcdvd.h
pl320-ipc.h
platform_device.h
plist.h
pm2301_charger.h
pm_clock.h
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h
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 unify {de,}mangle_poll(), get rid of kernel-side POLL... 2018-02-11 14:37:22 -08:00
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-gpio.h
pr.h
preempt.h
prefetch.h
prime_numbers.h
printk.h
proc_fs.h
proc_ns.h
processor.h
profile.h
projid.h
property.h device property: Constify device_get_match_data() 2018-02-12 10:41:11 +01:00
psci.h firmware/psci: Expose SMCCC version through psci_ops 2018-02-06 22:54:11 +00:00
psp-sev.h
pstore_ram.h
pstore.h
pti.h
ptp_classify.h net: ptp: Add stub for ptp_classify_raw() 2018-02-14 14:33:36 -05:00
ptp_clock_kernel.h
ptr_ring.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-02-19 18:46:11 -05:00
ptrace.h
purgatory.h
pvclock_gtod.h
pwm_backlight.h
pwm.h
pxa2xx_ssp.h
pxa168_eth.h
qcom_scm.h
qnx6_fs.h
quicklist.h
quota.h
quotaops.h
radix-tree.h idr: Remove idr_alloc_ext 2018-02-06 16:41:28 -05:00
raid_class.h
ramfs.h
random.h
range.h
ras.h
ratelimit.h
rational.h
rbtree_augmented.h
rbtree_latch.h
rbtree.h
rcu_node_tree.h
rcu_segcblist.h
rcu_sync.h
rculist_bl.h
rculist_nulls.h
rculist.h
rcupdate_wait.h
rcupdate.h
rcutiny.h
rcutree.h
rcuwait.h
reboot-mode.h
reboot.h
reciprocal_div.h
refcount.h
regmap.h Char/Misc driver patches for 4.16-rc1 2018-02-01 10:31:17 -08:00
regset.h
relay.h
remoteproc.h remoteproc: Drop dangling find_rsc_table dummies 2018-01-15 09:30:00 -08:00
reservation.h
reset-controller.h
reset.h
resource_ext.h
resource.h
restart_block.h
rfkill.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 net: Kill net_mutex 2018-02-20 13:23:13 -05:00
rtsx_common.h
rtsx_pci.h - New Drivers 2018-01-29 10:59:24 -08:00
rtsx_usb.h
rwlock_api_smp.h
rwlock_types.h
rwlock.h
rwsem-spinlock.h
rwsem.h
s3c_adc_battery.h
sa11x0-dma.h
sbitmap.h
scatterlist.h lib/scatterlist: Fix chaining support in sgl_alloc_order() 2018-01-19 12:31:03 -07:00
scc.h
sched_clock.h
sched.h Merge branch 'akpm' (patches from Andrew) 2018-02-06 22:15:42 -08:00
scif.h vfs: do bulk POLL* -> EPOLL* replacement 2018-02-11 14:34:03 -08:00
scpi_protocol.h
screen_info.h
sctp.h
scx200_gpio.h
scx200.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.h
sed-opal.h
seg6_genl.h
seg6_hmac.h
seg6_iptunnel.h
seg6_local.h
seg6.h
selection.h
selinux.h
sem.h
semaphore.h locking/semaphore: Update the file path in documentation 2018-02-13 15:00:06 +01:00
seq_buf.h
seq_file_net.h
seq_file.h seq_file: Introduce DEFINE_SHOW_ATTRIBUTE() helper macro 2018-02-07 12:50:21 +02:00
seqlock.h
seqno-fence.h
serdev.h TTY/Staging driver updates for 4.16-rc1 2018-02-01 09:46:00 -08:00
serial_8250.h
serial_bcm63xx.h
serial_core.h More ACPI updates for v4.16-rc1 2018-02-09 09:44:25 -08:00
serial_max3100.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serial.h
serio.h
set_memory.h
sfi_acpi.h
sfi.h
sfp.h phylink,sfp: negotiate interface format with MAC 2018-02-28 11:07:11 -05:00
sh_clk.h
sh_dma.h
sh_eth.h
sh_intc.h
sh_timer.h
shdma-base.h
shm.h
shmem_fs.h shmem: rename functions that are memfd-related 2018-01-31 17:18:39 -08:00
shrinker.h
signal_types.h
signal.h signal: Remove unnecessary ifdefs now that there is only one struct siginfo 2018-01-12 14:34:49 -06:00
signalfd.h
siox.h
siphash.h
sirfsoc_dma.h
sizes.h
skb_array.h skb_array: use __ptr_ring_empty 2018-01-29 12:02:54 -05:00
skbuff.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-03-06 01:20:46 -05:00
slab_def.h usercopy: Prepare for usercopy whitelisting 2018-01-15 12:07:47 -08:00
slab.h usercopy: Allow strict enforcement of whitelists 2018-01-15 12:07:48 -08:00
slimbus.h
slub_def.h usercopy: Prepare for usercopy whitelisting 2018-01-15 12:07:47 -08:00
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h net: do_tcp_sendpages flag to avoid SKBTX_SHARED_FRAG 2018-03-19 21:14:38 +01:00
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types_up.h
spinlock_types.h
spinlock_up.h
spinlock.h
splice.h
spmi.h
sram.h
srcu.h lockdep: Convert some users to const 2018-01-18 11:56:49 +01:00
srcutiny.h
srcutree.h
ssbi.h
stackdepot.h
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_key.h
stddef.h stddef.h: Introduce sizeof_field() 2018-01-15 12:07:46 -08:00
ste_modem_shm.h
stm.h
stmmac.h
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string_helpers.h
string.h Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2018-01-31 09:25:20 -08:00
stringhash.h
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h x86: hibernate: fix swsusp_arch_resume() prototype 2018-02-07 12:18:23 +01:00
svga.h
sw842.h
swab.h
swait.h
swap_cgroup.h
swap_slots.h
swap.h mm, mlock, vmscan: no more skipping pagevecs 2018-02-21 15:35:42 -08:00
swapfile.h
swapops.h mm, page_vma_mapped: Drop faulty pointer arithmetics in check_pte() 2018-01-21 17:44:47 -08:00
swiotlb.h swiotlb: add common swiotlb_map_ops 2018-01-15 09:35:45 +01:00
switchtec.h pci-v4.16-changes 2018-02-06 09:59:40 -08:00
sxgbe_platform.h
sync_core.h locking: Introduce sync_core_before_usermode() 2018-02-05 21:34:50 +01:00
sync_file.h
synclink.h
sys_soc.h
sys.h
syscalls.h
syscore_ops.h
sysctl.h pipe, sysctl: remove pipe_proc_fn() 2018-02-06 18:32:47 -08:00
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 bpf: Adds field bpf_sock_ops_cb_flags to tcp_sock 2018-01-25 16:41:14 -08:00
tee_drv.h
textsearch_fsm.h
textsearch.h
tfrc.h
thermal.h
thinkpad_acpi.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.h
timecounter.h
timekeeper_internal.h
timekeeping32.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
trace_clock.h
trace_events.h
trace_seq.h
trace.h
tracefs.h
tracehook.h
tracepoint-defs.h
tracepoint.h
transport_class.h
ts-nbus.h
tsacct_kern.h
tty_driver.h
tty_flip.h
tty_ldisc.h
tty.h tty: fix data race between tty_init_dev and flush of buf 2018-01-23 08:57:37 +01:00
typecheck.h
types.h
u64_stats_sync.h
uaccess.h usercopy: WARN() on slab cache usercopy region violations 2018-01-15 12:07:48 -08:00
ucb1400.h
ucs2_string.h
udp.h
uidgid.h
uio_driver.h
uio.h
umh.h
uprobes.h
usb_usual.h
usb.h
usbdevice_fs.h
user_namespace.h
user-return-notifier.h
user.h
userfaultfd_k.h
util_macros.h
uts.h
utsname.h
uuid.h uuid: cleanup <uapi/linux/uuid.h> 2018-02-06 18:32:44 -08:00
uwb.h
vbox_utils.h
verification.h
vermagic.h Revert "module: Add retpoline tag to VERMAGIC" 2018-01-24 09:00:05 -08:00
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.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_net.h
virtio_ring.h
virtio_vsock.h
virtio.h
visorbus.h
vlynq.h
vm_event_item.h
vm_sockets.h
vmacache.h
vmalloc.h
vme.h
vmpressure.h
vmstat.h mm: remove unused pgdat_reclaimable_pages() 2018-01-31 17:18:37 -08:00
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
wanrouter.h
watchdog.h
win_minmax.h
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
wmi.h
workqueue.h workqueue: Allow retrieval of current task's work struct 2018-02-16 22:24:25 +01:00
writeback.h
ww_mutex.h
xattr.h
xxhash.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h zswap: only save zswap header when necessary 2018-01-31 17:18:39 -08:00
zsmalloc.h
zstd.h
zutil.h