mirror-linux/include/linux
Daniel Borkmann 4f3446bb80 bpf: add generic constant blinding for use in jits
This work adds a generic facility for use from eBPF JIT compilers
that allows for further hardening of JIT generated images through
blinding constants. In response to the original work on BPF JIT
spraying published by Keegan McAllister [1], most BPF JITs were
changed to make images read-only and start at a randomized offset
in the page, where the rest was filled with trap instructions. We
have this nowadays in x86, arm, arm64 and s390 JIT compilers.
Additionally, later work also made eBPF interpreter images read
only for kernels supporting DEBUG_SET_MODULE_RONX, that is, x86,
arm, arm64 and s390 archs as well currently. This is done by
default for mentioned JITs when JITing is enabled. Furthermore,
we had a generic and configurable constant blinding facility on our
todo for quite some time now to further make spraying harder, and
first implementation since around netconf 2016.

We found that for systems where untrusted users can load cBPF/eBPF
code where JIT is enabled, start offset randomization helps a bit
to make jumps into crafted payload harder, but in case where larger
programs that cross page boundary are injected, we again have some
part of the program opcodes at a page start offset. With improved
guessing and more reliable payload injection, chances can increase
to jump into such payload. Elena Reshetova recently wrote a test
case for it [2, 3]. Moreover, eBPF comes with 64 bit constants, which
can leave some more room for payloads. Note that for all this,
additional bugs in the kernel are still required to make the jump
(and of course to guess right, to not jump into a trap) and naturally
the JIT must be enabled, which is disabled by default.

For helping mitigation, the general idea is to provide an option
bpf_jit_harden that admins can tweak along with bpf_jit_enable, so
that for cases where JIT should be enabled for performance reasons,
the generated image can be further hardened with blinding constants
for unpriviledged users (bpf_jit_harden == 1), with trading off
performance for these, but not for privileged ones. We also added
the option of blinding for all users (bpf_jit_harden == 2), which
is quite helpful for testing f.e. with test_bpf.ko. There are no
further e.g. hardening levels of bpf_jit_harden switch intended,
rationale is to have it dead simple to use as on/off. Since this
functionality would need to be duplicated over and over for JIT
compilers to use, which are already complex enough, we provide a
generic eBPF byte-code level based blinding implementation, which is
then just transparently JITed. JIT compilers need to make only a few
changes to integrate this facility and can be migrated one by one.

This option is for eBPF JITs and will be used in x86, arm64, s390
without too much effort, and soon ppc64 JITs, thus that native eBPF
can be blinded as well as cBPF to eBPF migrations, so that both can
be covered with a single implementation. The rule for JITs is that
bpf_jit_blind_constants() must be called from bpf_int_jit_compile(),
and in case blinding is disabled, we follow normally with JITing the
passed program. In case blinding is enabled and we fail during the
process of blinding itself, we must return with the interpreter.
Similarly, in case the JITing process after the blinding failed, we
return normally to the interpreter with the non-blinded code. Meaning,
interpreter doesn't change in any way and operates on eBPF code as
usual. For doing this pre-JIT blinding step, we need to make use of
a helper/auxiliary register, here BPF_REG_AX. This is strictly internal
to the JIT and not in any way part of the eBPF architecture. Just like
in the same way as JITs internally make use of some helper registers
when emitting code, only that here the helper register is one
abstraction level higher in eBPF bytecode, but nevertheless in JIT
phase. That helper register is needed since f.e. manually written
program can issue loads to all registers of eBPF architecture.

The core concept with the additional register is: blind out all 32
and 64 bit constants by converting BPF_K based instructions into a
small sequence from K_VAL into ((RND ^ K_VAL) ^ RND). Therefore, this
is transformed into: BPF_REG_AX := (RND ^ K_VAL), BPF_REG_AX ^= RND,
and REG <OP> BPF_REG_AX, so actual operation on the target register
is translated from BPF_K into BPF_X one that is operating on
BPF_REG_AX's content. During rewriting phase when blinding, RND is
newly generated via prandom_u32() for each processed instruction.
64 bit loads are split into two 32 bit loads to make translation and
patching not too complex. Only basic thing required by JITs is to
call the helper bpf_jit_blind_constants()/bpf_jit_prog_release_other()
pair, and to map BPF_REG_AX into an unused register.

Small bpf_jit_disasm extract from [2] when applied to x86 JIT:

echo 0 > /proc/sys/net/core/bpf_jit_harden

  ffffffffa034f5e9 + <x>:
  [...]
  39:   mov    $0xa8909090,%eax
  3e:   mov    $0xa8909090,%eax
  43:   mov    $0xa8ff3148,%eax
  48:   mov    $0xa89081b4,%eax
  4d:   mov    $0xa8900bb0,%eax
  52:   mov    $0xa810e0c1,%eax
  57:   mov    $0xa8908eb4,%eax
  5c:   mov    $0xa89020b0,%eax
  [...]

