[linux] 01/02: Fix/ignore module ABI changes in 4.4.4 as appropriate

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Sun Mar 6 03:30:59 UTC 2016


This is an automated email from the git hooks/post-receive script.

benh pushed a commit to branch sid
in repository linux.

commit ab1abc27cc964fac3b2e5f4523ce78a5230d9f66
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Sun Mar 6 01:38:45 2016 +0000

    Fix/ignore module ABI changes in 4.4.4 as appropriate
---
 debian/changelog                                   |  1 +
 debian/config/defines                              |  9 +++
 .../debian/ipv4-fix-abi-change-in-4.4.4.patch      | 22 ++++++
 .../debian/ipv6-fix-abi-change-in-4.4.4.patch      | 43 ++++++++++++
 ...oup-make-sure-a-parent-css-isn-t-offlined.patch | 79 ++++++++++++++++++++++
 .../debian/thermal-fix-abi-change-in-4.4.4.patch   | 45 ++++++++++++
 debian/patches/series                              |  4 ++
 7 files changed, 203 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index b846979..722f88b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -442,6 +442,7 @@ linux (4.4.4-1) UNRELEASED; urgency=medium
     - mmc-modules: Depends on usb-modules
     - usb-modules: Include USB PHY drivers by default
   * uas: Fix high-order alloc
+  * Fix/ignore module ABI changes in 4.4.4 as appropriate
 
   [ Ian Campbell ]
   * [armhf] dts: Add DTB for Novena, patches from Vagrant Cascadian
diff --git a/debian/config/defines b/debian/config/defines
index bad6b65..c9eb922 100644
--- a/debian/config/defines
+++ b/debian/config/defines
@@ -6,6 +6,15 @@ ignore-changes:
  __scm_send
  scm_detach_fds
  scm_fp_dup
+ efivar_validate
+ get_thermal_instance
+ inet_csk_reqsk_queue_add
+ tcp_req_err
+ module:drivers/gpu/drm/drm_kms_helper
+ module:drivers/hv/hv_vmbus
+ module:drivers/md/dm-snapshot
+ module:drivers/mmc/host/sdhci
+ module:net/ceph/libceph
 
 [base]
 arches:
