From 6dbd98e6cad2cc6aced7f8be2cd15b5a5cc3ed47 Mon Sep 17 00:00:00 2001 From: Simon Horman Date: Thu, 26 Nov 2015 22:07:23 -0800 Subject: [PATCH] datapath: test for netlink_set_err returning void In v2.6.33 netlink_set_err returns void. However, 1a50307ba182 ("netlink: fix NETLINK_RECV_NO_ENOBUFS in netlink_set_err()") was backported and included in v2.6.33.2 and in that and subsequent v2.6.33 stable releases netlink_set_err returns an int. It seems plausible that there are other backports floating around. So check for netlink_set_err returning void rather than including compatibility code based on the version of the kernel. Signed-off-by: Simon Horman Acked-by: Pravin B Shelar --- acinclude.m4 | 2 ++ datapath/linux/compat/include/net/genetlink.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/acinclude.m4 b/acinclude.m4 index 6771f485c..c5a1c44b4 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -490,6 +490,8 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [ OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_put_in_addr]) OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_find_nested]) OVS_GREP_IFELSE([$KSRC/include/net/netlink.h], [nla_is_last]) + OVS_GREP_IFELSE([$KSRC/include/linux/netlink.h], [void.*netlink_set_err], + [OVS_DEFINE([HAVE_VOID_NETLINK_SET_ERR])]) OVS_GREP_IFELSE([$KSRC/include/net/sctp/checksum.h], [sctp_compute_cksum]) diff --git a/datapath/linux/compat/include/net/genetlink.h b/datapath/linux/compat/include/net/genetlink.h index cf89d4c23..2830fa376 100644 --- a/datapath/linux/compat/include/net/genetlink.h +++ b/datapath/linux/compat/include/net/genetlink.h @@ -67,7 +67,7 @@ static inline int rpl_genl_unregister_family(struct genl_family *family) static inline int genl_set_err(struct genl_family *family, struct net *net, u32 portid, u32 group, int code) { -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33) +#ifdef HAVE_VOID_NETLINK_SET_ERR netlink_set_err(net->genl_sock, portid, group, code); return 0; #else -- 2.20.1