Centos-kernel-stream-9/include/linux
Jason Baron 28d82dc1c4 epoll: limit paths
The current epoll code can be tickled to run basically indefinitely in
both loop detection path check (on ep_insert()), and in the wakeup paths.
The programs that tickle this behavior set up deeply linked networks of
epoll file descriptors that cause the epoll algorithms to traverse them
indefinitely.  A couple of these sample programs have been previously
posted in this thread: https://lkml.org/lkml/2011/2/25/297.

To fix the loop detection path check algorithms, I simply keep track of
the epoll nodes that have been already visited.  Thus, the loop detection
becomes proportional to the number of epoll file descriptor and links.
This dramatically decreases the run-time of the loop check algorithm.  In
one diabolical case I tried it reduced the run-time from 15 mintues (all
in kernel time) to .3 seconds.

Fixing the wakeup paths could be done at wakeup time in a similar manner
by keeping track of nodes that have already been visited, but the
complexity is harder, since there can be multiple wakeups on different
cpus...Thus, I've opted to limit the number of possible wakeup paths when
the paths are created.

This is accomplished, by noting that the end file descriptor points that
are found during the loop detection pass (from the newly added link), are
actually the sources for wakeup events.  I keep a list of these file
descriptors and limit the number and length of these paths that emanate
from these 'source file descriptors'.  In the current implemetation I
allow 1000 paths of length 1, 500 of length 2, 100 of length 3, 50 of
length 4 and 10 of length 5.  Note that it is sufficient to check the
'source file descriptors' reachable from the newly added link, since no
other 'source file descriptors' will have newly added links.  This allows
us to check only the wakeup paths that may have gotten too long, and not
re-check all possible wakeup paths on the system.

In terms of the path limit selection, I think its first worth noting that
the most common case for epoll, is probably the model where you have 1
epoll file descriptor that is monitoring n number of 'source file
descriptors'.  In this case, each 'source file descriptor' has a 1 path of
length 1.  Thus, I believe that the limits I'm proposing are quite
reasonable and in fact may be too generous.  Thus, I'm hoping that the
proposed limits will not prevent any workloads that currently work to
fail.

In terms of locking, I have extended the use of the 'epmutex' to all
epoll_ctl add and remove operations.  Currently its only used in a subset
of the add paths.  I need to hold the epmutex, so that we can correctly
traverse a coherent graph, to check the number of paths.  I believe that
this additional locking is probably ok, since its in the setup/teardown
paths, and doesn't affect the running paths, but it certainly is going to
add some extra overhead.  Also, worth noting is that the epmuex was
recently added to the ep_ctl add operations in the initial path loop
detection code using the argument that it was not on a critical path.

Another thing to note here, is the length of epoll chains that is allowed.
Currently, eventpoll.c defines:

/* Maximum number of nesting allowed inside epoll sets */
#define EP_MAX_NESTS 4

This basically means that I am limited to a graph depth of 5 (EP_MAX_NESTS
+ 1).  However, this limit is currently only enforced during the loop
check detection code, and only when the epoll file descriptors are added
in a certain order.  Thus, this limit is currently easily bypassed.  The
newly added check for wakeup paths, stricly limits the wakeup paths to a
length of 5, regardless of the order in which ep's are linked together.
Thus, a side-effect of the new code is a more consistent enforcement of
the graph depth.

Thus far, I've tested this, using the sample programs previously
mentioned, which now either return quickly or return -EINVAL.  I've also
testing using the piptest.c epoll tester, which showed no difference in
performance.  I've also created a number of different epoll networks and
tested that they behave as expectded.

I believe this solves the original diabolical test cases, while still
preserving the sane epoll nesting.

