Fix NULL pointer dereference on PaX/GRSecurity patched Linux 3.3 and later kernels
Support for PaX/GRSecurity patched kernels was developed against Linux 3.2. Unfortunately, an autotools check introduced for a Linux 3.3 API fails on PaX/GRSecurity patched kernels. This causes the module to be built against the Linux 3.2 ABI, which results in a NULL pointer dereference at runtime. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu> Closes #794 Closes #809
This commit is contained in:
parent
fc173c8589
commit
ed3fc80048
@ -6,11 +6,12 @@ AC_DEFUN([ZFS_AC_KERNEL_SHOW_OPTIONS], [
|
||||
|
||||
ZFS_LINUX_TRY_COMPILE([
|
||||
#include <linux/fs.h>
|
||||
],[
|
||||
int (*show_options) (struct seq_file *, struct dentry *) = NULL;
|
||||
struct super_operations sops __attribute__ ((unused));
|
||||
|
||||
sops.show_options = show_options;
|
||||
int show_options (struct seq_file * x, struct dentry * y) { return 0; };
|
||||
static struct super_operations sops __attribute__ ((unused)) = {
|
||||
.show_options = show_options,
|
||||
};
|
||||
],[
|
||||
],[
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE(HAVE_SHOW_OPTIONS_WITH_DENTRY, 1,
|
||||
|
18
configure
vendored
18
configure
vendored
@ -15280,14 +15280,15 @@ cat >>conftest.$ac_ext <<_ACEOF
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
||||
int show_options (struct seq_file * x, struct dentry * y) { return 0; };
|
||||
static struct super_operations sops __attribute__ ((unused)) = {
|
||||
.show_options = show_options,
|
||||
};
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
int (*show_options) (struct seq_file *, struct dentry *) = NULL;
|
||||
struct super_operations sops __attribute__ ((unused));
|
||||
|
||||
sops.show_options = show_options;
|
||||
|
||||
;
|
||||
return 0;
|
||||
@ -21807,14 +21808,15 @@ cat >>conftest.$ac_ext <<_ACEOF
|
||||
|
||||
#include <linux/fs.h>
|
||||
|
||||
int show_options (struct seq_file * x, struct dentry * y) { return 0; };
|
||||
static struct super_operations sops __attribute__ ((unused)) = {
|
||||
.show_options = show_options,
|
||||
};
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
|
||||
int (*show_options) (struct seq_file *, struct dentry *) = NULL;
|
||||
struct super_operations sops __attribute__ ((unused));
|
||||
|
||||
sops.show_options = show_options;
|
||||
|
||||
;
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user