de11defebf
Introduce a new accept4() system call. The addition of this system call matches analogous changes in 2.6.27 (dup3(), evenfd2(), signalfd4(), inotify_init1(), epoll_create1(), pipe2()) which added new system calls that differed from analogous traditional system calls in adding a flags argument that can be used to access additional functionality. The accept4() system call is exactly the same as accept(), except that it adds a flags bit-mask argument. Two flags are initially implemented. (Most of the new system calls in 2.6.27 also had both of these flags.) SOCK_CLOEXEC causes the close-on-exec (FD_CLOEXEC) flag to be enabled for the new file descriptor returned by accept4(). This is a useful security feature to avoid leaking information in a multithreaded program where one thread is doing an accept() at the same time as another thread is doing a fork() plus exec(). More details here: http://udrepper.livejournal.com/20407.html "Secure File Descriptor Handling", Ulrich Drepper). The other flag is SOCK_NONBLOCK, which causes the O_NONBLOCK flag to be enabled on the new open file description created by accept4(). (This flag is merely a convenience, saving the use of additional calls fcntl(F_GETFL) and fcntl (F_SETFL) to achieve the same result. Here's a test program. Works on x86-32. Should work on x86-64, but I (mtk) don't have a system to hand to test with. It tests accept4() with each of the four possible combinations of SOCK_CLOEXEC and SOCK_NONBLOCK set/clear in 'flags', and verifies that the appropriate flags are set on the file descriptor/open file description returned by accept4(). I tested Ulrich's patch in this thread by applying against 2.6.28-rc2, and it passes according to my test program. /* test_accept4.c Copyright (C) 2008, Linux Foundation, written by Michael Kerrisk <mtk.manpages@gmail.com> Licensed under the GNU GPLv2 or later. */ #define _GNU_SOURCE #include <unistd.h> #include <sys/syscall.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #define PORT_NUM 33333 #define die(msg) do { perror(msg); exit(EXIT_FAILURE); } while (0) /**********************************************************************/ /* The following is what we need until glibc gets a wrapper for accept4() */ /* Flags for socket(), socketpair(), accept4() */ #ifndef SOCK_CLOEXEC #define SOCK_CLOEXEC O_CLOEXEC #endif #ifndef SOCK_NONBLOCK #define SOCK_NONBLOCK O_NONBLOCK #endif #ifdef __x86_64__ #define SYS_accept4 288 #elif __i386__ #define USE_SOCKETCALL 1 #define SYS_ACCEPT4 18 #else #error "Sorry -- don't know the syscall # on this architecture" #endif static int accept4(int fd, struct sockaddr *sockaddr, socklen_t *addrlen, int flags) { printf("Calling accept4(): flags = %x", flags); if (flags != 0) { printf(" ("); if (flags & SOCK_CLOEXEC) printf("SOCK_CLOEXEC"); if ((flags & SOCK_CLOEXEC) && (flags & SOCK_NONBLOCK)) printf(" "); if (flags & SOCK_NONBLOCK) printf("SOCK_NONBLOCK"); printf(")"); } printf("\n"); #if USE_SOCKETCALL long args[6]; args[0] = fd; args[1] = (long) sockaddr; args[2] = (long) addrlen; args[3] = flags; return syscall(SYS_socketcall, SYS_ACCEPT4, args); #else return syscall(SYS_accept4, fd, sockaddr, addrlen, flags); #endif } /**********************************************************************/ static int do_test(int lfd, struct sockaddr_in *conn_addr, int closeonexec_flag, int nonblock_flag) { int connfd, acceptfd; int fdf, flf, fdf_pass, flf_pass; struct sockaddr_in claddr; socklen_t addrlen; printf("=======================================\n"); connfd = socket(AF_INET, SOCK_STREAM, 0); if (connfd == -1) die("socket"); if (connect(connfd, (struct sockaddr *) conn_addr, sizeof(struct sockaddr_in)) == -1) die("connect"); addrlen = sizeof(struct sockaddr_in); acceptfd = accept4(lfd, (struct sockaddr *) &claddr, &addrlen, closeonexec_flag | nonblock_flag); if (acceptfd == -1) { perror("accept4()"); close(connfd); return 0; } fdf = fcntl(acceptfd, F_GETFD); if (fdf == -1) die("fcntl:F_GETFD"); fdf_pass = ((fdf & FD_CLOEXEC) != 0) == ((closeonexec_flag & SOCK_CLOEXEC) != 0); printf("Close-on-exec flag is %sset (%s); ", (fdf & FD_CLOEXEC) ? "" : "not ", fdf_pass ? "OK" : "failed"); flf = fcntl(acceptfd, F_GETFL); if (flf == -1) die("fcntl:F_GETFD"); flf_pass = ((flf & O_NONBLOCK) != 0) == ((nonblock_flag & SOCK_NONBLOCK) !=0); printf("nonblock flag is %sset (%s)\n", (flf & O_NONBLOCK) ? "" : "not ", flf_pass ? "OK" : "failed"); close(acceptfd); close(connfd); printf("Test result: %s\n", (fdf_pass && flf_pass) ? "PASS" : "FAIL"); return fdf_pass && flf_pass; } static int create_listening_socket(int port_num) { struct sockaddr_in svaddr; int lfd; int optval; memset(&svaddr, 0, sizeof(struct sockaddr_in)); svaddr.sin_family = AF_INET; svaddr.sin_addr.s_addr = htonl(INADDR_ANY); svaddr.sin_port = htons(port_num); lfd = socket(AF_INET, SOCK_STREAM, 0); if (lfd == -1) die("socket"); optval = 1; if (setsockopt(lfd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)) == -1) die("setsockopt"); if (bind(lfd, (struct sockaddr *) &svaddr, sizeof(struct sockaddr_in)) == -1) die("bind"); if (listen(lfd, 5) == -1) die("listen"); return lfd; } int main(int argc, char *argv[]) { struct sockaddr_in conn_addr; int lfd; int port_num; int passed; passed = 1; port_num = (argc > 1) ? atoi(argv[1]) : PORT_NUM; memset(&conn_addr, 0, sizeof(struct sockaddr_in)); conn_addr.sin_family = AF_INET; conn_addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); conn_addr.sin_port = htons(port_num); lfd = create_listening_socket(port_num); if (!do_test(lfd, &conn_addr, 0, 0)) passed = 0; if (!do_test(lfd, &conn_addr, SOCK_CLOEXEC, 0)) passed = 0; if (!do_test(lfd, &conn_addr, 0, SOCK_NONBLOCK)) passed = 0; if (!do_test(lfd, &conn_addr, SOCK_CLOEXEC, SOCK_NONBLOCK)) passed = 0; close(lfd); exit(passed ? EXIT_SUCCESS : EXIT_FAILURE); } [mtk.manpages@gmail.com: rewrote changelog, updated test program] Signed-off-by: Ulrich Drepper <drepper@redhat.com> Tested-by: Michael Kerrisk <mtk.manpages@gmail.com> Acked-by: Michael Kerrisk <mtk.manpages@gmail.com> Cc: <linux-api@vger.kernel.org> Cc: <linux-arch@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
||
---|---|---|
.. | ||
amba | ||
byteorder | ||
can | ||
dvb | ||
hdlc | ||
i2c | ||
isdn | ||
lockd | ||
mfd | ||
mlx4 | ||
mmc | ||
mtd | ||
netfilter | ||
netfilter_arp | ||
netfilter_bridge | ||
netfilter_ipv4 | ||
netfilter_ipv6 | ||
nfsd | ||
raid | ||
regulator | ||
rtc | ||
spi | ||
ssb | ||
sunrpc | ||
tc_act | ||
tc_ematch | ||
unaligned | ||
usb | ||
uwb | ||
8250_pci.h | ||
a.out.h | ||
ac97_codec.h | ||
acct.h | ||
acpi_pmtmr.h | ||
acpi.h | ||
adb.h | ||
adfs_fs_i.h | ||
adfs_fs_sb.h | ||
adfs_fs.h | ||
aer.h | ||
affs_hardblocks.h | ||
agp_backend.h | ||
agpgart.h | ||
aio_abi.h | ||
aio.h | ||
amifd.h | ||
amifdreg.h | ||
amigaffs.h | ||
anon_inodes.h | ||
apm_bios.h | ||
apm-emulation.h | ||
arcdevice.h | ||
arcfb.h | ||
async_tx.h | ||
ata_platform.h | ||
ata.h | ||
atalk.h | ||
atm_eni.h | ||
atm_he.h | ||
atm_idt77105.h | ||
atm_nicstar.h | ||
atm_suni.h | ||
atm_tcp.h | ||
atm_zatm.h | ||
atm.h | ||
atmapi.h | ||
atmarp.h | ||
atmbr2684.h | ||
atmclip.h | ||
atmdev.h | ||
atmel_pdc.h | ||
atmel_pwm.h | ||
atmel_serial.h | ||
atmel_tc.h | ||
atmel-pwm-bl.h | ||
atmel-ssc.h | ||
atmioc.h | ||
atmlec.h | ||
atmmpc.h | ||
atmppp.h | ||
atmsap.h | ||
atmsvc.h | ||
attribute_container.h | ||
audit.h | ||
auto_dev-ioctl.h | ||
auto_fs4.h | ||
auto_fs.h | ||
auxvec.h | ||
ax25.h | ||
b1lli.h | ||
b1pcmcia.h | ||
backing-dev.h | ||
backlight.h | ||
baycom.h | ||
bcd.h | ||
bfs_fs.h | ||
binfmts.h | ||
bio.h | ||
bit_spinlock.h | ||
bitmap.h | ||
bitops.h | ||
bitrev.h | ||
blkdev.h | ||
blkpg.h | ||
blktrace_api.h | ||
blockgroup_lock.h | ||
bootmem.h | ||
bottom_half.h | ||
bpqether.h | ||
brcmphy.h | ||
bsg.h | ||
buffer_head.h | ||
bug.h | ||
byteorder.h | ||
c2port.h | ||
cache.h | ||
can.h | ||
capability.h | ||
capi.h | ||
cciss_ioctl.h | ||
cd1400.h | ||
cdev.h | ||
cdk.h | ||
cdrom.h | ||
cfag12864b.h | ||
cgroup_subsys.h | ||
cgroup.h | ||
cgroupstats.h | ||
chio.h | ||
circ_buf.h | ||
clk.h | ||
clockchips.h | ||
clocksource.h | ||
cm4000_cs.h | ||
cn_proc.h | ||
cnt32_to_63.h | ||
coda_cache.h | ||
coda_fs_i.h | ||
coda_linux.h | ||
coda_psdev.h | ||
coda.h | ||
coff.h | ||
com20020.h | ||
compat.h | ||
compiler-gcc3.h | ||
compiler-gcc4.h | ||
compiler-gcc.h | ||
compiler-intel.h | ||
compiler.h | ||
completion.h | ||
comstats.h | ||
concap.h | ||
configfs.h | ||
connector.h | ||
console_struct.h | ||
console.h | ||
consolemap.h | ||
const.h | ||
cpu.h | ||
cpufreq.h | ||
cpuidle.h | ||
cpumask.h | ||
cpuset.h | ||
cramfs_fs_sb.h | ||
cramfs_fs.h | ||
crash_dump.h | ||
crc7.h | ||
crc16.h | ||
crc32.h | ||
crc32c.h | ||
crc-ccitt.h | ||
crc-itu-t.h | ||
crc-t10dif.h | ||
cred.h | ||
crypto.h | ||
cryptohash.h | ||
ctype.h | ||
cuda.h | ||
cyclades.h | ||
cyclomx.h | ||
cycx_cfm.h | ||
cycx_drv.h | ||
cycx_x25.h | ||
dca.h | ||
dcache.h | ||
dccp.h | ||
dcookies.h | ||
debug_locks.h | ||
debugfs.h | ||
debugobjects.h | ||
delay.h | ||
delayacct.h | ||
device_cgroup.h | ||
device-mapper.h | ||
device.h | ||
devpts_fs.h | ||
dio.h | ||
dirent.h | ||
display.h | ||
dlm_device.h | ||
dlm_netlink.h | ||
dlm_plock.h | ||
dlm.h | ||
dlmconstants.h | ||
dm9000.h | ||
dm-dirty-log.h | ||
dm-io.h | ||
dm-ioctl.h | ||
dm-kcopyd.h | ||
dm-region-hash.h | ||
dma_remapping.h | ||
dma-attrs.h | ||
dma-mapping.h | ||
dmaengine.h | ||
dmapool.h | ||
dmar.h | ||
dmi.h | ||
dn.h | ||
dnotify.h | ||
dqblk_v1.h | ||
dqblk_v2.h | ||
dqblk_xfs.h | ||
ds1wm.h | ||
ds1286.h | ||
ds17287rtc.h | ||
dtlk.h | ||
dw_dmac.h | ||
dynamic_printk.h | ||
edac.h | ||
edd.h | ||
eeprom_93cx6.h | ||
efi.h | ||
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 | ||
etherdevice.h | ||
ethtool.h | ||
eventfd.h | ||
eventpoll.h | ||
exportfs.h | ||
ext2_fs_sb.h | ||
ext2_fs.h | ||
ext3_fs_i.h | ||
ext3_fs_sb.h | ||
ext3_fs.h | ||
ext3_jbd.h | ||
f75375s.h | ||
fadvise.h | ||
falloc.h | ||
fault-inject.h | ||
fb.h | ||
fcdevice.h | ||
fcntl.h | ||
fd.h | ||
fddidevice.h | ||
fdreg.h | ||
fdtable.h | ||
fib_rules.h | ||
fiemap.h | ||
file.h | ||
filter.h | ||
firewire-cdev.h | ||
firewire-constants.h | ||
firmware-map.h | ||
firmware.h | ||
flat.h | ||
font.h | ||
freezer.h | ||
fs_enet_pd.h | ||
fs_stack.h | ||
fs_struct.h | ||
fs_uart_pd.h | ||
fs.h | ||
fsl_devices.h | ||
fsnotify.h | ||
ftrace.h | ||
fuse.h | ||
futex.h | ||
gameport.h | ||
gen_stats.h | ||
genalloc.h | ||
generic_acl.h | ||
generic_serial.h | ||
genetlink.h | ||
genhd.h | ||
getcpu.h | ||
gfp.h | ||
gfs2_ondisk.h | ||
gigaset_dev.h | ||
gpio_keys.h | ||
gpio_mouse.h | ||
gpio.h | ||
hardirq.h | ||
hash.h | ||
hayesesp.h | ||
hdlc.h | ||
hdlcdrv.h | ||
hdpu_features.h | ||
hdreg.h | ||
hid-debug.h | ||
hid.h | ||
hiddev.h | ||
hidraw.h | ||
highmem.h | ||
highuid.h | ||
hil_mlc.h | ||
hil.h | ||
hippidevice.h | ||
hp_sdc.h | ||
hpet.h | ||
hrtimer.h | ||
htirq.h | ||
hugetlb.h | ||
hw_random.h | ||
hwmon-sysfs.h | ||
hwmon-vid.h | ||
hwmon.h | ||
hysdn_if.h | ||
i2c-algo-bit.h | ||
i2c-algo-pca.h | ||
i2c-algo-pcf.h | ||
i2c-algo-sgi.h | ||
i2c-dev.h | ||
i2c-gpio.h | ||
i2c-id.h | ||
i2c-ocores.h | ||
i2c-pca-platform.h | ||
i2c-pnx.h | ||
i2c-pxa.h | ||
i2c.h | ||
i2o-dev.h | ||
i2o.h | ||
i8k.h | ||
i7300_idle.h | ||
i8042.h | ||
ibmtr.h | ||
icmp.h | ||
icmpv6.h | ||
ide.h | ||
idr.h | ||
ieee80211.h | ||
if_addr.h | ||
if_addrlabel.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_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_tr.h | ||
if_tun.h | ||
if_tunnel.h | ||
if_vlan.h | ||
if.h | ||
igmp.h | ||
ihex.h | ||
in6.h | ||
in_route.h | ||
in.h | ||
inet_diag.h | ||
inet_lro.h | ||
inet.h | ||
inetdevice.h | ||
init_ohci1394_dma.h | ||
init_task.h | ||
init.h | ||
initrd.h | ||
inotify.h | ||
input-polldev.h | ||
input.h | ||
intel-iommu.h | ||
interrupt.h | ||
io-mapping.h | ||
io.h | ||
ioc3.h | ||
ioc4.h | ||
iocontext.h | ||
ioctl.h | ||
iommu-helper.h | ||
ioport.h | ||
ioprio.h | ||
iova.h | ||
ip6_tunnel.h | ||
ip_vs.h | ||
ip.h | ||
ipc_namespace.h | ||
ipc.h | ||
ipmi_msgdefs.h | ||
ipmi_smi.h | ||
ipmi.h | ||
ipsec.h | ||
ipv6_route.h | ||
ipv6.h | ||
ipx.h | ||
irda.h | ||
irq_cpustat.h | ||
irq.h | ||
irqflags.h | ||
irqnr.h | ||
irqreturn.h | ||
isa.h | ||
isapnp.h | ||
iscsi_ibft.h | ||
isdn_divertif.h | ||
isdn_ppp.h | ||
isdn.h | ||
isdnif.h | ||
isicom.h | ||
iso_fs.h | ||
istallion.h | ||
ivtv.h | ||
ivtvfb.h | ||
ixjuser.h | ||
jbd2.h | ||
jbd.h | ||
jffs2.h | ||
jhash.h | ||
jiffies.h | ||
journal-head.h | ||
joystick.h | ||
kallsyms.h | ||
kbd_diacr.h | ||
kbd_kern.h | ||
Kbuild | ||
kbuild.h | ||
kd.h | ||
kdebug.h | ||
kdev_t.h | ||
kernel_stat.h | ||
kernel.h | ||
kernelcapi.h | ||
kexec.h | ||
key-type.h | ||
key-ui.h | ||
key.h | ||
keyboard.h | ||
keyctl.h | ||
kfifo.h | ||
kgdb.h | ||
klist.h | ||
kmalloc_sizes.h | ||
kmod.h | ||
kobj_map.h | ||
kobject.h | ||
kprobes.h | ||
kref.h | ||
ks0108.h | ||
kthread.h | ||
ktime.h | ||
kvm_host.h | ||
kvm_para.h | ||
kvm_types.h | ||
kvm.h | ||
lapb.h | ||
latencytop.h | ||
lcd.h | ||
leds-pca9532.h | ||
leds.h | ||
lguest_launcher.h | ||
lguest.h | ||
libata.h | ||
libps2.h | ||
license.h | ||
limits.h | ||
linkage.h | ||
linux_logo.h | ||
list.h | ||
llc.h | ||
lm_interface.h | ||
lmb.h | ||
lockdep.h | ||
log2.h | ||
loop.h | ||
lp.h | ||
lzo.h | ||
m48t86.h | ||
magic.h | ||
major.h | ||
map_to_7segment.h | ||
maple.h | ||
marker.h | ||
math64.h | ||
matroxfb.h | ||
mbcache.h | ||
mbus.h | ||
mc6821.h | ||
mc146818rtc.h | ||
mca-legacy.h | ||
mca.h | ||
mdio-bitbang.h | ||
memcontrol.h | ||
memory_hotplug.h | ||
memory.h | ||
mempolicy.h | ||
mempool.h | ||
memstick.h | ||
meye.h | ||
migrate.h | ||
mii.h | ||
minix_fs.h | ||
miscdevice.h | ||
mISDNdsp.h | ||
mISDNhw.h | ||
mISDNif.h | ||
mm_inline.h | ||
mm_types.h | ||
mm.h | ||
mman.h | ||
mmdebug.h | ||
mmiotrace.h | ||
mmtimer.h | ||
mmu_notifier.h | ||
mmzone.h | ||
mnt_namespace.h | ||
mod_devicetable.h | ||
module.h | ||
moduleloader.h | ||
moduleparam.h | ||
mount.h | ||
mpage.h | ||
mqueue.h | ||
mroute6.h | ||
mroute.h | ||
msdos_fs.h | ||
msg.h | ||
msi.h | ||
mtio.h | ||
mutex-debug.h | ||
mutex.h | ||
mv643xx_eth.h | ||
mv643xx_i2c.h | ||
mv643xx.h | ||
n_r3964.h | ||
namei.h | ||
nbd.h | ||
ncp_fs_i.h | ||
ncp_fs_sb.h | ||
ncp_fs.h | ||
ncp_mount.h | ||
ncp_no.h | ||
ncp.h | ||
neighbour.h | ||
net.h | ||
netdevice.h | ||
netfilter_arp.h | ||
netfilter_bridge.h | ||
netfilter_decnet.h | ||
netfilter_ipv4.h | ||
netfilter_ipv6.h | ||
netfilter.h | ||
netlink.h | ||
netpoll.h | ||
netrom.h | ||
nfs2.h | ||
nfs3.h | ||
nfs4_acl.h | ||
nfs4_mount.h | ||
nfs4.h | ||
nfs_fs_i.h | ||
nfs_fs_sb.h | ||
nfs_fs.h | ||
nfs_idmap.h | ||
nfs_iostat.h | ||
nfs_mount.h | ||
nfs_page.h | ||
nfs_xdr.h | ||
nfs.h | ||
nfsacl.h | ||
nfsd_idmap.h | ||
nl80211.h | ||
nls.h | ||
nmi.h | ||
node.h | ||
nodemask.h | ||
notifier.h | ||
nsc_gpio.h | ||
nsproxy.h | ||
nubus.h | ||
numa.h | ||
nvram.h | ||
of_device.h | ||
of_gpio.h | ||
of_i2c.h | ||
of_platform.h | ||
of_spi.h | ||
of.h | ||
oom.h | ||
oprofile.h | ||
page_cgroup.h | ||
page-flags.h | ||
page-isolation.h | ||
pageblock-flags.h | ||
pagemap.h | ||
pagevec.h | ||
param.h | ||
parport_pc.h | ||
parport.h | ||
parser.h | ||
patchkey.h | ||
path.h | ||
pci_hotplug.h | ||
pci_ids.h | ||
pci_regs.h | ||
pci-acpi.h | ||
pci-aspm.h | ||
pci.h | ||
pcieport_if.h | ||
pda_power.h | ||
percpu_counter.h | ||
percpu.h | ||
personality.h | ||
pfkeyv2.h | ||
pfn.h | ||
pg.h | ||
phantom.h | ||
phonedev.h | ||
phonet.h | ||
phy_fixed.h | ||
phy.h | ||
pid_namespace.h | ||
pid.h | ||
pim.h | ||
pipe_fs_i.h | ||
pkt_cls.h | ||
pkt_sched.h | ||
pktcdvd.h | ||
platform_device.h | ||
plist.h | ||
pm_qos_params.h | ||
pm_wakeup.h | ||
pm.h | ||
pmu.h | ||
pnp.h | ||
poison.h | ||
poll.h | ||
posix_acl_xattr.h | ||
posix_acl.h | ||
posix_types.h | ||
posix-timers.h | ||
power_supply.h | ||
ppdev.h | ||
ppp_channel.h | ||
ppp_defs.h | ||
ppp-comp.h | ||
prctl.h | ||
preempt.h | ||
prefetch.h | ||
prio_heap.h | ||
prio_tree.h | ||
proc_fs.h | ||
profile.h | ||
proportions.h | ||
ptrace.h | ||
pwm_backlight.h | ||
pwm.h | ||
qnx4_fs.h | ||
qnxtypes.h | ||
quicklist.h | ||
quota.h | ||
quotaio_v1.h | ||
quotaio_v2.h | ||
quotaops.h | ||
radeonfb.h | ||
radix-tree.h | ||
raid_class.h | ||
ramfs.h | ||
random.h | ||
ratelimit.h | ||
raw.h | ||
rbtree.h | ||
rcuclassic.h | ||
rculist.h | ||
rcupdate.h | ||
rcupreempt_trace.h | ||
rcupreempt.h | ||
reboot.h | ||
reciprocal_div.h | ||
regset.h | ||
reiserfs_acl.h | ||
reiserfs_fs_i.h | ||
reiserfs_fs_sb.h | ||
reiserfs_fs.h | ||
reiserfs_xattr.h | ||
relay.h | ||
res_counter.h | ||
resource.h | ||
resume-trace.h | ||
rfkill.h | ||
ring_buffer.h | ||
rio_drv.h | ||
rio_ids.h | ||
rio_regs.h | ||
rio.h | ||
rmap.h | ||
romfs_fs.h | ||
root_dev.h | ||
rose.h | ||
route.h | ||
rslib.h | ||
rtc-v3020.h | ||
rtc.h | ||
rtmutex.h | ||
rtnetlink.h | ||
rwsem-spinlock.h | ||
rwsem.h | ||
rxrpc.h | ||
sc26198.h | ||
scatterlist.h | ||
scc.h | ||
sched.h | ||
screen_info.h | ||
sctp.h | ||
scx200_gpio.h | ||
scx200.h | ||
sdla.h | ||
seccomp.h | ||
securebits.h | ||
security.h | ||
selection.h | ||
selinux_netlink.h | ||
selinux.h | ||
sem.h | ||
semaphore.h | ||
seq_file_net.h | ||
seq_file.h | ||
seqlock.h | ||
serial167.h | ||
serial_8250.h | ||
serial_core.h | ||
serial_pnx8xxx.h | ||
serial_reg.h | ||
serial_sci.h | ||
serial.h | ||
serialP.h | ||
serio.h | ||
sh_intc.h | ||
shm.h | ||
shmem_fs.h | ||
signal.h | ||
signalfd.h | ||
skbuff.h | ||
slab_def.h | ||
slab.h | ||
slob_def.h | ||
slub_def.h | ||
sm501-regs.h | ||
sm501.h | ||
smb_fs_i.h | ||
smb_fs_sb.h | ||
smb_fs.h | ||
smb_mount.h | ||
smb.h | ||
smbno.h | ||
smc91x.h | ||
smc911x.h | ||
smp_lock.h | ||
smp.h | ||
snmp.h | ||
socket.h | ||
sockios.h | ||
som.h | ||
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 | ||
srcu.h | ||
stacktrace.h | ||
stallion.h | ||
start_kernel.h | ||
stat.h | ||
statfs.h | ||
stddef.h | ||
stop_machine.h | ||
string_helpers.h | ||
string.h | ||
stringify.h | ||
superhyway.h | ||
suspend_ioctls.h | ||
suspend.h | ||
svga.h | ||
swab.h | ||
swap.h | ||
swapops.h | ||
swiotlb.h | ||
synclink.h | ||
sys.h | ||
syscalls.h | ||
sysctl.h | ||
sysdev.h | ||
sysfs.h | ||
sysrq.h | ||
sysv_fs.h | ||
task_io_accounting_ops.h | ||
task_io_accounting.h | ||
taskstats_kern.h | ||
taskstats.h | ||
tc.h | ||
tcp.h | ||
telephony.h | ||
termios.h | ||
textsearch_fsm.h | ||
textsearch.h | ||
tfrc.h | ||
thermal.h | ||
thread_info.h | ||
threads.h | ||
tick.h | ||
tifm.h | ||
time.h | ||
timer.h | ||
timerfd.h | ||
times.h | ||
timex.h | ||
tiocl.h | ||
tipc_config.h | ||
tipc.h | ||
topology.h | ||
toshiba.h | ||
tracehook.h | ||
tracepoint.h | ||
transport_class.h | ||
trdevice.h | ||
tsacct_kern.h | ||
tty_driver.h | ||
tty_flip.h | ||
tty_ldisc.h | ||
tty.h | ||
typecheck.h | ||
types.h | ||
uaccess.h | ||
ucb1400.h | ||
udf_fs_i.h | ||
udp.h | ||
uinput.h | ||
uio_driver.h | ||
uio.h | ||
ultrasound.h | ||
un.h | ||
unistd.h | ||
unwind.h | ||
usb_usual.h | ||
usb.h | ||
usbdevice_fs.h | ||
user_namespace.h | ||
user.h | ||
utime.h | ||
uts.h | ||
utsname.h | ||
uwb.h | ||
vermagic.h | ||
veth.h | ||
vfs.h | ||
via.h | ||
video_decoder.h | ||
video_encoder.h | ||
video_output.h | ||
videodev2.h | ||
videodev.h | ||
videotext.h | ||
virtio_9p.h | ||
virtio_balloon.h | ||
virtio_blk.h | ||
virtio_config.h | ||
virtio_console.h | ||
virtio_net.h | ||
virtio_pci.h | ||
virtio_ring.h | ||
virtio_rng.h | ||
virtio.h | ||
vmalloc.h | ||
vmstat.h | ||
vt_buffer.h | ||
vt_kern.h | ||
vt.h | ||
w1-gpio.h | ||
wait.h | ||
wanrouter.h | ||
watchdog.h | ||
wireless.h | ||
wlp.h | ||
wm97xx_batt.h | ||
wm97xx.h | ||
workqueue.h | ||
writeback.h | ||
x25.h | ||
xattr.h | ||
xfrm.h | ||
xilinxfb.h | ||
yam.h | ||
zconf.h | ||
zlib.h | ||
zorro_ids.h | ||
zorro.h | ||
zutil.h |