Signed-off-by: Jason Baron <jbaron@redhat.com>
Cc: Nelson Elhage <nelhage@ksplice.com>
Cc: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-01-12 20:13:04 -08:00
..
amba Device tree conversions for samsung and tegra 2012-01-09 14:28:38 -08:00
bcma bcma: use static keyword for inline function declaration in bcma.h 2011-12-13 15:31:27 -05:00
byteorder
caif
can
ceph
crush
decompress
dvb
hdlc
i2c
input Input: add driver for pixcir i2c touchscreens 2011-12-30 15:25:52 -08:00
isdn
lockd net: use IS_ENABLED(CONFIG_IPV6) 2011-12-11 18:25:16 -05:00
mfd Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound 2012-01-12 08:00:30 -08:00
mlx4 mlx4_core: Changing link sensing logic 2011-12-19 14:57:07 -05:00
mmc mmc: core: Add quirk for long data read time 2011-12-10 16:18:35 -05:00
mtd mtd: do not use mtd->block_markbad directly 2012-01-09 18:26:26 +00:00
netfilter Merge branch 'for-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2012-01-09 13:08:28 -08:00
netfilter_arp
netfilter_bridge
netfilter_ipv4 netfilter: xtables: give xt_ecn its own name 2011-12-27 20:31:38 +01:00
netfilter_ipv6
nfc
nfsd
pinctrl pinctrl: remove unnecessary max pin number 2012-01-03 09:10:09 +01:00
platform_data Cleanups on various subarchitectures 2012-01-09 14:21:03 -08:00
power sbs-battery: Rename internals to new name 2012-01-06 05:22:21 +04:00
raid md: create externally visible flags for supporting hot-replace. 2011-12-23 10:17:51 +11:00
regulator regulator: add regulator_bulk_force_disable function 2012-01-03 20:20:01 +00:00
rtc
spi
ssb ssb: extract FEM info from SPROM 2011-12-13 15:30:49 -05:00
sunrpc Merge branch 'nfs-for-3.3' of git://git.linux-nfs.org/projects/trondmy/linux-nfs 2012-01-10 14:57:40 -08:00
tc_act
tc_ematch
unaligned
usb usb: ch9: fix up MaxStreams helper 2012-01-04 15:52:42 -08:00
uwb
wimax
8250_pci.h
Kbuild unix_diag: Include unix_diag.h into header-y target 2011-12-30 16:42:19 -05:00
a.out.h
ac97_codec.h
acct.h
acpi.h PCI/ACPI: Make acpiphp ignore root bridges using SHPC native hotplug 2011-12-05 10:21:48 -08:00
acpi_io.h
acpi_pmtmr.h
adb.h
adfs_fs.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
ahci_platform.h ahci: platform support for suspend/resume 2012-01-08 19:14:59 -05:00
aio.h
aio_abi.h
alarmtimer.h
altera_jtaguart.h
altera_uart.h
amd-iommu.h iommu/amd: Add invalidate-context call-back 2011-12-15 11:15:39 +01:00
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
arcdevice.h
arcfb.h
async.h
async_tx.h
ata.h
ata_platform.h ARM: Orion: Remove address map info from all platform data structures 2011-12-13 18:46:56 -05:00
atalk.h
ath9k_platform.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmel-mci.h
atmel-pwm-bl.h
atmel-ssc.h
atmel_pdc.h
atmel_pwm.h
atmel_serial.h
atmel_tc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
atomic.h
attribute_container.h
audit.h switch kern_ipc_perm to umode_t 2012-01-03 22:55:17 -05:00
auto_dev-ioctl.h
auto_fs.h
auto_fs4.h
auxvec.h
average.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
basic_mmio_gpio.h
baycom.h
bcd.h
bch.h
bfin_mac.h
bfs_fs.h
binfmts.h
bio.h
bit_spinlock.h
bitmap.h
bitops.h perf, x86: Implement event scheduler helper functions 2011-12-06 08:33:54 +01:00
bitrev.h
blk-iopoll.h
blk_types.h
blkdev.h
blkpg.h
blktrace_api.h
blockgroup_lock.h
bma150.h
bootmem.h
bottom_half.h
bpqether.h
brcmphy.h
bsearch.h
bsg-lib.h
bsg.h
btree-128.h
btree-type.h
btree.h
buffer_head.h
bug.h
c2port.h
cache.h
can.h
capability.h
capi.h
cb710.h
cciss_defs.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
cfag12864b.h
cgroup.h Merge branch 'for-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup 2012-01-09 12:59:24 -08:00
cgroup_subsys.h
cgroupstats.h
chio.h
circ_buf.h
cleancache.h
clk.h clk: add helper functions clk_prepare_enable and clk_disable_unprepare 2011-12-28 21:25:35 +08:00
clkdev.h
clksrc-dbx500-prcmu.h
clockchips.h
clocksource.h time/clocksource: Fix kernel-doc warnings 2011-12-19 11:41:40 +01:00
cm4000_cs.h
cn_proc.h
cnt32_to_63.h
coda.h
coda_psdev.h
coff.h
com20020.h
compaction.h
compat.h switch open and mkdir syscalls to umode_t 2012-01-03 22:55:19 -05:00
compiler-gcc.h
compiler-gcc3.h
compiler-gcc4.h kernel.h: add BUILD_BUG() macro 2012-01-10 16:30:42 -08:00
compiler-intel.h
compiler.h kernel.h: add BUILD_BUG() macro 2012-01-10 16:30:42 -08:00
completion.h
comstats.h
concap.h
configfs.h configfs: convert to umode_t 2012-01-03 22:54:57 -05:00
connector.h
console.h
console_struct.h
consolemap.h
const.h
cordic.h
coredump.h
cper.h
cpu.h Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
cpu_pm.h
cpu_rmap.h
cpufreq.h
cpuidle.h powerpc/cpuidle: Enable cpuidle and directly call cpuidle_idle_call() for pSeries 2011-12-08 13:57:20 +11:00
cpumask.h
cpuset.h
cramfs_fs.h
cramfs_fs_sb.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
crypto.h
cryptohash.h
cryptouser.h
cs5535.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
davinci_emac.h
dca.h
dcache.h fix shrink_dcache_parent() livelock 2012-01-10 13:06:32 -05:00
dcbnl.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-01-08 12:19:57 -08:00
debugobjects.h
delay.h
delayacct.h
devfreq.h
device-mapper.h
device.h Merge branch 'for-linus2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2012-01-08 12:19:57 -08:00
device_cgroup.h
devpts_fs.h
digsig.h
dio.h
dirent.h
display.h
dlm.h dlm: add recovery callbacks 2012-01-04 08:56:31 -06:00
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-dirty-log.h
dm-io.h
dm-ioctl.h
dm-kcopyd.h
dm-log-userspace.h
dm-region-hash.h
dm9000.h
dma-attrs.h
dma-buf.h dma-buf: Introduce dma buffer sharing mechanism 2012-01-06 10:20:21 +00:00
dma-debug.h
dma-direction.h
dma-mapping.h
dma_remapping.h iommu: Export intel_iommu_enabled to signal when iommu is in use 2011-12-16 08:49:57 -08:00
dmaengine.h
dmapool.h
dmar.h
dmi.h
dn.h
dnotify.h
dns_resolver.h
dqblk_qtree.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
drbd.h
drbd_limits.h
drbd_nl.h
drbd_tag_magic.h
ds1286.h
ds2782_battery.h
ds17287rtc.h
dtlk.h
dw_apb_timer.h
dw_dmac.h
dynamic_debug.h
dynamic_queue_limits.h
ecryptfs.h
edac.h edac: convert sysdev_class to a regular subsystem 2011-12-14 15:21:07 -08:00
edd.h
eeprom_93cx6.h
eeprom_93xx46.h
efi.h efi: Add EFI file I/O data types 2011-12-09 17:35:51 -08:00
efs_fs_sb.h
efs_vh.h
eisa.h
elevator.h
elf-em.h
elf-fdpic.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h net: use IS_ENABLED(CONFIG_IPV6) 2011-12-11 18:25:16 -05:00
etherdevice.h
ethtool.h ethtool: Remove ethtool_ops::set_rx_ntuple operation 2012-01-04 14:10:28 -05:00
eventfd.h
eventpoll.h epoll: limit paths 2012-01-12 20:13:04 -08:00
evm.h
export.h
exportfs.h
ext2_fs.h
ext2_fs_sb.h
ext3_fs.h ext3: propagate umode_t 2012-01-03 22:54:58 -05:00
ext3_fs_i.h
ext3_fs_sb.h
ext3_jbd.h
f75375s.h
fadvise.h
falloc.h
fanotify.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdreg.h
fdtable.h
fec.h
fib_rules.h
fiemap.h
file.h
filter.h
fips.h
firewire-cdev.h
firewire-constants.h
firewire.h
firmware-map.h
firmware.h
flat.h
flex_array.h
font.h
freezer.h PM / Freezer: fix return value of freezable_schedule_timeout_killable() 2011-12-27 01:06:33 +01:00
fs.h epoll: limit paths 2012-01-12 20:13:04 -08:00
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fscache-cache.h
fscache.h
fsl-diu-fb.h
fsl_devices.h
fsl_hypervisor.h
fsnotify.h
fsnotify_backend.h
ftrace.h
ftrace_event.h tracing: Restore system filter behavior 2011-12-05 13:28:45 -05:00
ftrace_irq.h
fuse.h
futex.h
gameport.h
gcd.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
genetlink.h
genhd.h switch device_get_devnode() and ->devnode() to umode_t * 2012-01-03 22:54:55 -05:00
getcpu.h
gfp.h mm: try to distribute dirty pages fairly across zones 2012-01-10 16:30:43 -08:00
gfs2_ondisk.h
gigaset_dev.h
gpio-fan.h
gpio-i2cmux.h
gpio-pxa.h
gpio.h
gpio_keys.h
gpio_mouse.h
gsmmux.h
hardirq.h rcu: Track idleness independent of idle tasks 2011-12-11 10:31:24 -08:00
hash.h
hdlc.h
hdlcdrv.h
hdreg.h
hid-debug.h
hid-roccat.h
hid.h Merge branch 'hid-battery' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen into for-linus 2012-01-09 11:24:59 +01:00
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hp_sdc.h
hpet.h
hrtimer.h
htcpld.h
htirq.h
huge_mm.h
hugetlb.h
hugetlb_inline.h
hw_breakpoint.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hwspinlock.h
hyperv.h net/hyperv: Add support for jumbo frame up to 64KB 2012-01-04 16:13:05 -08:00
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-dev.h
i2c-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-tegra.h
i2c-xiic.h
i2c.h Merge branch 'driver-core-next' into Linux 3.2 2012-01-06 11:42:52 -08:00
i2o-dev.h
i2o.h
i8k.h
i7300_idle.h
i8042.h
i8253.h
i82593.h
ibmtr.h
icmp.h
icmpv6.h
ide.h switch procfs to umode_t use 2012-01-03 22:54:56 -05:00
idr.h
ieee80211.h ieee80211: Introduce ieee80211_is_first_frag 2011-12-13 15:30:40 -05:00
if.h
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h if_ether.h: Add IEEE 802.1 Local Experimental Ethertype 1. 2011-12-05 18:27:56 -05:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h
if_ltalk.h
if_macvlan.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_strip.h
if_team.h
if_tr.h
if_tun.h
if_tunnel.h
if_vlan.h vlan: introduce functions to do mass addition/deletion of vids by another device 2011-12-08 19:52:42 -05:00
if_x25.h
igmp.h
ihex.h
ima.h
in.h
in6.h
in_route.h
inet.h
inet_diag.h inet_diag: Add the SKMEMINFO extension 2011-12-30 16:42:19 -05:00
inet_lro.h
inetdevice.h
init.h
init_ohci1394_dma.h
init_task.h Merge branch 'for-3.3' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup 2012-01-09 12:59:24 -08:00
initrd.h
inotify.h
input-polldev.h
input.h
integrity.h
intel-iommu.h
intel_mid_dma.h
intel_pmic_gpio.h
interrupt.h
io-mapping.h
io.h
ioc3.h
ioc4.h
iocontext.h
ioctl.h
iommu-helper.h
iommu.h Merge branches 'iommu/page-sizes' and 'iommu/group-id' into next 2012-01-09 13:06:28 +01:00
ioport.h
ioprio.h
iova.h
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h switch kern_ipc_perm to umode_t 2012-01-03 22:55:17 -05:00
ipc_namespace.h
ipmi.h
ipmi_msgdefs.h
ipmi_smi.h
ipsec.h
ipv6.h net: use IS_ENABLED(CONFIG_IPV6) 2011-12-11 18:25:16 -05:00
ipv6_route.h
ipx.h
irda.h
irq.h
irq_cpustat.h
irq_work.h
irqdesc.h
irqdomain.h ARM: 7235/1: irqdomain: export irq_domain_simple_ops for !CONFIG_OF 2011-12-23 22:33:58 +00:00
irqflags.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_boot_sysfs.h switch ->is_visible() to returning umode_t 2012-01-03 22:54:55 -05:00
iscsi_ibft.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ivtv.h
ivtvfb.h
ixjuser.h
jbd.h jbd: Remove j_barrier mutex 2012-01-09 13:52:09 +01:00
jbd2.h jbd2: clear revoked flag on buffers before a new transaction started 2011-12-28 17:46:46 -05:00
jbd_common.h
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
jump_label.h jump_label: Provide jump_label_key initializers 2011-12-06 20:41:03 +01:00
jz4740-adc.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
kbuild.h
kconfig.h
kd.h
kdb.h
kdebug.h
kdev_t.h
kernel-page-flags.h
kernel.h treewide: convert uses of ATTRIB_NORETURN to __noreturn 2012-01-12 20:13:03 -08:00
kernel_stat.h sched/accounting: Change cpustat fields to an array 2011-12-06 09:06:38 +01:00
kernelcapi.h
kexec.h
key-type.h
key.h
keyboard.h
keyctl.h
kfifo.h
kgdb.h
khugepaged.h
klist.h
kmalloc_sizes.h
kmemcheck.h
kmemleak.h
kmod.h PM / Sleep: Fix freezer failures due to racy usermodehelper_is_disabled() 2011-12-09 23:36:36 +01:00
kmsg_dump.h
kobj_map.h
kobject.h kobject: remove kset_find_obj_hinted() 2011-12-21 15:13:54 -08:00
kobject_ns.h
kprobes.h
kref.h kref: fix up the kfree build problems 2011-12-14 11:19:07 -08:00
ks0108.h
ks8842.h
ksm.h
kthread.h
ktime.h
kvm.h KVM: Don't automatically expose the TSC deadline timer in cpuid 2011-12-26 13:27:44 +02:00
kvm_host.h KVM: Expose a version 2 architectural PMU to a guests 2011-12-27 11:24:29 +02:00
kvm_para.h KVM: Fix whitespace in kvm_para.h 2011-12-27 11:26:41 +02:00
kvm_types.h
l2tp.h
lapb.h
latencytop.h
lcd.h
lcm.h
led-lm3530.h
leds-bd2802.h
leds-lp3944.h
leds-lp5521.h
leds-lp5523.h
leds-pca9532.h
leds-regulator.h
leds-tca6507.h leds: add driver for TCA6507 LED controller 2012-01-10 16:30:49 -08:00
leds.h
leds_pwm.h
lglock.h VFS: Fix race between CPU hotplug and lglocks 2011-12-22 02:02:20 -05:00
lguest.h
lguest_launcher.h
libata.h
libps2.h
license.h
limits.h
linkage.h include/linux/linkage.h: remove unused ATTRIB_NORET macro 2012-01-12 20:13:03 -08:00
linux_logo.h
lis3lv02d.h
list.h
list_bl.h
list_nulls.h
list_sort.h
llc.h
llist.h
lockdep.h
log2.h linux/log2.h: Fix rounddown_pow_of_two(1) 2011-12-12 22:06:55 -08:00
loop.h
lp.h
lp8727.h lp8727_charger: Some minor fixes for the header 2012-01-04 16:25:45 +04:00
lru_cache.h
lsm_audit.h
lzo.h
m48t86.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
magic.h
major.h
map_to_7segment.h
maple.h
marvell_phy.h
math64.h
matroxfb.h
max17040_battery.h
mbcache.h
mbus.h ARM: Orion: Get address map from plat-orion instead of via platform_data 2011-12-13 18:46:55 -05:00
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mdio-bitbang.h
mdio-gpio.h
mdio.h
media.h
memblock.h memblock: Reimplement memblock allocation using reverse free area iterator 2011-12-08 10:22:09 -08:00
memcontrol.h net: Fix build with INET disabled. 2012-01-09 13:44:23 -08:00
memory.h convert 'memory' sysdev_class to a regular subsystem 2011-12-21 14:48:43 -08:00
memory_hotplug.h
mempolicy.h mm/mempolicy.c: mpol_equal(): use bool 2012-01-10 16:30:45 -08:00
mempool.h
memstick.h
meye.h
mg_disk.h
micrel_phy.h
migrate.h
mii.h
minix_fs.h
miscdevice.h switch miscdevice to umode_t 2012-01-03 22:55:15 -05:00
mm.h Merge branch 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-01-11 19:12:10 -08:00
mm_inline.h
mm_types.h mm,slub,x86: decouple size of struct page from CONFIG_CMPXCHG_LOCAL 2012-01-12 20:13:03 -08:00
mman.h
mmdebug.h
mmiotrace.h
mmtimer.h
mmu_context.h
mmu_notifier.h
mmzone.h mm: exclude reserved pages from dirtyable memory 2012-01-10 16:30:43 -08:00
mnt_namespace.h vfs: take /proc/*/mounts and friends to fs/proc_namespace.c 2012-01-03 22:57:13 -05:00
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h vfs: move fsnotify junk to struct mount 2012-01-03 22:57:12 -05:00
mpage.h
mpi.h
mqueue.h
mroute.h
mroute6.h
msdos_fs.h
msg.h
msi.h PCI/sysfs: add per pci device msi[x] irq listing (v5) 2012-01-06 12:10:25 -08:00
msm_mdp.h
mtio.h
mutex-debug.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
mxm-wmi.h
n_r3964.h
namei.h
nbd.h
ncp.h
ncp_fs.h
ncp_mount.h
ncp_no.h
neighbour.h
net.h
net_dropmon.h
net_tstamp.h
netdev_features.h
netdevice.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-01-09 14:46:52 -08:00
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h inet_diag: Partly rename inet_ to sock_ 2011-12-06 13:57:36 -05:00
netpoll.h
netrom.h
nfc.h NFC: Export a new attribute nfcid1 in target info 2012-01-04 14:30:43 -05:00
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_mount.h
nfs_fs.h pull manipulations of rpc_cred inside alloc_nfs_open_context() 2012-01-03 22:52:34 -05:00
nfs_fs_i.h
nfs_fs_sb.h NFS: Cache state owners after files are closed 2012-01-05 11:59:18 -05:00
nfs_idmap.h NFSv4: Save the owner/group name string when doing open 2012-01-07 13:22:46 -05:00
nfs_iostat.h
nfs_mount.h
nfs_page.h
nfs_xdr.h NFSv4: Save the owner/group name string when doing open 2012-01-07 13:22:46 -05:00
nfsacl.h
nilfs2_fs.h
nl80211.h cfg80211: Return beacon loss count in station 2011-12-19 14:34:13 -05:00
nl802154.h
nls.h
nmi.h
node.h convert 'memory' sysdev_class to a regular subsystem 2011-12-21 14:48:43 -08:00
nodemask.h
notifier.h
nsc_gpio.h
nsproxy.h
nubus.h
numa.h
nvram.h
nwpserial.h
of.h devicetree/next changes queued for v3.3 merge window 2012-01-07 12:18:52 -08:00
of_address.h
of_device.h
of_fdt.h ARM/of: allow *machine_desc.dt_compat to be const 2011-12-27 10:57:13 -06:00
of_gpio.h of: create of_phandle_args to simplify return of phandle parsing data 2011-12-12 13:40:16 -07:00
of_i2c.h
of_irq.h
of_mdio.h
of_net.h
of_pci.h
of_pdt.h
of_platform.h
of_spi.h
omap3isp.h
omapfb.h
oom.h
openvswitch.h
opp.h
oprofile.h
oxu210hp.h
padata.h
page-debug-flags.h mm: more intensive memory corruption debugging 2012-01-10 16:30:42 -08:00
page-flags.h
page-isolation.h
page_cgroup.h
pageblock-flags.h
pagemap.h
pagevec.h mm: remove unused pagevec_free 2012-01-10 16:30:41 -08:00
param.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: Rework ASPM disable code 2012-01-06 12:10:26 -08:00
pci-ats.h
pci-dma.h
pci.h PCI: Increase resource array mask bit size in pcim_iomap_regions() 2012-01-06 12:15:21 -08:00
pci_hotplug.h
pci_ids.h PCI: pci_ids: add device ids for STA2X11 device (aka ConneXT) 2012-01-06 12:11:40 -08:00
pci_regs.h Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-01-11 18:50:26 -08:00
pcieport_if.h
pda_power.h
percpu-defs.h
percpu.h percpu: Remove irqsafe_cpu_xxx variants 2011-12-22 10:40:20 -08:00
percpu_counter.h
perf_event.h perf events: Add PERF_COUNT_HW_REF_CPU_CYCLES generic PMU event 2011-12-21 10:26:37 +01:00
personality.h
pfkeyv2.h
pfn.h
pg.h
phantom.h
phonedev.h
phonet.h
phy.h
phy_fixed.h
pid.h
pid_namespace.h procfs: add hidepid= and gid= mount options 2012-01-10 16:30:54 -08:00
pim.h
pipe_fs_i.h
pkt_cls.h
pkt_sched.h net_sched: sfq: extend limits 2012-01-05 14:01:21 -05:00
pktcdvd.h
platform_device.h Merge branch 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm 2012-01-08 13:10:57 -08:00
plist.h
pm.h Merge branch 'pm-runtime' into pm-for-linus 2011-12-25 23:43:05 +01:00
pm_clock.h
pm_domain.h PM / Domains: Provide an always on power domain governor 2011-12-09 23:22:41 +01:00
pm_qos.h Merge branch 'pm-domains' into pm-for-linus 2011-12-25 23:43:11 +01:00
pm_runtime.h
pm_wakeup.h
pmu.h
pnfs_osd_xdr.h
pnp.h
poison.h memblock: Kill sentinel entries at the end of static region arrays 2011-12-08 10:22:07 -08:00
poll.h
posix-clock.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
power_supply.h Merge branch 'power-supply-scope' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen 2012-01-04 09:09:35 +04:00
ppdev.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
pps-gpio.h
pps.h
pps_kernel.h
prctl.h
preempt.h
prefetch.h
printk.h
prio_heap.h
prio_tree.h
proc_fs.h procfs: make proc_get_link to use dentry instead of inode 2012-01-10 16:30:54 -08:00
profile.h
proportions.h
pstore.h
pti.h
ptp_classify.h
ptp_clock.h
ptp_clock_kernel.h
ptrace.h
pwm.h
pwm_backlight.h
pxa2xx_ssp.h
pxa168_eth.h
qnx4_fs.h
qnxtypes.h
quicklist.h
quota.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h pohmelfs: propagate umode_t 2012-01-03 22:55:07 -05:00
ramoops.h
random.h
range.h
rar_register.h
ratelimit.h
rational.h
raw.h
rbtree.h
rculist.h
rculist_bl.h
rculist_nulls.h
rcupdate.h rcu: Document same-context read-side constraints 2011-12-11 10:32:06 -08:00
rcutiny.h
rcutree.h
rds.h
reboot.h
reciprocal_div.h
regmap.h Merge branch 'topic/irq' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap into wm8994-mfd 2011-12-13 00:12:48 +08:00
regset.h
reiserfs_acl.h
reiserfs_fs.h reiserfs: Properly display mount options in /proc/mounts 2012-01-06 23:20:13 -05:00
reiserfs_fs_i.h
reiserfs_fs_sb.h reiserfs: Properly display mount options in /proc/mounts 2012-01-06 23:20:13 -05:00
reiserfs_xattr.h
relay.h switch debugfs to umode_t 2012-01-03 22:54:56 -05:00
res_counter.h
resource.h
resume-trace.h
rfkill-gpio.h
rfkill-regulator.h
rfkill.h
ring_buffer.h
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h mremap: enforce rmap src/dst vma ordering in case of vma_merge() succeeding in copy_vma() 2012-01-10 16:30:44 -08:00
romfs_fs.h
root_dev.h
rose.h
rotary_encoder.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
rwlock.h
rwlock_api_smp.h
rwlock_types.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
s3c_adc_battery.h s3c_adc_battery: Average over more than one adc sample 2012-01-06 06:13:35 +04:00
sc26198.h
scatterlist.h
scc.h
sched.h treewide: remove useless NORET_TYPE macro and uses 2012-01-12 20:13:03 -08:00
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdla.h
seccomp.h
securebits.h
security.h Merge branch 'for-linus' of git://selinuxproject.org/~jmorris/linux-security 2012-01-10 21:51:23 -08:00
selection.h
selinux.h
selinux_netlink.h
sem.h
semaphore.h
seq_file.h constify seq_file stuff 2012-01-03 22:52:40 -05:00
seq_file_net.h
seqlock.h
serial.h
serial167.h
serialP.h
serial_8250.h serial: add irq handler for Freescale 16550 errata. 2011-12-09 19:14:13 -08:00
serial_core.h
serial_max3100.h
serial_mfd.h
serial_pnx8xxx.h
serial_reg.h
serial_sci.h
serio.h
sfi.h
sfi_acpi.h
sh_clk.h sh: extend clock struct with mapped_reg member 2011-12-09 18:01:05 +09:00
sh_dma.h
sh_eth.h
sh_intc.h PM / shmobile: Don't include SH7372's INTCS in syscore suspend/resume 2011-12-25 23:39:11 +01:00
sh_pfc.h sh: pfc: Unlock register support 2012-01-09 09:33:57 +09:00
sh_timer.h
shm.h
shmem_fs.h shmem, ramfs: propagate umode_t, open-coded S_ISREG 2012-01-03 22:55:07 -05:00
shrinker.h vmscan: use atomic-long for shrinker batching 2011-12-09 07:50:27 -08:00
sht15.h
signal.h signal: add block_sigmask() for adding sigmask to current->blocked 2012-01-10 16:30:54 -08:00
signalfd.h
skbuff.h net: pack skb_shared_info more efficiently 2012-01-05 14:01:21 -05:00
slab.h
slab_def.h tracing/mm: Move include of trace/events/kmem.h out of header into slab.c 2012-01-09 14:19:33 -08:00
slob_def.h
slub_def.h
sm501-regs.h
sm501.h
smc91x.h
smc911x.h
smp.h
smsc911x.h
smscphy.h net: phy: smsc: Move SMSC PHY constants to <linux/smscphy.h> 2012-01-03 20:23:18 -05:00
snmp.h
sock_diag.h sock_diag: Introduce the meminfo nla core (v2) 2011-12-30 16:42:19 -05:00
socket.h
sockios.h
som.h
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
srcu.h rcu: Document same-context read-side constraints 2011-12-11 10:32:06 -08:00
stackprotector.h
stacktrace.h
stallion.h
start_kernel.h
stat.h
statfs.h
stddef.h
stmmac.h
stop_machine.h
string.h
string_helpers.h
stringify.h
sungem_phy.h
superhyway.h
suspend.h PM / Sleep: Make [un]lock_system_sleep() generic 2011-12-08 23:22:21 +01:00
suspend_ioctls.h
svga.h
swab.h
swap.h mm: exclude reserved pages from dirtyable memory 2012-01-10 16:30:43 -08:00
swapops.h
swiotlb.h swiotlb: Expose swiotlb_nr_tlb function to modules 2011-12-06 10:38:03 +00:00
synclink.h
sys.h
syscalls.h switch open and mkdir syscalls to umode_t 2012-01-03 22:55:19 -05:00
syscore_ops.h
sysctl.h sysctl: use umode_t for table permissions 2012-01-03 22:55:12 -05:00
sysdev.h
sysfs.h switch sysfs_chmod_file() to umode_t 2012-01-03 22:54:56 -05:00
syslog.h
sysrq.h
sysv_fs.h
task_io_accounting.h
task_io_accounting_ops.h
taskstats.h
taskstats_kern.h
tboot.h
tc.h
tca6416_keypad.h
tcp.h tcp: Replace constants with #define macros 2011-12-21 01:03:23 -05:00
telephony.h
termios.h
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h
thread_info.h
threads.h
ti_wilink_st.h
tick.h nohz: Remove tick_nohz_idle_enter_norcu() / tick_nohz_idle_exit_norcu() 2011-12-11 10:31:57 -08:00
tifm.h
timb_dma.h
timb_gpio.h
time.h
timecompare.h
timer.h
timerfd.h
timeriomem-rng.h
timerqueue.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
topology.h
toshiba.h
tpm.h
tpm_command.h
trace_clock.h
trace_seq.h
tracehook.h
tracepoint.h
transport_class.h
trdevice.h
tsacct_kern.h
tty.h
tty_driver.h
tty_flip.h
tty_ldisc.h
typecheck.h
types.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-01-08 13:21:22 -08:00
u64_stats_sync.h
uaccess.h
ucb1400.h Input: ucb1400_ts - convert to threaded IRQ 2012-01-04 22:19:55 -08:00
udf_fs_i.h
udp.h
uinput.h
uio.h
uio_driver.h
ultrasound.h
un.h
unistd.h
unix_diag.h unix_diag: Fixup RQLEN extension report 2011-12-30 16:46:02 -05:00
usb.h Merge branch 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb 2012-01-09 12:09:47 -08:00
usb_usual.h
usbdevice_fs.h
user-return-notifier.h
user.h
user_namespace.h
utime.h
uts.h
utsname.h
uuid.h
uvcvideo.h
uwb.h
v4l2-mediabus.h
v4l2-subdev.h
vermagic.h
veth.h
vfs.h
vga_switcheroo.h
vgaarb.h
vhost.h
via-core.h
via-gpio.h
via.h
via_i2c.h
video_output.h
videodev2.h
virtio.h
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_ids.h
virtio_mmio.h
virtio_net.h
virtio_pci.h
virtio_ring.h
virtio_rng.h
vlynq.h
vm_event_item.h
vmalloc.h Merge branch 'vmalloc' of git://git.linaro.org/people/nico/linux into devel-stable 2011-12-05 23:27:59 +00:00
vmstat.h
vt.h
vt_buffer.h
vt_kern.h
w1-gpio.h
wait.h lockdep/waitqueues: Add better annotation 2011-12-21 10:07:39 +01:00
wanrouter.h
watchdog.h watchdog: add nowayout helpers to Watchdog Timer Driver Kernel API 2012-01-06 15:22:04 +01:00
wimax.h
wireless.h
wl12xx.h
wm97xx.h
workqueue.h workqueue: make alloc_workqueue() take printf fmt and args for name 2012-01-10 16:30:54 -08:00
writeback.h Merge branch 'writeback-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux 2012-01-10 16:59:59 -08:00
x25.h
xattr.h
xfrm.h
xilinxfb.h
xz.h
yam.h
z2_battery.h
zconf.h
zlib.h
zorro.h
zorro_ids.h
zutil.h