echo 1 > /proc/sys/net/core/bpf_jit_harden

  ffffffffa034f1e5 + <x>:
  [...]
  39:   mov    $0xe1192563,%r10d
  3f:   xor    $0x4989b5f3,%r10d
  46:   mov    %r10d,%eax
  49:   mov    $0xb8296d93,%r10d
  4f:   xor    $0x10b9fd03,%r10d
  56:   mov    %r10d,%eax
  59:   mov    $0x8c381146,%r10d
  5f:   xor    $0x24c7200e,%r10d
  66:   mov    %r10d,%eax
  69:   mov    $0xeb2a830e,%r10d
  6f:   xor    $0x43ba02ba,%r10d
  76:   mov    %r10d,%eax
  79:   mov    $0xd9730af,%r10d
  7f:   xor    $0xa5073b1f,%r10d
  86:   mov    %r10d,%eax
  89:   mov    $0x9a45662b,%r10d
  8f:   xor    $0x325586ea,%r10d
  96:   mov    %r10d,%eax
  [...]

As can be seen, original constants that carry payload are hidden
when enabled, actual operations are transformed from constant-based
to register-based ones, making jumps into constants ineffective.
Above extract/example uses single BPF load instruction over and
over, but of course all instructions with constants are blinded.

Performance wise, JIT with blinding performs a bit slower than just
JIT and faster than interpreter case. This is expected, since we
still get all the performance benefits from JITing and in normal
use-cases not every single instruction needs to be blinded. Summing
up all 296 test cases averaged over multiple runs from test_bpf.ko
suite, interpreter was 55% slower than JIT only and JIT with blinding
was 8% slower than JIT only. Since there are also some extremes in
the test suite, I expect for ordinary workloads that the performance
for the JIT with blinding case is even closer to JIT only case,
f.e. nmap test case from suite has averaged timings in ns 29 (JIT),
35 (+ blinding), and 151 (interpreter).

