Fix build failures on PaX/GRSecurity patched kernels
authorRichard Yao <ryao@cs.stonybrook.edu>
Thu, 31 May 2012 03:25:31 +0000 (23:25 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 17 Jul 2012 16:22:43 +0000 (09:22 -0700)
commit0a6b03d3b87cf17ac6159395df93ba3fcfdddc45
treede8b4ffa1f25089e7f1659f2586c4a577c84d08f
parentb5a28807cdec3c05aa69cbe4689cd914dc94783a
Fix build failures on PaX/GRSecurity patched kernels

Gentoo Hardened kernels include the PaX/GRSecurity patches. They use a
dialect of C that relies on a GCC plugin. In particular, struct
file_operations has been marked do_const in the PaX/GRSecurity dialect,
which causes GCC to consider all instances of it as const. This caused
failures in the autotools checks and the ZFS source code.

To address this, we modify the autotools checks to take into account
differences between the PaX C dialect and the regular C dialect. We also
modify struct zfs_acl's z_ops member to be a pointer to a function
pointer table. Lastly, we modify zpl_put_link() to address a PaX change
to the function prototype of nd_get_link().  This avoids compiler errors
in the PaX/GRSecurity dialect.

Note that the change in zpl_put_link() causes a warning that becomes a
build failure when debugging is enabled. Fixing that warning requires
ryao/spl@5ca50ef459c59bc74b7a7cd3af7311da2b1cd2c3.

Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #484
config/kernel-evict-inode.m4
config/kernel-fallocate.m4
config/kernel-fsync.m4
configure
include/sys/zfs_acl.h
module/zfs/zfs_acl.c
module/zfs/zpl_inode.c