zfs/module/spl
Richard Yao 313b1ea622 vn_getf/vn_releasef should not accept negative file descriptors
C type coercion rules require that negative numbers be converted into
positive numbers via wraparound such that a negative -1 becomes a
positive 1. This causes vn_getf to return a file handle when it should
return NULL whenever a positive file descriptor existed with the same
value. We should check for a negative file descriptor and return NULL
instead.

This was caught by ClusterHQ's unit testing.

Reference:
http://stackoverflow.com/questions/50605/signed-to-unsigned-conversion-in-c-is-it-always-safe

Signed-off-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Andriy Gapon <avg@FreeBSD.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #450
2015-04-24 13:02:00 -07:00
..
Makefile.in Refactor existing code 2015-01-16 13:55:08 -08:00
spl-atomic.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-condvar.c Refactor existing code 2015-01-16 13:55:08 -08:00
spl-cred.c Remove credential configure checks. 2014-10-17 15:11:51 -07:00
spl-err.c Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-generic.c Retire spl_module_init()/spl_module_fini() 2015-02-27 13:43:39 -08:00
spl-kmem-cache.c Don't allow shrinking a PF_FSTRANS context 2015-04-03 11:32:31 -07:00
spl-kmem.c Optimize vmem_alloc() retry path 2015-02-02 10:57:56 -08:00
spl-kobj.c Fix GFP_KERNEL allocations flags 2015-01-21 15:25:19 -08:00
spl-kstat.c Refactor existing code 2015-01-16 13:55:08 -08:00
spl-mutex.c Remove adaptive mutex implementation 2014-10-17 15:07:28 -07:00
spl-proc.c Refactor generic memory allocation interfaces 2015-01-16 13:55:09 -08:00
spl-rwlock.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-taskq.c Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-thread.c Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-tsd.c Refactor generic memory allocation interfaces 2015-01-16 13:55:09 -08:00
spl-vmem.c Add hooks for disabling direct reclaim 2015-01-16 13:55:09 -08:00
spl-vnode.c vn_getf/vn_releasef should not accept negative file descriptors 2015-04-24 13:02:00 -07:00
spl-xdr.c Retire legacy debugging infrastructure 2014-11-19 10:35:07 -08:00
spl-zlib.c Refactor existing code 2015-01-16 13:55:08 -08:00