mirror_zfs/lib/libspl/include/sys
Jason Zaman 5c790678f1 sysmacros: Make P2ROUNDUP not trigger int overflow
The original P2ROUNDUP and P2ROUNDUP_TYPED macros contain -x which
triggers PaX's integer overflow detection for unsigned integers.
Replace the macros with an equivalent version that does not trigger
the overflow.

Axioms:
A. (-(x)) === (~((x) - 1)) === (~(x) + 1) under two's complement.
B. ~(x & y) === ((~(x)) | (~(y))) under De Morgan's law.
C. ~(~x) === x under the law of excluded middle.

Proof:
0. (-(-(x) & -(align))) original
1. (~(-(x) & -(align)) + 1) by A
2. (((~(-(x))) | (~(-(align)))) + 1) by B
3. (((~(~((x) - 1))) | (~(~((align) - 1)))) + 1) by A
4. (((((x) - 1)) | (((align) - 1))) + 1) by C
Q.E.D.

Signed-off-by: Jason Zaman <jason@perfinion.com>
Reviewed-by: Chris Dunlop <chris@onthe.net.au>
Reviewed-by: Richard Yao <ryao@gentoo.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #3949
2015-11-16 16:10:07 -08:00
..
dktp Remove autotools products 2012-08-27 11:47:44 -07:00
sysevent Remove autotools products 2012-08-27 11:47:44 -07:00
acl_impl.h Add linux libspl support 2010-08-31 13:41:59 -07:00
acl.h Add linux libspl support 2010-08-31 13:41:59 -07:00
bitmap.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
byteorder.h Add linux libspl support 2010-08-31 13:41:59 -07:00
callb.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
cmn_err.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
compress.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
cred.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
debug.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
dkio.h Fix for access beyond end of device error 2010-11-10 21:29:07 -08:00
dklabel.h Fix for access beyond end of device error 2010-11-10 21:29:07 -08:00
feature_tests.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
file.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
frame.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
int_limits.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
int_types.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
inttypes.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
isa_defs.h Add support for aarch64 (ARMv8) 2014-04-25 15:35:30 -07:00
kmem.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
kstat.h Revert "Add txgs-<pool> kstat file" 2013-10-25 13:57:25 -07:00
list_impl.h Add linux libspl support 2010-08-31 13:41:59 -07:00
list.h Add linux libspl support 2010-08-31 13:41:59 -07:00
Makefile.am Add temporary mount options 2015-09-03 14:14:55 -07:00
mhd.h Add linux libspl support 2010-08-31 13:41:59 -07:00
mkdev.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
mnttab.h Add temporary mount options 2015-09-03 14:14:55 -07:00
mount.h Add temporary mount options 2015-09-03 14:14:55 -07:00
note.h Add linux libspl support 2010-08-31 13:41:59 -07:00
param.h Avoid PAGESIZE redefinition 2014-08-13 10:36:09 -07:00
policy.h Illumos 3897 - zfs filesystem and snapshot limits 2015-04-28 16:22:51 -07:00
priv.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
processor.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
stack.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
stat.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
stropts.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
sunddi.h Add linux libspl support 2010-08-31 13:41:59 -07:00
sysevent.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
sysmacros.h sysmacros: Make P2ROUNDUP not trigger int overflow 2015-11-16 16:10:07 -08:00
systeminfo.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
systm.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
time.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
types32.h Add linux libspl support 2010-08-31 13:41:59 -07:00
types.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
tzfile.h Add linux libspl support 2010-08-31 13:41:59 -07:00
uio.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
va_list.h Replace __va_list with va_list 2014-08-13 10:35:00 -07:00
varargs.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
vnode.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00
vtoc.h Fix for access beyond end of device error 2010-11-10 21:29:07 -08:00
zone.h cstyle: Resolve C style issues 2013-12-18 16:46:35 -08:00