diff --git a/debian/patches/debian/ipv4-fix-abi-change-in-4.4.4.patch b/debian/patches/debian/ipv4-fix-abi-change-in-4.4.4.patch
new file mode 100644
index 0000000..22c4e56
--- /dev/null
+++ b/debian/patches/debian/ipv4-fix-abi-change-in-4.4.4.patch
@@ -0,0 +1,22 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sun, 06 Mar 2016 01:14:29 +0000
+Subject: ipv4: Fix ABI change in 4.4.4
+Forwarded: not-needed
+
+struct fib_nh_exception is always allocated and used in the ipv4 core,
+which is built-in.  As the new field is at the end of the structure,
+all we need to do is hide it from genksyms.
+
+---
+--- a/include/net/ip_fib.h
++++ b/include/net/ip_fib.h
+@@ -61,7 +61,9 @@ struct fib_nh_exception {
+ 	struct rtable __rcu		*fnhe_rth_input;
+ 	struct rtable __rcu		*fnhe_rth_output;
+ 	unsigned long			fnhe_stamp;
++#ifndef __GENKSYMS__
+ 	struct rcu_head			rcu;
++#endif
+ };
+ 
+ struct fnhe_hash_bucket {
diff --git a/debian/patches/debian/ipv6-fix-abi-change-in-4.4.4.patch b/debian/patches/debian/ipv6-fix-abi-change-in-4.4.4.patch
new file mode 100644
index 0000000..549de83
--- /dev/null
+++ b/debian/patches/debian/ipv6-fix-abi-change-in-4.4.4.patch
@@ -0,0 +1,43 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sun, 06 Mar 2016 01:31:13 +0000
+Subject: ipv6: Fix ABI change in 4.4.4
+Forwarded: not-needed
+
+Change ip6_route_output() back from a static inline wrapper to a proper
+extern and exported function.
+
+---
+--- a/include/net/ip6_route.h
++++ b/include/net/ip6_route.h
+@@ -66,13 +66,8 @@ void ip6_route_input(struct sk_buff *skb
+ 
+ struct dst_entry *ip6_route_output_flags(struct net *net, const struct sock *sk,
+ 					 struct flowi6 *fl6, int flags);
+-
+-static inline struct dst_entry *ip6_route_output(struct net *net,
+-						 const struct sock *sk,
+-						 struct flowi6 *fl6)
+-{
+-	return ip6_route_output_flags(net, sk, fl6, 0);
+-}
++struct dst_entry *ip6_route_output(struct net *net, const struct sock *sk,
++				   struct flowi6 *fl6);
+ 
+ struct dst_entry *ip6_route_lookup(struct net *net, struct flowi6 *fl6,
+ 				   int flags);
+--- a/net/ipv6/route.c
++++ b/net/ipv6/route.c
+@@ -1200,6 +1200,13 @@ struct dst_entry *ip6_route_output_flags
+ }
+ EXPORT_SYMBOL_GPL(ip6_route_output_flags);
+ 
++struct dst_entry *ip6_route_output(struct net *net, const struct sock *sk,
++				   struct flowi6 *fl6)
++{
++	return ip6_route_output_flags(net, sk, fl6, 0);
++}
++EXPORT_SYMBOL(ip6_route_output);
++
+ struct dst_entry *ip6_blackhole_route(struct net *net, struct dst_entry *dst_orig)
+ {
+ 	struct rt6_info *rt, *ort = (struct rt6_info *) dst_orig;
diff --git a/debian/patches/debian/revert-cgroup-make-sure-a-parent-css-isn-t-offlined.patch b/debian/patches/debian/revert-cgroup-make-sure-a-parent-css-isn-t-offlined.patch
new file mode 100644
index 0000000..8e58bf6
--- /dev/null
+++ b/debian/patches/debian/revert-cgroup-make-sure-a-parent-css-isn-t-offlined.patch
@@ -0,0 +1,79 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sat, 05 Mar 2016 23:22:10 +0000
+Subject: Revert "cgroup: make sure a parent css isn't offlined before its children"
+Forwarded: not-needed
+
+This reverts commit 4cbd196324c05809338c7f118b6f374d3c2db7a0, which
+was commit aa226ff4a1ce79f229c6b7a4c0a14e17fececd01 upstream.  It
+seems to be a good fix but causes an unfixable ABI change as it
+extends a structure that's embedded in other structures.
+
+---
+--- a/include/linux/cgroup-defs.h
++++ b/include/linux/cgroup-defs.h
+@@ -133,12 +133,6 @@ struct cgroup_subsys_state {
+ 	 */
+ 	u64 serial_nr;
+ 
+-	/*
+-	 * Incremented by online self and children.  Used to guarantee that
+-	 * parents are not offlined before their children.
+-	 */
+-	atomic_t online_cnt;
+-
+ 	/* percpu_ref killing and RCU release */
+ 	struct rcu_head rcu_head;
+ 	struct work_struct destroy_work;
+--- a/kernel/cgroup.c
++++ b/kernel/cgroup.c
+@@ -4784,7 +4784,6 @@ static void init_and_link_css(struct cgr
+ 	INIT_LIST_HEAD(&css->sibling);
+ 	INIT_LIST_HEAD(&css->children);
+ 	css->serial_nr = css_serial_nr_next++;
+-	atomic_set(&css->online_cnt, 0);
+ 
+ 	if (cgroup_parent(cgrp)) {
+ 		css->parent = cgroup_css(cgroup_parent(cgrp), ss);
+@@ -4807,10 +4806,6 @@ static int online_css(struct cgroup_subs
+ 	if (!ret) {
+ 		css->flags |= CSS_ONLINE;
+ 		rcu_assign_pointer(css->cgroup->subsys[ss->id], css);
+-
+-		atomic_inc(&css->online_cnt);
+-		if (css->parent)
+-			atomic_inc(&css->parent->online_cnt);
+ 	}
+ 	return ret;
+ }
+@@ -5042,15 +5037,10 @@ static void css_killed_work_fn(struct wo
+ 		container_of(work, struct cgroup_subsys_state, destroy_work);
+ 
+ 	mutex_lock(&cgroup_mutex);
+-
+-	do {
+-		offline_css(css);
+-		css_put(css);
+-		/* @css can't go away while we're holding cgroup_mutex */
+-		css = css->parent;
+-	} while (css && atomic_dec_and_test(&css->online_cnt));
+-
++	offline_css(css);
+ 	mutex_unlock(&cgroup_mutex);
++
++	css_put(css);
+ }
+ 
+ /* css kill confirmation processing requires process context, bounce */
+@@ -5059,10 +5049,8 @@ static void css_killed_ref_fn(struct per
+ 	struct cgroup_subsys_state *css =
+ 		container_of(ref, struct cgroup_subsys_state, refcnt);
+ 
+-	if (atomic_dec_and_test(&css->online_cnt)) {
+-		INIT_WORK(&css->destroy_work, css_killed_work_fn);
+-		queue_work(cgroup_destroy_wq, &css->destroy_work);
+-	}
++	INIT_WORK(&css->destroy_work, css_killed_work_fn);
++	queue_work(cgroup_destroy_wq, &css->destroy_work);
+ }
+ 
+ /**
diff --git a/debian/patches/debian/thermal-fix-abi-change-in-4.4.4.patch b/debian/patches/debian/thermal-fix-abi-change-in-4.4.4.patch
new file mode 100644
index 0000000..6d4740f
--- /dev/null
+++ b/debian/patches/debian/thermal-fix-abi-change-in-4.4.4.patch
@@ -0,0 +1,45 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Sun, 06 Mar 2016 00:40:31 +0000
+Subject: thermal: Fix ABI change in 4.4.4
+Forwarded: not-needed
+
+struct thermal_zone_device is always allocated in thermal_core and the
+new field is only used there.  So we can safely move it to the end of the
+structure and hide it from genksyms.
+
+Also hide the new #include, as if it could make an actual difference,
+stupid genksyms...
+
+---
+--- a/include/linux/thermal.h
++++ b/include/linux/thermal.h
+@@ -198,7 +198,6 @@ struct thermal_zone_device {
+ 	int emul_temperature;
+ 	int passive;
+ 	unsigned int forced_passive;
+-	atomic_t need_update;
+ 	struct thermal_zone_device_ops *ops;
+ 	struct thermal_zone_params *tzp;
+ 	struct thermal_governor *governor;
+@@ -208,6 +207,9 @@ struct thermal_zone_device {
+ 	struct mutex lock;
+ 	struct list_head node;
+ 	struct delayed_work poll_queue;
++#ifndef __GENKSYMS__
++	atomic_t need_update;
++#endif
+ };
+ 
+ /**
+--- a/drivers/thermal/thermal_core.c
++++ b/drivers/thermal/thermal_core.c
+@@ -37,7 +37,9 @@
+ #include <linux/of.h>
+ #include <net/netlink.h>
+ #include <net/genetlink.h>
++#ifndef __GENKSYMS__
+ #include <linux/suspend.h>
++#endif
+ 
+ #define CREATE_TRACE_POINTS
+ #include <trace/events/thermal.h>
diff --git a/debian/patches/series b/debian/patches/series
index e8a2d17..1ee0445 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -128,3 +128,7 @@ bugfix/arm/net-mv643xx_eth-fix-packet-corruption-with-tso-and-t.patch
 bugfix/x86/x86-efi-bgrt-fix-kernel-panic-when-mapping-bgrt-data.patch
 bugfix/x86/x86-efi-bgrt-replace-early_memremap-with-memremap.patch
 bugfix/all/uas-fix-high-order-alloc.patch
+debian/revert-cgroup-make-sure-a-parent-css-isn-t-offlined.patch
+debian/thermal-fix-abi-change-in-4.4.4.patch
+debian/ipv4-fix-abi-change-in-4.4.4.patch
+debian/ipv6-fix-abi-change-in-4.4.4.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/kernel/linux.git



More information about the Kernel-svn-changes mailing list