diff --git a/iscsi-scst/Makefile b/iscsi-scst/Makefile index 31007ca6a..2f62dbca8 100644 --- a/iscsi-scst/Makefile +++ b/iscsi-scst/Makefile @@ -131,7 +131,8 @@ PRE_CFLAGS = $(OFED_CFLAGS) \ mods: include/iscsi_scst_itf_ver.h Modules.symvers Module.symvers \ $(CONFTEST_OUTPUTS) - $(MAKE) -C $(KDIR) SCST_INC_DIR=$(SCST_INC_DIR) SUBDIRS=$(KMOD) modules + $(MAKE) -C $(KDIR) SCST_INC_DIR=$(SCST_INC_DIR) SUBDIRS=$(KMOD) \ + PRE_CFLAGS="$(PRE_CFLAGS)" modules echo "$@: INFINIBAND_ENABLED = $(INFINIBAND_ENABLED)" if $(INFINIBAND_ENABLED); then \ echo " Building against $(OFED_FLAVOR) InfiniBand kernel headers."; \ @@ -306,6 +307,12 @@ conftest/register_mad_agent/result-$(KVER).txt: \ echo "$(call run_conftest,register_mad_agent, \ -DREGISTER_MAD_AGENT_HAS_FLAGS_ARG)" >"$@" +conftest/sock_recvmsg/result-$(KVER).txt: \ + conftest/sock_recvmsg/sock_recvmsg.c \ + conftest/sock_recvmsg/Makefile + echo "$(call run_conftest_bool,sock_recvmsg, \ + SOCK_RECVMSG_HAS_FOUR_ARGS)" >"$@" + conftest/use_pre_440_wr_structure/result-$(KVER).txt: \ conftest/use_pre_440_wr_structure/use_pre_440_wr_structure.c \ conftest/use_pre_440_wr_structure/Makefile diff --git a/iscsi-scst/conftest/sock_recvmsg/Makefile b/iscsi-scst/conftest/sock_recvmsg/Makefile new file mode 100644 index 000000000..e5e1878f7 --- /dev/null +++ b/iscsi-scst/conftest/sock_recvmsg/Makefile @@ -0,0 +1,3 @@ +LINUXINCLUDE := $(PRE_CFLAGS) $(LINUXINCLUDE) + +obj-m += sock_recvmsg.o diff --git a/iscsi-scst/conftest/sock_recvmsg/sock_recvmsg.c b/iscsi-scst/conftest/sock_recvmsg/sock_recvmsg.c new file mode 100644 index 000000000..9336f6181 --- /dev/null +++ b/iscsi-scst/conftest/sock_recvmsg/sock_recvmsg.c @@ -0,0 +1,11 @@ +#include +#include + +static int modinit(void) +{ + int (*f)(struct socket *, struct msghdr *, size_t, int) = sock_recvmsg; + + return f != NULL; +} + +module_init(modinit); diff --git a/iscsi-scst/kernel/Makefile b/iscsi-scst/kernel/Makefile index 48549c886..a8eee62cf 100644 --- a/iscsi-scst/kernel/Makefile +++ b/iscsi-scst/kernel/Makefile @@ -28,6 +28,7 @@ EXTRA_CFLAGS += -I$(src)/../include -I$(SCST_INC_DIR) EXTRA_CFLAGS += $(call enable-Wextra,-Wextra \ $(call cc-option,-Wno-old-style-declaration) \ -Wno-unused-parameter -Wno-missing-field-initializers) +EXTRA_CFLAGS += $(PRE_CFLAGS) EXTRA_CFLAGS += -DCONFIG_SCST_EXTRACHECKS #EXTRA_CFLAGS += -DCONFIG_SCST_TRACING diff --git a/iscsi-scst/kernel/nthread.c b/iscsi-scst/kernel/nthread.c index c8322d104..3b28c9de1 100644 --- a/iscsi-scst/kernel/nthread.c +++ b/iscsi-scst/kernel/nthread.c @@ -728,7 +728,7 @@ restart: oldfs = get_fs(); set_fs(get_ds()); res = sock_recvmsg(conn->sock, msg, -#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 7, 0) +#if SOCK_RECVMSG_HAS_FOUR_ARGS read_size, #endif MSG_DONTWAIT | MSG_NOSIGNAL);