aboutsummaryrefslogtreecommitdiffstats
path: root/testing/zfs-grsec/0002-Add-support-for-libtirpc.patch
diff options
context:
space:
mode:
Diffstat (limited to 'testing/zfs-grsec/0002-Add-support-for-libtirpc.patch')
-rw-r--r--testing/zfs-grsec/0002-Add-support-for-libtirpc.patch250
1 files changed, 250 insertions, 0 deletions
diff --git a/testing/zfs-grsec/0002-Add-support-for-libtirpc.patch b/testing/zfs-grsec/0002-Add-support-for-libtirpc.patch
new file mode 100644
index 0000000000..1a44c757b4
--- /dev/null
+++ b/testing/zfs-grsec/0002-Add-support-for-libtirpc.patch
@@ -0,0 +1,250 @@
+From 0f29fd8ac81a166103f311c180fd06d956dc6dc4 Mon Sep 17 00:00:00 2001
+From: Carlo Landmeter <clandmeter@gmail.com>
+Date: Tue, 1 Mar 2016 15:13:44 +0100
+Subject: [PATCH 2/8] Add support for libtirpc
+
+This introduces the --with-tirpc configure switch to compile with libtirpc.
+This is needed for libc's which do not have their own RPC libary (ie musl libc).
+---
+ cmd/mount_zfs/Makefile.am | 3 ++-
+ cmd/zdb/Makefile.am | 2 +-
+ cmd/zed/Makefile.am | 3 ++-
+ cmd/zfs/Makefile.am | 2 +-
+ cmd/zhack/Makefile.am | 2 +-
+ cmd/zinject/Makefile.am | 3 ++-
+ cmd/zpool/Makefile.am | 2 +-
+ cmd/zstreamdump/Makefile.am | 2 +-
+ cmd/ztest/Makefile.am | 2 +-
+ config/tirpc.m4 | 17 +++++++++++++++++
+ config/user.m4 | 1 +
+ lib/libnvpair/Makefile.am | 2 +-
+ lib/libspl/Makefile.am | 6 +++---
+ lib/libspl/include/rpc/xdr.h | 2 ++
+ lib/libspl/xdr.c | 2 ++
+ module/nvpair/nvpair.c | 4 ++++
+ 16 files changed, 42 insertions(+), 13 deletions(-)
+ create mode 100644 config/tirpc.m4
+
+diff --git a/cmd/mount_zfs/Makefile.am b/cmd/mount_zfs/Makefile.am
+index b1d9389..4be1135 100644
+--- a/cmd/mount_zfs/Makefile.am
++++ b/cmd/mount_zfs/Makefile.am
+@@ -19,4 +19,5 @@ mount_zfs_LDADD = \
+ $(top_builddir)/lib/libuutil/libuutil.la \
+ $(top_builddir)/lib/libzpool/libzpool.la \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+- $(top_builddir)/lib/libzfs_core/libzfs_core.la
++ $(top_builddir)/lib/libzfs_core/libzfs_core.la \
++ $(TIRPC_LIBS)
+diff --git a/cmd/zdb/Makefile.am b/cmd/zdb/Makefile.am
+index c22186a..181a821 100644
+--- a/cmd/zdb/Makefile.am
++++ b/cmd/zdb/Makefile.am
+@@ -19,4 +19,4 @@ zdb_LDADD = \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la
+
+-zdb_LDADD += $(ZLIB)
++zdb_LDADD += $(ZLIB) $(TIRPC_LIBS)
+diff --git a/cmd/zed/Makefile.am b/cmd/zed/Makefile.am
+index 70e4f7f..ce16ceb 100644
+--- a/cmd/zed/Makefile.am
++++ b/cmd/zed/Makefile.am
+@@ -30,7 +30,8 @@ zed_LDADD = \
+ $(top_builddir)/lib/libspl/libspl.la \
+ $(top_builddir)/lib/libzpool/libzpool.la \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+- $(top_builddir)/lib/libzfs_core/libzfs_core.la
++ $(top_builddir)/lib/libzfs_core/libzfs_core.la \
++ $(TIRPC_LIBS)
+
+ zedconfdir = $(sysconfdir)/zfs/zed.d
+
+diff --git a/cmd/zfs/Makefile.am b/cmd/zfs/Makefile.am
+index 3cac73d..ea35555 100644
+--- a/cmd/zfs/Makefile.am
++++ b/cmd/zfs/Makefile.am
+@@ -19,5 +19,5 @@ zfs_LDADD = \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la
+
+-zfs_LDADD += $(ZLIB)
++zfs_LDADD += $(ZLIB) $(TIRPC_LIBS)
+ zfs_LDFLAGS = -pthread
+diff --git a/cmd/zhack/Makefile.am b/cmd/zhack/Makefile.am
+index 53e3241..07b5fab 100644
+--- a/cmd/zhack/Makefile.am
++++ b/cmd/zhack/Makefile.am
+@@ -16,4 +16,4 @@ zhack_LDADD = \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la
+
+-zhack_LDADD += $(ZLIB)
++zhack_LDADD += $(ZLIB) $(TIRPC_LIBS)
+diff --git a/cmd/zinject/Makefile.am b/cmd/zinject/Makefile.am
+index 2500bee..2d069d3 100644
+--- a/cmd/zinject/Makefile.am
++++ b/cmd/zinject/Makefile.am
+@@ -16,4 +16,5 @@ zinject_LDADD = \
+ $(top_builddir)/lib/libuutil/libuutil.la \
+ $(top_builddir)/lib/libzpool/libzpool.la \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+- $(top_builddir)/lib/libzfs_core/libzfs_core.la
++ $(top_builddir)/lib/libzfs_core/libzfs_core.la \
++ $(TIRPC_LIBS)
+diff --git a/cmd/zpool/Makefile.am b/cmd/zpool/Makefile.am
+index c11951b..a59bf32 100644
+--- a/cmd/zpool/Makefile.am
++++ b/cmd/zpool/Makefile.am
+@@ -19,4 +19,4 @@ zpool_LDADD = \
+ $(top_builddir)/lib/libzpool/libzpool.la \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la \
+- $(LIBBLKID)
++ $(LIBBLKID) $(TIRPC_LIBS)
+diff --git a/cmd/zstreamdump/Makefile.am b/cmd/zstreamdump/Makefile.am
+index 654863a..f800a8e 100644
+--- a/cmd/zstreamdump/Makefile.am
++++ b/cmd/zstreamdump/Makefile.am
+@@ -16,4 +16,4 @@ zstreamdump_LDADD = \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la
+
+-zstreamdump_LDADD += $(ZLIB)
++zstreamdump_LDADD += $(ZLIB) $(TIRPC_LIBS)
+diff --git a/cmd/ztest/Makefile.am b/cmd/ztest/Makefile.am
+index e3be39a..1953fe8 100644
+--- a/cmd/ztest/Makefile.am
++++ b/cmd/ztest/Makefile.am
+@@ -19,4 +19,4 @@ ztest_LDADD = \
+ $(top_builddir)/lib/libzfs/libzfs.la \
+ $(top_builddir)/lib/libzfs_core/libzfs_core.la
+
+-ztest_LDADD += -lm -ldl
++ztest_LDADD += -lm -ldl $(TIRPC_LIBS)
+diff --git a/config/tirpc.m4 b/config/tirpc.m4
+new file mode 100644
+index 0000000..ec15785
+--- /dev/null
++++ b/config/tirpc.m4
+@@ -0,0 +1,17 @@
++dnl
++dnl musl support
++dnl
++
++AC_DEFUN([ZFS_AC_CONFIG_USER_TIRPC], [
++AH_TEMPLATE([WITH_TIRPC],
++ [Define to 1 if libtirpc is being used as the RPC library])
++AC_ARG_WITH(tirpc,
++AC_HELP_STRING([--with-tirpc], [compile with libtirpc]),
++[if test x$withval = xyes; then
++ AC_DEFINE([WITH_TIRPC], 1, [Define if you have musl])
++ PKG_CHECK_MODULES([TIRPC],[libtirpc])
++ AC_DEFINE([WITH_TIRPC], 1, [Define if you have libtirpc])
++ AC_SUBST(TIRPC_CFLAGS)
++ AC_SUBST(TIRPC_LIBS)
++fi])
++])
+diff --git a/config/user.m4 b/config/user.m4
+index 7f79420..820b8d3 100644
+--- a/config/user.m4
++++ b/config/user.m4
+@@ -13,6 +13,7 @@ AC_DEFUN([ZFS_AC_CONFIG_USER], [
+ ZFS_AC_CONFIG_USER_LIBBLKID
+ ZFS_AC_CONFIG_USER_FRAME_LARGER_THAN
+ ZFS_AC_CONFIG_USER_RUNSTATEDIR
++ ZFS_AC_CONFIG_USER_TIRPC
+ dnl #
+ dnl # Checks for library functions
+ AC_CHECK_FUNCS([mlockall])
+diff --git a/lib/libnvpair/Makefile.am b/lib/libnvpair/Makefile.am
+index c9ac1f1..985285a 100644
+--- a/lib/libnvpair/Makefile.am
++++ b/lib/libnvpair/Makefile.am
+@@ -4,7 +4,7 @@ VPATH = \
+ $(top_srcdir)/module/nvpair \
+ $(top_srcdir)/lib/libnvpair
+
+-AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN)
++AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) $(TIRPC_CFLAGS)
+
+ DEFAULT_INCLUDES += \
+ -I$(top_srcdir)/include \
+diff --git a/lib/libspl/Makefile.am b/lib/libspl/Makefile.am
+index a569446..9cedfaa 100644
+--- a/lib/libspl/Makefile.am
++++ b/lib/libspl/Makefile.am
+@@ -4,13 +4,13 @@ VPATH = \
+ $(top_srcdir)/lib/libspl \
+ $(top_srcdir)/lib/libspl/$(TARGET_ASM_DIR)
+
+-AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN)
++AM_CFLAGS += $(DEBUG_STACKFLAGS) $(FRAME_LARGER_THAN) $(TIRPC_CFLAGS)
+
+ SUBDIRS = include $(TARGET_ASM_DIR)
+ DIST_SUBDIRS = include asm-generic asm-i386 asm-x86_64
+
+ DEFAULT_INCLUDES += \
+- -I$(top_srcdir)/lib/libspl/include
++ -I$(top_srcdir)/lib/libspl/include $(TIRPC_CFLAGS)
+
+ AM_CCASFLAGS = \
+ -I$(top_srcdir)/lib/libspl/include
+@@ -42,6 +42,6 @@ nodist_libspl_la_SOURCES = \
+ $(USER_ASM) \
+ $(KERNEL_C)
+
+-libspl_la_LIBADD = -lrt
++libspl_la_LIBADD = -lrt $(TIRPC_LDFLAGS)
+
+ EXTRA_DIST = $(USER_C)
+diff --git a/lib/libspl/include/rpc/xdr.h b/lib/libspl/include/rpc/xdr.h
+index 99500d6..cd2d17a 100644
+--- a/lib/libspl/include/rpc/xdr.h
++++ b/lib/libspl/include/rpc/xdr.h
+@@ -60,6 +60,8 @@ typedef struct xdr_bytesrec {
+ #define XDR_RDMAGET 4
+ #define XDR_RDMASET 5
+
++#ifndef WITH_TIRPC
+ extern bool_t xdr_control(XDR *xdrs, int request, void *info);
++#endif
+
+ #endif
+diff --git a/lib/libspl/xdr.c b/lib/libspl/xdr.c
+index 288a338..f122496 100644
+--- a/lib/libspl/xdr.c
++++ b/lib/libspl/xdr.c
+@@ -29,6 +29,7 @@
+ * under license from the Regents of the University of California.
+ */
+
++#ifndef WITH_TIRPC
+ #include <rpc/xdr.h>
+
+ /*
+@@ -76,3 +77,4 @@ xdr_control(XDR *xdrs, int request, void *info)
+ }
+ return (FALSE);
+ }
++#endif
+diff --git a/module/nvpair/nvpair.c b/module/nvpair/nvpair.c
+index 1eca0fe..efd6287 100644
+--- a/module/nvpair/nvpair.c
++++ b/module/nvpair/nvpair.c
+@@ -3251,8 +3251,12 @@ nvs_xdr_nvpair(nvstream_t *nvs, nvpair_t *nvp, size_t *size)
+ return (0);
+
+ /* sanity check the size parameter */
++#ifndef WITH_TIRPC
+ if (!xdr_control(xdr, XDR_GET_BYTES_AVAIL, &bytesrec))
+ return (EFAULT);
++#else
++ xdr_control(xdr, XDR_GET_BYTES_AVAIL, &bytesrec);
++#endif
+
+ if (*size > NVS_XDR_MAX_LEN(bytesrec.xc_num_avail))
+ return (EFAULT);
+--
+2.7.2
+