summaryrefslogtreecommitdiff
path: root/backport
diff options
context:
space:
mode:
authorLuca Coelho <luciano.coelho@intel.com>2018-02-18 15:24:53 +0200
committerJohannes Berg <johannes.berg@intel.com>2018-02-23 12:33:50 +0100
commit14482e0de6b99c90b6d72398515ffaa7eb208be4 (patch)
treeb00cf07c5423ba5dfb8a16ec98257b36c37a5375 /backport
parent3b0d02e17c0c063f3893d7fcb0caa66954a75c8c (diff)
backport: update genl_dump_check_consistent() backport
The genl_dump_check_consistent() function was changed in v4.15 to use only two arguments. The family is not needed anymore, because we were erroneously subtracting the header size and that was fixed in v4.15. Since the family was only used to check the header size, we can create a dummy with hdrsize = 0, which will allow us to call the old version of the function. There is a good side-effect to doing this: the bug is going to be fixed, because with hdrsize = 0 we will not subtract anything and it will have the same effect as the fix. Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'backport')
-rw-r--r--backport/backport-include/net/genetlink.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/backport/backport-include/net/genetlink.h b/backport/backport-include/net/genetlink.h
index f620b99d..dfbacbf4 100644
--- a/backport/backport-include/net/genetlink.h
+++ b/backport/backport-include/net/genetlink.h
@@ -56,9 +56,25 @@ static inline void *genl_info_userhdr(struct genl_info *info)
#endif
#if LINUX_VERSION_IS_LESS(3,1,0)
-#define genl_dump_check_consistent(cb, user_hdr, family)
+#define genl_dump_check_consistent(cb, user_hdr)
#endif
+#if LINUX_VERSION_IS_LESS(4,15,0)
+#ifndef genl_dump_check_consistent
+static inline
+void backport_genl_dump_check_consistent(struct netlink_callback *cb,
+ void *user_hdr)
+{
+ struct genl_family dummy_family = {
+ .hdrsize = 0,
+ };
+
+ genl_dump_check_consistent(cb, user_hdr, &dummy_family);
+}
+#define genl_dump_check_consistent LINUX_BACKPORT(genl_dump_check_consistent)
+#endif
+#endif /* LINUX_VERSION_IS_LESS(4,15,0) */
+
#if LINUX_VERSION_IS_LESS(3,13,0) && RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(7,0)
static inline int __real_genl_register_family(struct genl_family *family)
{
@@ -139,10 +155,7 @@ extern void genl_notify(struct sk_buff *skb, struct net *net, u32 pid,
genlmsg_put(_skb, _pid, _seq, &(_fam)->family, _flags, _cmd)
#define genlmsg_nlhdr(_hdr, _fam) \
genlmsg_nlhdr(_hdr, &(_fam)->family)
-#ifndef genl_dump_check_consistent
-#define genl_dump_check_consistent(_cb, _hdr, _fam) \
- genl_dump_check_consistent(_cb, _hdr, &(_fam)->family)
-#endif
+
#ifndef genlmsg_put_reply /* might already be there from _info override above */
#define genlmsg_put_reply(_skb, _info, _fam, _flags, _cmd) \
genlmsg_put_reply(_skb, _info, &(_fam)->family, _flags, _cmd)