mirror_zfs/include/sys
Richard Yao 1683e75edc Fix race between getf() and areleasef()
If a vnode is released asynchronously through areleasef(), it is
possible for the user process to reuse the file descriptor before
areleasef is called. When this happens, getf() will return a stale
reference, any operations in the kernel on that file descriptor will
fail (as it is closed) and the operations meant for that fd will
never occur from userspace's perspective.

We correct this by detecting this condition in getf(), doing a putf
on the old file handle, updating the file descriptor and proceeding
as if everything was fine. When the areleasef() is done, it will
harmlessly decrement the reference counter on the Illumos file handle.

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #492
2015-12-03 15:44:47 -08:00
..
fm Kernel header installation should respect --prefix 2014-10-28 09:31:48 -07:00
fs Kernel header installation should respect --prefix 2014-10-28 09:31:48 -07:00
sysevent Kernel header installation should respect --prefix 2014-10-28 09:31:48 -07:00
acl_impl.h Refresh links to web site 2013-03-04 19:09:34 -08:00
acl.h Refresh links to web site 2013-03-04 19:09:34 -08:00
atomic.h Remove atomic64_xchg() wrappers 2014-10-17 15:11:50 -07:00
attr.h Refresh links to web site 2013-03-04 19:09:34 -08:00
bitmap.h Refresh links to web site 2013-03-04 19:09:34 -08:00
bootconf.h Refresh links to web site 2013-03-04 19:09:34 -08:00
bootprops.h Refresh links to web site 2013-03-04 19:09:34 -08:00
buf.h Refresh links to web site 2013-03-04 19:09:34 -08:00
byteorder.h Refresh links to web site 2013-03-04 19:09:34 -08:00
callb.h Refresh links to web site 2013-03-04 19:09:34 -08:00
callo.h Emulate illumos interface cv_timedwait_hires() 2013-11-04 09:49:24 -08:00
cmn_err.h Refresh links to web site 2013-03-04 19:09:34 -08:00
compress.h Refresh links to web site 2013-03-04 19:09:34 -08:00
condvar.h Rename cv_wait_interruptible() to cv_wait_sig() 2015-06-10 16:36:12 -07:00
conf.h Refresh links to web site 2013-03-04 19:09:34 -08:00
console.h Refresh links to web site 2013-03-04 19:09:34 -08:00
cpupart.h Refresh links to web site 2013-03-04 19:09:34 -08:00
cpuvar.h Refresh links to web site 2013-03-04 19:09:34 -08:00
crc32.h Refresh links to web site 2013-03-04 19:09:34 -08:00
cred.h Remove credential configure checks. 2014-10-17 15:11:51 -07:00
ctype.h Refresh links to web site 2013-03-04 19:09:34 -08:00
ddi.h Refresh links to web site 2013-03-04 19:09:34 -08:00
debug.h Add IMPLY() and EQUIV() macros 2015-06-24 14:44:47 -07:00
dirent.h Refresh links to web site 2013-03-04 19:09:34 -08:00
disp.h Add kpreempt() compatibility macro 2013-10-09 13:52:55 -07:00
dkio.h Additional dkio support for TRIM/Discard 2015-12-02 13:44:35 -08:00
dkioc_free_util.h Additional dkio support for TRIM/Discard 2015-12-02 13:44:35 -08:00
dklabel.h Refresh links to web site 2013-03-04 19:09:34 -08:00
dnlc.h Remove shrink_{i,d}node_cache() wrappers 2014-10-17 15:11:51 -07:00
dumphdr.h Refresh links to web site 2013-03-04 19:09:34 -08:00
efi_partition.h Refresh links to web site 2013-03-04 19:09:34 -08:00
errno.h Refresh links to web site 2013-03-04 19:09:34 -08:00
extdirent.h Refresh links to web site 2013-03-04 19:09:34 -08:00
fcntl.h Refresh links to web site 2013-03-04 19:09:34 -08:00
file.h Refresh links to web site 2013-03-04 19:09:34 -08:00
idmap.h Refresh links to web site 2013-03-04 19:09:34 -08:00
int_limits.h Refresh links to web site 2013-03-04 19:09:34 -08:00
int_types.h Refresh links to web site 2013-03-04 19:09:34 -08:00
inttypes.h Refresh links to web site 2013-03-04 19:09:34 -08:00
isa_defs.h Add support for aarch64 (ARMv8) 2014-04-25 15:25:32 -07:00
kidmap.h Refresh links to web site 2013-03-04 19:09:34 -08:00
kmem_cache.h Fix CPU hotplug 2015-10-13 09:50:40 -07:00
kmem.h Add hooks for disabling direct reclaim 2015-01-16 13:55:09 -08:00
kobj.h Refresh links to web site 2013-03-04 19:09:34 -08:00
kstat.h 3537 add kstat_waitq_enter and friends 2013-10-25 13:41:52 -07:00
list.h Refresh links to web site 2013-03-04 19:09:34 -08:00
Makefile.am Additional dkio support for TRIM/Discard 2015-12-02 13:44:35 -08:00
mkdev.h Refresh links to web site 2013-03-04 19:09:34 -08:00
mntent.h Refresh links to web site 2013-03-04 19:09:34 -08:00
modctl.h Refresh links to web site 2013-03-04 19:09:34 -08:00
mode.h Refresh links to web site 2013-03-04 19:09:34 -08:00
mount.h Refresh links to web site 2013-03-04 19:09:34 -08:00
mutex.h Don't allow shrinking a PF_FSTRANS context 2015-04-03 11:32:31 -07:00
note.h Refresh links to web site 2013-03-04 19:09:34 -08:00
open.h Refresh links to web site 2013-03-04 19:09:34 -08:00
param.h Refresh links to web site 2013-03-04 19:09:34 -08:00
pathname.h Refresh links to web site 2013-03-04 19:09:34 -08:00
policy.h Refresh links to web site 2013-03-04 19:09:34 -08:00
pool.h Refresh links to web site 2013-03-04 19:09:34 -08:00
priv_impl.h Refresh links to web site 2013-03-04 19:09:34 -08:00
proc.h Refresh links to web site 2013-03-04 19:09:34 -08:00
processor.h Refresh links to web site 2013-03-04 19:09:34 -08:00
pset.h Refresh links to web site 2013-03-04 19:09:34 -08:00
random.h Refresh links to web site 2013-03-04 19:09:34 -08:00
refstr.h Refresh links to web site 2013-03-04 19:09:34 -08:00
resource.h Refresh links to web site 2013-03-04 19:09:34 -08:00
rwlock.h Use tab indent in rwlock.h 2015-10-02 11:21:35 -07:00
sdt.h Define SET_ERROR() 2013-10-09 14:20:46 -07:00
sid.h Refresh links to web site 2013-03-04 19:09:34 -08:00
signal.h Refresh links to web site 2013-03-04 19:09:34 -08:00
stat.h Refresh links to web site 2013-03-04 19:09:34 -08:00
stropts.h Refresh links to web site 2013-03-04 19:09:34 -08:00
sunddi.h Update code to use misc_register()/misc_deregister() 2014-10-17 15:07:28 -07:00
sunldi.h Refresh links to web site 2013-03-04 19:09:34 -08:00
sysdc.h Refresh links to web site 2013-03-04 19:09:34 -08:00
sysevent.h Refresh links to web site 2013-03-04 19:09:34 -08:00
sysmacros.h sysmacros: Make P2ROUNDUP not trigger int overflow 2015-11-13 15:21:52 -08:00
systeminfo.h Simplify hostid logic 2014-04-14 09:04:41 -07:00
systm.h Refresh links to web site 2013-03-04 19:09:34 -08:00
t_lock.h Refresh links to web site 2013-03-04 19:09:34 -08:00
taskq.h Invert minclsyspri and maxclsyspri 2015-07-28 13:59:03 -07:00
thread.h De-inline spl_kthread_create(). 2014-04-09 19:17:12 -07:00
time.h Use current_kernel_time() in the time compatibility wrappers 2015-01-16 13:54:35 -08:00
timer.h Add ddi_time_after and friends 2014-04-14 09:32:01 -07:00
tsd.h Refresh links to web site 2013-03-04 19:09:34 -08:00
types32.h Refresh links to web site 2013-03-04 19:09:34 -08:00
types.h Refactor existing code 2015-01-16 13:55:08 -08:00
u8_textprep.h Refresh links to web site 2013-03-04 19:09:34 -08:00
uio.h Restructure uio to accommodate bio_vec 2015-08-24 10:10:21 -07:00
unistd.h Refresh links to web site 2013-03-04 19:09:34 -08:00
user.h Fix race between getf() and areleasef() 2015-12-03 15:44:47 -08:00
va_list.h Refresh links to web site 2013-03-04 19:09:34 -08:00
varargs.h Refresh links to web site 2013-03-04 19:09:34 -08:00
vfs_opreg.h Refresh links to web site 2013-03-04 19:09:34 -08:00
vfs.h Refresh links to web site 2013-03-04 19:09:34 -08:00
vmem.h Add memory compatibility wrappers 2015-06-29 09:26:29 -07:00
vmsystm.h Include other sources of freeable memory in the freemem calculation 2015-08-19 09:25:30 -07:00
vnode.h Implement areleasef() 2015-04-24 13:02:37 -07:00
zmod.h Refresh links to web site 2013-03-04 19:09:34 -08:00
zone.h Add crgetzoneid() stub 2015-04-02 09:49:55 -07:00