BPF test suite, seccomp test suite, eBPF sample code and various
bigger networking eBPF programs have been tested with this and were
running fine. For testing purposes, I also adapted interpreter and
redirected blinded eBPF image to interpreter and also here all tests
pass.

  [1] http://mainisusuallyafunction.blogspot.com/2012/11/attacking-hardened-linux-systems-with.html
  [2] https://github.com/01org/jit-spray-poc-for-ksp/
  [3] http://www.openwall.com/lists/kernel-hardening/2016/05/03/5

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Reviewed-by: Elena Reshetova <elena.reshetova@intel.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-05-16 13:49:32 -04:00
..
amba
bcma
byteorder
can can: fix handling of unmodifiable configuration options 2016-05-09 11:07:28 +02:00
ceph libceph: make authorizer destruction independent of ceph_auth_client 2016-04-25 20:54:13 +02:00
clk The clk changes for this release cycle are mostly dominated by 2016-03-23 06:06:45 -07:00
crush
decompress
dma
extcon
fpga
fsl
gpio
hsi
i2c
iio
input
irqchip
isdn
lockd
mfd regulator: s2mps11: Fix invalid selector mask and voltages for buck9 2016-03-28 10:36:30 +01:00
mlx4 net/mlx4: Avoid wrong virtual mappings 2016-05-05 23:23:05 -04:00
mlx5 net/mlx5_core: Flow counters infrastructure 2016-05-16 13:43:51 -04:00
mmc
mtd mtd: nand: don't select chip in nand_chip's block_bad op 2016-03-10 10:52:21 -08:00
netfilter netfilter: fix IS_ERR_VALUE usage 2016-04-29 11:02:33 +02:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
perf
phy
pinctrl
platform_data MTD updates for v4.6 2016-03-24 19:57:15 -07:00
power power supply and reset changes for the v4.6 series 2016-03-17 12:50:55 -07:00
qed qed*: Tx-switching configuration 2016-05-12 00:04:08 -04:00
raid
regulator Merge remote-tracking branches 'regulator/topic/discharge', 'regulator/topic/fan53555', 'regulator/topic/gpio', 'regulator/topic/hi655x' and 'regulator/topic/lp872x' into regulator-next 2016-03-13 15:19:35 +07:00
reset
rtc
sched mm: move max_map_count bits into mm.h 2016-03-17 15:09:34 -07:00
soc soc: qcom: smd: Introduce compile stubs 2016-05-08 23:46:14 -04:00
spi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input 2016-03-17 21:51:52 -07:00
ssb
sunrpc mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
ulpi
unaligned include/linux/unaligned: force inlining of byteswap operations 2016-03-17 15:09:34 -07:00
usb
uwb
wimax
8250_pci.h
a.out.h
acct.h
acpi.h
acpi_dma.h
acpi_pmtmr.h
adb.h
adfs_fs.h
aer.h
agp_backend.h
agpgart.h
ahci_platform.h
aio.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
apple-gmux.h
apple_bl.h
arm-cci.h
arm-smccc.h
asn1.h
asn1_ber_bytecode.h
asn1_decoder.h
assoc_array.h
assoc_array_priv.h
async.h
async_tx.h
ata.h
ata_platform.h
atalk.h
ath9k_platform.h ath9k: Allow platform override BTCoex pin 2016-03-11 14:00:03 +02:00
atm.h
atm_suni.h
atm_tcp.h
atmdev.h
atmel-mci.h
atmel-ssc.h
atmel_pdc.h
atmel_serial.h
atmel_tc.h
atomic.h locking/atomic, sched: Unexport fetch_or() 2016-03-29 11:52:11 +02:00
attribute_container.h
audit.h
auto_dev-ioctl.h autofs4: fix string.h include in auto_dev-ioctl.h 2016-03-15 16:55:16 -07:00
auto_fs.h autofs4: coding style fixes 2016-03-15 16:55:16 -07:00
auxvec.h
average.h
b1pcmcia.h
backing-dev-defs.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
backing-dev.h
backlight.h
badblocks.h
balloon_compaction.h
bcd.h
bch.h
bcm47xx_nvram.h
bcm47xx_wdt.h
bcm963xx_nvram.h
bcm963xx_tag.h
bfin_mac.h
binfmts.h
bio.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
bit_spinlock.h
bitmap.h
bitops.h
bitrev.h
blk-cgroup.h
blk-mq.h blk-mq: Use proper cpumask iterator 2016-03-20 09:34:02 -06:00
blk_types.h
blkdev.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootmem.h
bottom_half.h
bpf.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-05-04 00:52:29 -04:00
brcmphy.h net: phy: bcm7xxx: Add entries for Broadcom BCM7346 and BCM7362 2016-03-25 11:37:57 -04:00
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
btrfs.h
buffer_head.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
bug.h
c2port.h
cache.h
cacheinfo.h
capability.h cred/userns: define current_user_ns() as a function 2016-03-22 15:36:02 -07:00
cb710.h
cciss_ioctl.h
ccp.h crypto: ccp - CCP versioning support 2016-03-11 21:19:16 +08:00
cdev.h
cdrom.h
cfag12864b.h
cgroup-defs.h cgroup, cpuset: replace cpuset_post_attach_flush() with cgroup_subsys->post_attach callback 2016-04-25 15:45:14 -04:00
cgroup.h
cgroup_subsys.h
circ_buf.h
cleancache.h
clk-provider.h
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.h
coda_psdev.h
compaction.h mm, compaction: introduce kcompactd 2016-03-17 15:09:34 -07:00
compat.h compat: add in_compat_syscall to ask whether we're in a compat syscall 2016-03-22 15:36:02 -07:00
compiler-clang.h
compiler-gcc.h compiler-gcc: require gcc 4.8 for powerpc __builtin_bswap16() 2016-05-09 11:54:29 -07:00
compiler-intel.h
compiler.h Merge commit 'fixes.2015.02.23a' into core/rcu 2016-03-15 09:01:06 +01:00
completion.h
component.h
concap.h
configfs.h configfs: fix CONFIGFS_BIN_ATTR_[RW]O definitions 2016-03-25 19:10:03 +01:00
connector.h
console.h
console_struct.h
consolemap.h
container.h
context_tracking.h
context_tracking_state.h
cordic.h
coredump.h
coresight-pmu.h
coresight.h
count_zeros.h
cper.h
cpu.h
cpu_cooling.h
cpu_pm.h
cpu_rmap.h
cpufeature.h
cpufreq-dt.h
cpufreq.h Merge branch 'pm-cpufreq-governor' into pm-cpufreq 2016-03-10 20:46:03 +01:00
cpuhotplug.h
cpuidle.h
cpumask.h cpumask: remove incorrect information from comment 2016-03-22 15:36:02 -07:00
cpuset.h cgroup, cpuset: replace cpuset_post_attach_flush() with cgroup_subsys->post_attach callback 2016-04-25 15:45:14 -04:00
cputime.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc7.h
crc8.h
crc16.h
crc32.h
crc32c.h
cred.h cred/userns: define current_user_ns() as a function 2016-03-22 15:36:02 -07:00
crypto.h
cryptohash.h
cs5535.h
ctype.h
cuda.h
cyclades.h
davinci_emac.h
dax.h
dca.h
dcache.h vfs: add vfs_select_inode() helper 2016-05-10 23:55:01 -04:00
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
delayed_call.h
dell-led.h
devcoredump.h
devfreq-event.h
devfreq.h
devfreq_cooling.h
device-mapper.h dm snapshot: disallow the COW and origin devices from being identical 2016-03-10 17:12:09 -05:00
device.h The clk changes for this release cycle are mostly dominated by 2016-03-23 06:06:45 -07:00
device_cgroup.h
devpts_fs.h devpts: more pty driver interface cleanups 2016-04-26 15:47:32 -07:00
digsig.h
dio.h
dirent.h
dlm.h
dlm_plock.h
dm-dirty-log.h
dm-io.h
dm-kcopyd.h
dm-region-hash.h
dm9000.h
dma-attrs.h
dma-buf.h dma-buf, drm, ion: Propagate error code from dma_buf_start_cpu_access() 2016-03-19 11:03:49 +01:00
dma-contiguous.h
dma-debug.h
dma-direction.h
dma-iommu.h
dma-mapping.h virtio/vhost: new features, performance improvements, cleanups 2016-03-20 13:28:18 -07:00
dma_remapping.h
dmaengine.h Merge branch 'topic/pl330' into for-linus 2016-03-14 11:18:12 +05:30
dmapool.h
dmar.h
dmi.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
drbd.h
drbd_genl.h
drbd_genl_api.h
drbd_limits.h
ds1286.h
ds2782_battery.h
ds17287rtc.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 'efi-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-03-20 18:58:18 -07:00
efs_vh.h
eisa.h
elevator.h
elf-fdpic.h
elf-randomize.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h net: ethtool: export conversion function between u32 and link mode 2016-04-18 14:45:08 -04:00
eventfd.h
eventpoll.h
evm.h
export.h
exportfs.h
ext2_fs.h
extcon.h
f2fs_fs.h mm, fs: get rid of PAGE_CACHE_* and page_cache_{get,release} macros 2016-04-04 10:41:08 -07:00
f75375s.h
falloc.h
fanotify.h
fault-inject.h mm: fault-inject take over bootstrap kmem_cache check 2016-03-15 16:55:16 -07:00
fb.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdtable.h
fec.h
fence.h Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux 2016-03-25 08:48:31 -07:00
file.h
filter.h bpf: add generic constant blinding for use in jits 2016-05-16 13:49:32 -04: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 timer: convert timer_slack_ns from unsigned long to u64 2016-03-17 15:09:34 -07:00
frontswap.h
fs.h These changes contains a fix for overlayfs interacting with some 2016-04-07 17:22:20 -07:00
fs_enet_pd.h
fs_pin.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fscache-cache.h
fscache.h
fscrypto.h fscrypto: don't let data integrity writebacks fail with ENOMEM 2016-04-12 10:25:30 -07:00
fsl-diu-fb.h
fsl_devices.h
fsl_hypervisor.h
fsl_ifc.h
fsldma.h
fsnotify.h untangle fsnotify_d_instantiate() a bit 2016-03-14 00:17:28 -04:00
fsnotify_backend.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2016-03-19 18:52:29 -07:00
ftrace.h arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections 2016-03-25 16:37:42 -07:00
ftrace_irq.h
futex.h
fwnode.h
gameport.h
gcd.h
genalloc.h
genetlink.h
genhd.h
genl_magic_func.h
genl_magic_struct.h block/drbd: align properly u64 in nl messages 2016-05-10 15:43:09 -04:00
getcpu.h
gfp.h mm: exclude ZONE_DEVICE from GFP_ZONE_TABLE 2016-03-17 15:09:34 -07:00
glob.h
goldfish.h
gpio-fan.h
gpio-pxa.h
gpio.h
gpio_keys.h
gpio_mouse.h
hardirq.h
hash.h Minimal fix-up of bad hashing behavior of hash_64() 2016-05-02 13:01:51 -07:00
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.h
hil_mlc.h
hippidevice.h
host1x.h
hp_sdc.h
hpet.h
hrtimer.h timer: convert timer_slack_ns from unsigned long to u64 2016-03-17 15:09:34 -07:00
htcpld.h
htirq.h
huge_mm.h thp: keep huge zero page pinned until tlb flush 2016-04-28 19:34:04 -07:00
hugetlb.h
hugetlb_cgroup.h
hugetlb_inline.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.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-pinctrl.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
i7300_idle.h
i8042.h
i8253.h
icmp.h
icmpv6.h
ide.h
idr.h
ieee80211.h mac80211: add A-MSDU tx support 2016-04-06 13:18:19 +02:00
ieee802154.h ieee802154: add short address helpers 2016-04-13 10:41:08 +02:00
if_arp.h
if_bridge.h bridge: allow zero ageing time 2016-03-11 14:58:58 -05:00
if_eql.h
if_ether.h vxlan: Add checksum check to the features check function 2016-05-03 16:00:54 -04:00
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_team.h
if_tun.h
if_tunnel.h
if_vlan.h
igmp.h
ihex.h
ima.h
in.h
in6.h
inet.h
inet_diag.h
inetdevice.h
init.h
init_ohci1394_dma.h
init_task.h
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel-iommu.h
intel-svm.h
intel_pmic_gpio.h
interrupt.h arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections 2016-03-25 16:37:42 -07:00
interval_tree.h
interval_tree_generic.h
io-64-nonatomic-hi-lo.h
io-64-nonatomic-lo-hi.h
io-mapping.h
io.h memremap: add MEMREMAP_WC flag 2016-03-22 15:36:02 -07:00
ioc3.h
ioc4.h
iocontext.h
iommu-common.h
iommu-helper.h
iommu.h iommu: provide of_xlate pointer unconditionally 2016-04-05 13:25:12 +02:00
iopoll.h
ioport.h libnvdimm for 4.6 2016-03-16 17:45:56 -07:00
ioprio.h
iova.h
ip.h
ipack.h
ipc.h
ipc_namespace.h
ipmi-fru.h
ipmi.h
ipmi_smi.h
ipv6.h net: l3mdev: Add hook in ip and ipv6 2016-05-11 19:31:40 -04:00
ipv6_route.h
irq.h Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-03-15 12:48:48 -07:00
irq_cpustat.h
irq_poll.h
irq_work.h
irqbypass.h
irqchip.h
irqdesc.h
irqdomain.h Staging driver patches for 4.6-rc1 2016-03-17 22:13:41 -07:00
irqflags.h
irqhandler.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h iscsi_ibft: Add prefix-len attr and display netmask 2016-03-14 10:30:57 -04:00
iscsi_ibft.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
jbd2.h
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.h mm, kasan: add GFP flags to KASAN API 2016-03-25 16:37:42 -07:00
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h
kcore.h
kcov.h kernel: add kcov code coverage 2016-03-22 15:36:02 -07:00
kd.h
kdb.h
kdebug.h
kdev_t.h
kern_levels.h
kernel-page-flags.h
kernel.h Nothing major this round. Mostly small clean ups and fixes. 2016-03-24 10:52:25 -07:00
kernel_stat.h
kernelcapi.h
kernfs.h cgroup, kernfs: make mountinfo show properly scoped path for cgroup namespaces 2016-05-09 12:15:03 -04:00
kexec.h
key-type.h
key.h
keyboard.h
kfifo.h kfifo: fix sparse complaints 2016-03-22 15:36:02 -07:00
kgdb.h
khugepaged.h
klist.h
kmemcheck.h
kmemleak.h
kmod.h
kmsg_dump.h
kobj_map.h
kobject.h
kobject_ns.h
kprobes.h
kref.h
ks0108.h
ks8842.h
ks8851_mll.h
ksm.h
kthread.h
ktime.h
kvm_host.h
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-bd2802.h
leds-lp3944.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h
leds.h leds: core: avoid error message when a USB LED device is unplugged 2016-03-14 09:22:20 +01:00
leds_pwm.h
lglock.h
lguest.h
lguest_launcher.h
libata.h
libfdt.h
libfdt_env.h
libnvdimm.h
libps2.h
license.h
lightnvm.h nvme: lightnvm: return ppa completion status 2016-03-18 18:10:38 -07:00
linkage.h
linux_logo.h
lis3lv02d.h
list.h list: kill list_force_poison() 2016-03-09 15:43:42 -08:00
list_bl.h include/linux/list_bl.h: use bool instead of int for boolean functions 2016-03-17 15:09:34 -07:00
list_lru.h
list_nulls.h
list_sort.h
livepatch.h livepatch/module: remove livepatch module notifier 2016-03-17 09:45:10 +01:00
llc.h
llist.h
lockdep.h lockdep: Fix lock_chain::base size 2016-04-23 13:53:03 +02:00
lockref.h
log2.h
lp.h
lru_cache.h
lsm_audit.h
lsm_hooks.h
lz4.h
lzo.h
m48t86.h
mISDNdsp.h
mISDNhw.h
mISDNif.h isdn: Use ktime_t instead of 'struct timeval' 2016-03-20 16:47:13 -04:00
mailbox_client.h
mailbox_controller.h
maple.h
marvell_phy.h
math64.h
max17040_battery.h
mbcache.h
mbus.h bus: mvebu-mbus: provide api for obtaining IO and DRAM window information 2016-03-14 12:19:46 -04:00
mc6821.h
mc146818rtc.h
mcb.h
mdio-bitbang.h
mdio-mux.h
mdio.h net: mdio: Fix lockdep falls positive splat 2016-04-11 21:15:48 -04:00
mei_cl_bus.h
memblock.h
memcontrol.h mm: workingset: make shadow node shrinker memcg aware 2016-03-17 15:09:34 -07:00
memory.h Char/Misc patches for 4.6-rc1 2016-03-17 13:47:50 -07:00
memory_hotplug.h mm/compaction: speed up pageblock_pfn_to_page() when zone is contiguous 2016-03-15 16:55:16 -07:00
mempolicy.h
mempool.h
memremap.h
memstick.h
mg_disk.h
mic_bus.h
micrel_phy.h
microchipphy.h
migrate.h mm, page_owner: track and print last migrate reason 2016-03-15 16:55:16 -07:00
migrate_mode.h
mii.h
miscdevice.h
mm-arch-hooks.h
mm.h mm: thp: calculate the mapcount correctly for THP pages during WP faults 2016-05-12 15:52:50 -07:00
mm_inline.h
mm_types.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
mman.h
mmdebug.h mm, debug: move bad flags printing to bad_page() 2016-03-15 16:55:16 -07:00
mmiotrace.h
mmu_context.h
mmu_notifier.h
mmzone.h mm: scale kswapd watermarks in proportion to memory 2016-03-17 15:09:34 -07:00
mnt_namespace.h
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mpi.h
mpls.h
mpls_iptunnel.h
mroute.h
mroute6.h
msdos_fs.h
msg.h
msi.h
mutex-debug.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
mvebu-pmsu.h
mxm-wmi.h
n_r3964.h
namei.h vfs: add lookup_hash() helper 2016-05-10 23:56:28 -04:00
nd.h
net.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-05-04 00:52:29 -04:00
netdev_features.h netdev_features: Fold NETIF_F_ALL_TSO into NETIF_F_GSO_SOFTWARE 2016-04-21 14:14:58 -04:00
netdevice.h bpf: move bpf_jit_enable declaration 2016-05-16 13:49:31 -04:00
netfilter.h
netfilter_bridge.h
netfilter_defs.h
netfilter_ingress.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netpoll.h
nfs.h
nfs3.h
nfs4.h nfs4.h: add SCSI layout definitions 2016-03-17 14:57:16 -04:00
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_iostat.h
nfs_page.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
nfs_xdr.h
nfsacl.h
nilfs2_fs.h mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage 2016-04-04 10:41:08 -07:00
nl802154.h ieee802154: use nla_put_u64_64bit() 2016-04-25 15:09:11 -04:00
nls.h
nmi.h x86/apic: Remove declaration of unused hw_nmi_is_cpu_stuck 2016-03-23 12:34:17 +01:00
node.h
nodemask.h
notifier.h
ns_common.h
nsc_gpio.h
nsproxy.h
ntb.h NTB: Make _addr functions optional in the API 2016-03-21 19:30:06 -04:00
ntb_transport.h
nubus.h
numa.h
nvme.h
nvmem-consumer.h
nvmem-provider.h
nvram.h
of.h device property: Avoid potential dereferences of invalid pointers 2016-04-27 23:40:02 +02:00
of_address.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_mtd.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-dmaengine.h
omap-gpmc.h
omap-iommu.h
omap-mailbox.h
omapfb.h
once.h
oom.h include/linux/oom.h: remove undefined oom_kills_count()/note_oom_kill() 2016-03-25 16:37:42 -07:00
openvswitch.h
oprofile.h
osq_lock.h
oxu210hp.h
padata.h
page-flags-layout.h mm: exclude ZONE_DEVICE from GFP_ZONE_TABLE 2016-03-17 15:09:34 -07:00
page-flags.h mm: thp: kvm: fix memory corruption in KVM with THP enabled 2016-05-05 17:38:53 -07:00
page-isolation.h
page_counter.h
page_ext.h mm, page_owner: track and print last migrate reason 2016-03-15 16:55:16 -07:00
page_idle.h
page_owner.h mm, page_owner: dump page owner info from dump_page() 2016-03-15 16:55:16 -07:00
page_ref.h mm/page_ref: add tracepoint to track down page reference manipulation 2016-03-17 15:09:34 -07:00
pageblock-flags.h
pagemap.h mm: drop PAGE_CACHE_* and page_cache_{get,release} definition 2016-04-04 10:41:08 -07:00
pagevec.h
parport.h
parport_pc.h
parser.h
pata_arasan_cf_data.h
patchkey.h
path.h
pch_dma.h
pci-acpi.h
pci-aspm.h
pci-ats.h
pci-dma-compat.h
pci-dma.h
pci.h PCI: Add pci_set_vpd_size() to set VPD size 2016-04-15 13:00:11 -05:00
pci_hotplug.h
pci_ids.h PCI: Add PCI_CLASS_SERIAL_USB_DEVICE definition 2016-03-15 08:52:28 -05:00
pcieport_if.h
pda_power.h
pe.h
percpu-defs.h
percpu-refcount.h
percpu-rwsem.h
percpu.h
percpu_counter.h
percpu_ida.h
perf_event.h perf: split perf_trace_buf_prepare into alloc and update parts 2016-04-07 21:04:26 -04:00
perf_regs.h
personality.h
pfn.h
pfn_t.h
phonet.h
phy.h net: phy: add phy_ethtool_{get|set}_link_ksettings 2016-05-10 15:06:19 -04:00
phy_fixed.h phy: fixed: Fix removal of phys. 2016-03-14 15:43:11 -04:00
pid.h
pid_namespace.h
pim.h
pipe_fs_i.h
pkeys.h
pktcdvd.h
pl320-ipc.h
platform_device.h
plist.h
pm-trace.h
pm.h
pm2301_charger.h
pm_clock.h PM / clk: Add support for obtaining clocks from device-tree 2016-03-17 02:32:04 +01:00
pm_domain.h
pm_opp.h
pm_qos.h
pm_runtime.h
pm_wakeirq.h
pm_wakeup.h
pmem.h pmem: fix BUG() error in pmem.h:48 on X86_32 2016-04-14 09:01:47 -06:00
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h mm/page_poisoning.c: allow for zero poisoning 2016-03-15 16:55:16 -07:00
poll.h timer: convert timer_slack_ns from unsigned long to u64 2016-03-17 15:09:34 -07:00
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-gpio.h
pps_kernel.h
pr.h
preempt.h
prefetch.h
printk.h
proc_fs.h
proc_ns.h
profile.h
projid.h
property.h
proportions.h
psci.h
pstore.h
pstore_ram.h pstore: Add support for 64 Bit address space 2016-03-10 09:43:36 -08:00
pti.h
ptp_classify.h
ptp_clock_kernel.h
ptrace.h
pvclock_gtod.h
pwm.h
pwm_backlight.h
pxa2xx_ssp.h
pxa168_eth.h
qcom_scm.h
qnx6_fs.h
quicklist.h fix Christoph's email addresses 2016-03-17 15:09:34 -07:00
quota.h
quotaops.h
radix-tree.h radix-tree,shmem: introduce radix_tree_iter_next() 2016-03-17 15:09:34 -07:00
raid_class.h
ramfs.h
random.h
range.h
ras.h
ratelimit.h
rational.h
rbtree.h
rbtree_augmented.h
rbtree_latch.h
rcu_sync.h
rculist.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-04-23 18:51:33 -04:00
rculist_bl.h
rculist_nulls.h soreuseport: fix ordering for mixed v4/v6 sockets 2016-04-14 21:14:03 -04:00
rcupdate.h Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-03-15 13:50:29 -07:00
rcutiny.h
rcutree.h
reboot.h
reciprocal_div.h
regmap.h
regset.h
relay.h
remoteproc.h
reservation.h
reset-controller.h
reset.h
resource.h
resource_ext.h
rfkill-regulator.h
rfkill.h
rhashtable.h rhashtable: accept GFP flags in rhashtable_walk_init 2016-04-05 10:56:32 +02:00
ring_buffer.h
rio.h rapidio: add outbound window support 2016-03-22 15:36:02 -07:00
rio_drv.h rapidio: add outbound window support 2016-03-22 15:36:02 -07:00
rio_ids.h
rio_regs.h rapidio: add query_mport operation 2016-03-22 15:36:02 -07:00
rmap.h mm: make remove_migration_ptes() beyond mm/migration.c 2016-03-17 15:09:34 -07:00
rmi.h Input: synaptics-rmi4 - add SPI transport driver 2016-03-10 16:04:24 -08:00
rndis.h
root_dev.h
rpmsg.h
rslib.h
rtc-ds2404.h
rtc-v3020.h
rtc.h rtc: Add functions to set and read rtc offset 2016-03-14 17:08:15 +01:00
rtmutex.h
rtnetlink.h
rwlock.h
rwlock_api_smp.h
rwlock_types.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
s3c_adc_battery.h
sa11x0-dma.h
scatterlist.h
scc.h
sched.h timers/nohz: Convert tick dependency mask to atomic_t 2016-03-29 11:52:11 +02:00
sched_clock.h
scif.h
scpi_protocol.h
screen_info.h
sctp.h sctp: add sctp_info dump api for sctp_diag 2016-04-15 17:29:35 -04:00
scx200.h
scx200_gpio.h
sdb.h
sdla.h
seccomp.h
securebits.h
security.h
selection.h
selinux.h
sem.h
semaphore.h
seq_buf.h
seq_file.h Make file credentials available to the seqfile interfaces 2016-04-14 12:56:09 -07:00
seq_file_net.h
seqlock.h
seqno-fence.h
serial.h
serial_8250.h
serial_bcm63xx.h
serial_core.h
serial_max3100.h
serial_pnx8xxx.h
serial_s3c.h
serial_sci.h
serio.h
sfi.h
sfi_acpi.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
signalfd.h
sirfsoc_dma.h
sizes.h
skbuff.h net: relax expensive skb_unclone() in iptunnel_handle_offloads() 2016-05-03 00:22:19 -04:00
slab.h mm, kasan: add GFP flags to KASAN API 2016-03-25 16:37:42 -07:00
slab_def.h mm, kasan: SLAB support 2016-03-25 16:37:42 -07:00
slub_def.h mm, kasan: SLAB support 2016-03-25 16:37:42 -07:00
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h
smpboot.h
smsc911x.h
smscphy.h
sock_diag.h
socket.h net: Add Qualcomm IPC router 2016-05-08 23:46:14 -04:00
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h
spinlock_types_up.h
spinlock_up.h
splice.h
spmi.h
srcu.h
ssbi.h
stackdepot.h mm, kasan: stackdepot implementation. Enable stackdepot for SLAB 2016-03-25 16:37:42 -07:00
stackprotector.h
stacktrace.h
start_kernel.h
stat.h
statfs.h
static_key.h
stddef.h
ste_modem_shm.h
stm.h
stmmac.h stmmac: add new DT platform entries for GMAC4 2016-04-02 20:23:09 -04:00
stmp3xxx_rtc_wdt.h
stmp_device.h
stop_machine.h
string.h lib: move strtobool() to kstrtobool() 2016-03-17 15:09:34 -07:00
string_helpers.h
stringify.h
sudmac.h
sungem_phy.h
sunserialcore.h
sunxi-rsb.h
superhyway.h
suspend.h
svga.h
sw842.h
swab.h
swait.h
swap.h mm: thp: calculate the mapcount correctly for THP pages during WP faults 2016-05-12 15:52:50 -07:00
swap_cgroup.h
swapfile.h
swapops.h
swiotlb.h
sxgbe_platform.h
synclink.h
sys.h
sys_soc.h
syscalls.h
syscore_ops.h
sysctl.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 tcp: Add RFC4898 tcpEStatsPerfDataSegsOut/In 2016-03-14 14:55:26 -04:00
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h thermal: consistently use int for trip temp 2016-04-20 20:31:14 -07:00
thinkpad_acpi.h
thread_info.h
threads.h
ti_wilink_st.h
tick.h param: convert some "on"/"off" users to strtobool 2016-03-17 15:09:34 -07:00
tifm.h
timb_dma.h
timb_gpio.h
time.h
time64.h
timecounter.h
timekeeper_internal.h
timekeeping.h
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
timex.h
topology.h
torture.h
toshiba.h
tpm.h
tpm_command.h
trace_clock.h
trace_events.h perf, bpf: minimize the size of perf_trace_() tracepoint handler 2016-04-21 13:48:20 -04:00
trace_seq.h
tracefs.h
tracehook.h
tracepoint-defs.h tracepoints: move trace_print_flags definitions to tracepoint-defs.h 2016-03-15 16:55:16 -07:00
tracepoint.h tracing: Fix check for cpu online when event is disabled 2016-03-09 11:58:41 -05:00
transport_class.h
tsacct_kern.h
tty.h
tty_driver.h devpts: more pty driver interface cleanups 2016-04-26 15:47:32 -07:00
tty_flip.h
tty_ldisc.h
typecheck.h
types.h
u64_stats_sync.h tcp: fix lockdep splat in tcp_snd_una_update() 2016-05-04 16:55:11 -04:00
uaccess.h
ucb1400.h
ucs2_string.h
udp.h udp: Add GRO functions to UDP socket 2016-04-07 16:53:29 -04:00
uidgid.h
uinput.h
uio.h fix the copy vs. map logics in blk_rq_map_user_iov() 2016-04-08 19:46:28 -04:00
uio_driver.h
uprobes.h
usb.h
usb_usual.h USB: uas: Add a new NO_REPORT_LUNS quirk 2016-04-13 12:02:28 -07:00
usbdevice_fs.h
user-return-notifier.h
user.h
user_namespace.h
userfaultfd_k.h
util_macros.h
uts.h
utsname.h
uuid.h
uwb.h
verify_pefile.h
vermagic.h
vexpress.h
vfio.h
vfs.h
vga_switcheroo.h
vgaarb.h
via-core.h
via-gpio.h
via.h
via_i2c.h
videodev2.h
virtio.h
virtio_byteorder.h
virtio_caif.h
virtio_config.h
virtio_console.h
virtio_mmio.h
virtio_ring.h
vlynq.h
vm_event_item.h thp, vmstats: count deferred split events 2016-03-17 15:09:34 -07:00
vm_sockets.h
vmacache.h
vmalloc.h
vme.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
wait.h
wanrouter.h
watchdog.h watchdog: Add support for minimum time between heartbeats 2016-03-16 21:11:19 +01:00
wireless.h
wkup_m3_ipc.h
wl12xx.h
wm97xx.h
workqueue.h
writeback.h
ww_mutex.h
xattr.h
xz.h
yam.h
z2_battery.h
zbud.h
zconf.h
zlib.h
zorro.h
zpool.h
zsmalloc.h
zutil.h