netfilter: nat: Avoid ABI change in 4.13.13

This commit is contained in:
Ben Hutchings 2017-11-16 21:04:07 +00:00
parent 7cb3e39661
commit 617046eb45
3 changed files with 60 additions and 0 deletions

1
debian/changelog vendored
View File

@ -141,6 +141,7 @@ linux (4.13.13-1) UNRELEASED; urgency=medium
* [arm64] nvmem: Enable NVMEM_SUNXI_SID as module (Closes: #881567)
* [x86] rmi4: Disable RMI4_SMB (Closes: #880471)
* ALSA: timer: Avoid ABI change in 4.13.13
* netfilter: nat: Avoid ABI change in 4.13.13
-- Salvatore Bonaccorso <carnil@debian.org> Sat, 04 Nov 2017 09:54:41 +0100

View File

@ -0,0 +1,58 @@
From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 16 Nov 2017 21:00:59 +0000
Subject: netfilter: nat: Avoid ABI change in 4.13.13
Forwarded: not-needed
Commit e1bf1687740c ("netfilter: nat: Revert "netfilter: nat: convert
nat bysrc hash to rhashtable") changed the type of
nf_conn::nat_bysource. Thankfully the two types are the same size,
and nothing outside of nf_nat_core touches this field directly. Hide
the change from genksyms but add compile-time assertions to make sure
that this isn't an ABI change.
---
--- a/include/net/netfilter/nf_conntrack.h
+++ b/include/net/netfilter/nf_conntrack.h
@@ -17,6 +17,7 @@
#include <linux/bitops.h>
#include <linux/compiler.h>
#include <linux/atomic.h>
+#include <linux/rhashtable.h>
#include <linux/netfilter/nf_conntrack_tcp.h>
#include <linux/netfilter/nf_conntrack_dccp.h>
@@ -82,7 +83,11 @@ struct nf_conn {
possible_net_t ct_net;
#if IS_ENABLED(CONFIG_NF_NAT)
+#ifndef __GENKSYMS__
struct hlist_node nat_bysource;
+#else
+ struct rhlist_head nat_bysource;
+#endif
#endif
/* all members below initialized via memset */
u8 __nfct_init_offset[0];
--- a/include/net/netfilter/nf_nat.h
+++ b/include/net/netfilter/nf_nat.h
@@ -1,5 +1,6 @@
#ifndef _NF_NAT_H
#define _NF_NAT_H
+#include <linux/rhashtable.h>
#include <linux/netfilter_ipv4.h>
#include <linux/netfilter/nf_nat.h>
#include <net/netfilter/nf_conntrack_tuple.h>
--- a/net/netfilter/nf_nat_core.c
+++ b/net/netfilter/nf_nat_core.c
@@ -796,6 +796,11 @@ static int __init nf_nat_init(void)
{
int ret;
+ /* bwh: Assert that nat_bysource hasn't changed size or alignment */
+ BUILD_BUG_ON(sizeof(struct hlist_node) != sizeof(struct rhlist_head));
+ BUILD_BUG_ON(__alignof__(struct hlist_node) !=
+ __alignof__(struct rhlist_head));
+
/* Leave them the same for the moment. */
nf_nat_htable_size = nf_conntrack_htable_size;

View File

@ -149,3 +149,4 @@ debian/mac80211-avoid-abi-change-in-4.13.5.patch
debian/keys-limit-abi-change-in-4.13.10.patch
debian/swap-avoid-abi-change-in-4.13.12.patch
debian/alsa-timer-avoid-abi-change-in-4.13.13.patch
debian/netfilter-nat-avoid-abi-change-in-4.13.13.patch