Al Viro
1abf0c718f
New kind of open files - "location only".
...
New flag for open(2) - O_PATH. Semantics:
* pathname is resolved, but the file itself is _NOT_ opened
as far as filesystem is concerned.
* almost all operations on the resulting descriptors shall
fail with -EBADF. Exceptions are:
1) operations on descriptors themselves (i.e.
close(), dup(), dup2(), dup3(), fcntl(fd, F_DUPFD),
fcntl(fd, F_DUPFD_CLOEXEC, ...), fcntl(fd, F_GETFD),
fcntl(fd, F_SETFD, ...))
2) fcntl(fd, F_GETFL), for a common non-destructive way to
check if descriptor is open
3) "dfd" arguments of ...at(2) syscalls, i.e. the starting
points of pathname resolution
* closing such descriptor does *NOT* affect dnotify or
posix locks.
* permissions are checked as usual along the way to file;
no permission checks are applied to the file itself. Of course,
giving such thing to syscall will result in permission checks (at
the moment it means checking that starting point of ....at() is
a directory and caller has exec permissions on it).
fget() and fget_light() return NULL on such descriptors; use of
fget_raw() and fget_raw_light() is needed to get them. That protects
existing code from dealing with those things.
There are two things still missing (they come in the next commits):
one is handling of symlinks (right now we refuse to open them that
way; see the next commit for semantics related to those) and another
is descriptor passing via SCM_RIGHTS datagrams.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-15 02:21:45 -04:00
..
bitops
bitops: remove duplicated extern declarations
2010-10-09 21:51:45 +02:00
4level-fixup.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
atomic-long.h
asm-generic: merge branch 'master' of torvalds/linux-2.6
2009-06-12 11:32:58 +02:00
atomic.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic
2010-10-22 11:17:06 -07:00
atomic64.h
lib: Provide generic atomic64_t implementation
2009-06-15 13:27:38 +10:00
audit_change_attr.h
audit: make link()/linkat() match "attribute change" predicate
2010-10-30 08:45:43 -04:00
audit_dir_write.h
audit_read.h
audit_signal.h
audit_write.h
[PATCH] asm/generic: fix bug - kernel fails to build when enable some common audit code on Blackfin
2008-12-09 02:27:39 -05:00
auxvec.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
bitops.h
asm-generic: make bitops.h usable
2009-06-11 21:02:31 +02:00
bitsperlong.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
bug.h
panic: Allow warnings to set different taint flags
2010-05-19 08:36:48 +01:00
bugs.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
cache.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
cacheflush.h
block: add helpers to run flush_dcache_page() against a bio and a request's pages
2009-11-26 09:16:19 +01:00
checksum.h
add generic lib/checksum.c
2009-06-11 21:02:51 +02:00
cmpxchg-local.h
Fix IRQ flag handling naming
2010-10-07 14:08:55 +01:00
cmpxchg.h
Add cmpxchg_local to asm-generic for per cpu atomic operations
2008-02-07 08:42:30 -08:00
cputime.h
taskstats: use real microsecond granularity for CPU times
2010-10-27 18:03:17 -07:00
current.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
delay.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
device.h
Driver Core: Add platform device arch data V3
2009-07-22 00:28:38 +02:00
div64.h
rename div64_64 to div64_u64
2008-05-01 08:03:58 -07:00
dma-coherent.h
generic: per-device coherent dma allocator
2008-06-30 12:51:05 +02:00
dma-mapping-broken.h
dma-mapping: remove dma_is_consistent API
2010-08-11 08:59:21 -07:00
dma-mapping-common.h
dma-mapping: remove unnecessary sync_single_range_* in dma_map_ops
2010-05-27 09:12:52 -07:00
dma.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
emergency-restart.h
errno-base.h
errno.h
cfg80211: add rfkill support
2009-06-03 14:06:14 -04:00
fb.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
fcntl.h
New kind of open files - "location only".
2011-03-15 02:21:45 -04:00
futex.h
remove __KERNEL__ tests of unexported headers under asm-generic/
2008-04-30 08:29:54 -07:00
getorder.h
asm-generic: rename page.h and uaccess.h
2009-06-11 21:02:17 +02:00
gpio.h
Revert "gpiolib: annotate gpio-intialization with __must_check"
2011-01-13 17:26:46 -08:00
hardirq.h
Fix IRQ flag handling naming
2010-10-07 14:08:55 +01:00
hw_irq.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
ide_iops.h
int-l64.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
int-ll64.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
io.h
asm-generic/io.h: add reads[bwl]/writes[bwl] helpers
2011-01-10 07:18:03 -05:00
ioctl.h
Make ioctl.h compatible with userland
2008-08-12 16:07:31 -07:00
ioctls.h
TTY: Add tty ioctl to figure device node of the system console.
2010-12-16 16:18:28 -08:00
iomap.h
generic: add ioremap_wc() interface wrapper
2008-04-24 23:40:47 +02:00
ipcbuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
irq.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
irq_regs.h
core: Replace __get_cpu_var with __this_cpu_read if not used for an address.
2010-12-17 15:07:19 +01:00
irqflags.h
Fix IRQ flag handling naming
2010-10-07 14:08:55 +01:00
Kbuild
include: replace unifdef-y with header-y
2010-08-14 22:26:51 +02:00
Kbuild.asm
include: replace unifdef-y with header-y
2010-08-14 22:26:51 +02:00
kdebug.h
asm-generic: kdebug.h: Checkpatch cleanup
2010-10-09 21:51:44 +02:00
kmap_types.h
include/asm-generic/kmap_types.h: add helpful reminder
2010-05-25 08:07:03 -07:00
libata-portmap.h
linkage.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
local.h
local_t: Remove cpu_local_xx macros
2010-01-05 15:34:49 +09:00
local64.h
arch: Implement local64_t
2010-06-09 11:12:36 +02:00
memory_model.h
tree-wide: fix assorted typos all over the place
2009-12-04 15:39:55 +01:00
mm_hooks.h
mman-common.h
thp: mm: define MADV_NOHUGEPAGE
2011-01-13 17:32:47 -08:00
mman.h
mm: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions
2009-09-22 07:17:41 -07:00
mmu.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
mmu_context.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
module.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
msgbuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
mutex-dec.h
mutex: speed up generic mutex implementations
2008-10-23 09:18:20 -07:00
mutex-null.h
mutex-xchg.h
mutex: speed up generic mutex implementations
2008-10-23 09:18:20 -07:00
mutex.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
page.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
param.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
parport.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
pci-dma-compat.h
dma-mapping: pci: move pci_set_dma_mask and pci_set_consistent_dma_mask to pci-dma-compat.h
2010-03-12 15:52:42 -08:00
pci.h
PCI: remove pcibios_scan_all_fns()
2009-09-09 13:29:18 -07:00
percpu.h
percpu: Optimize __get_cpu_var()
2010-09-10 10:56:51 +02:00
pgalloc.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
pgtable-nopmd.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
pgtable-nopud.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
pgtable.h
mm: <asm-generic/pgtable.h> must include <linux/mm_types.h>
2011-02-28 17:46:49 -08:00
poll.h
posix_types.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
resource.h
sched: SCHED_FIFO/SCHED_RR watchdog timer
2008-01-25 21:08:27 +01:00
rtc.h
asm-generic: make get_rtc_time overridable
2009-06-11 21:02:18 +02:00
scatterlist.h
asm-generic: remove ARCH_HAS_SG_CHAIN in scatterlist.h
2010-05-27 09:12:54 -07:00
sections.h
asm/sections: add text/data checking functions for arches to override
2009-09-23 07:39:30 -07:00
segment.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
sembuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
serial.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
setup.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
shmbuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
shmparam.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
siginfo.h
HWPOISON: Add new SIGBUS error codes for hardware poison signals
2009-09-16 11:50:06 +02:00
signal-defs.h
asm-generic: rename termios.h, signal.h and mman.h
2009-06-11 21:01:52 +02:00
signal.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
socket.h
net: Generalize socket rx gap / receive queue overflow cmsg
2009-10-12 13:26:31 -07:00
sockios.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
spinlock.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
stat.h
asm-generic/stat.h: support 64-bit file time_t for stat()
2010-11-01 15:31:29 -04:00
statfs.h
add f_flags to struct statfs(64)
2010-08-09 16:48:44 -04:00
string.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
swab.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
syscall.h
asm-generic: syscall_get_nr returns int
2009-09-22 19:56:50 -07:00
syscalls.h
Fix the declaration of sys_execve() in asm-generic/syscalls.h
2010-08-18 12:12:38 -07:00
system.h
asm-generic: cmpxchg does not handle non-long arguments
2010-10-09 21:51:27 +02:00
termbits.h
tty: Add EXTPROC support for LINEMODE
2010-08-10 13:47:39 -07:00
termios-base.h
asm-generic: rename termios.h, signal.h and mman.h
2009-06-11 21:01:52 +02:00
termios.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
timex.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
tlb.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
tlbflush.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
topology.h
topology: alternate fix for ia64 tiger_defconfig build breakage
2010-08-09 20:44:57 -07:00
types.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
uaccess-unaligned.h
asm-generic: rename page.h and uaccess.h
2009-06-11 21:02:17 +02:00
uaccess.h
asm-generic: uaccess: fix up local access_ok() usage
2009-06-19 14:58:08 +02:00
ucontext.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
unaligned.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
unistd.h
unistd.h: Add new syscalls numbers to asm-generic
2011-03-15 02:21:45 -04:00
user.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
vga.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
vmlinux.lds.h
tracing: Replace syscall_meta_data struct array with pointer array
2011-02-03 09:29:06 -05:00
xor.h