[kernel] r22133 - in dists/sid/linux/debian: . config patches patches/debian
Ben Hutchings
benh at moszumanska.debian.org
Mon Dec 8 01:47:14 UTC 2014
Author: benh
Date: Mon Dec 8 01:47:13 2014
New Revision: 22133
Log:
Fix/ignore various ABI changes
Added:
dists/sid/linux/debian/patches/debian/iovec-fix-abi-change-in-3.16.7-ckt1.patch
dists/sid/linux/debian/patches/debian/of-fix-abi-changes.patch
dists/sid/linux/debian/patches/debian/perf-fix-abi-change-in-3.16.7-ckt2.patch
dists/sid/linux/debian/patches/debian/truncate-fix-abi-change-in-3.16.7-ckt1.patch
Modified:
dists/sid/linux/debian/changelog
dists/sid/linux/debian/config/defines
dists/sid/linux/debian/patches/series
Modified: dists/sid/linux/debian/changelog
==============================================================================
--- dists/sid/linux/debian/changelog Mon Dec 8 00:51:43 2014 (r22132)
+++ dists/sid/linux/debian/changelog Mon Dec 8 01:47:13 2014 (r22133)
@@ -245,6 +245,8 @@
* [amd64] traps: Stop using IST for #SS (CVE-2014-9090)
* [amd64] traps: Fix the espfix64 #DF fixup and rewrite it in C
* [amd64] traps: Rework bad_iret
+ * Fix ABI changes in iovec, of, perf and truncate
+ * Ignore ABI changes in iwlwifi, KVM and spi-nor
[ Ian Campbell ]
* [xen] Backport various netback fixes (Closes: #767261).
Modified: dists/sid/linux/debian/config/defines
==============================================================================
--- dists/sid/linux/debian/config/defines Mon Dec 8 00:51:43 2014 (r22132)
+++ dists/sid/linux/debian/config/defines Mon Dec 8 01:47:13 2014 (r22133)
@@ -1,5 +1,9 @@
[abi]
abiname: 4
+ignore-changes:
+ module:arch/x86/kvm/kvm
+ module:drivers/mtd/spi-nor/spi-nor
+ module:drivers/net/wireless/iwlwifi/iwlwifi
[base]
arches:
Added: dists/sid/linux/debian/patches/debian/iovec-fix-abi-change-in-3.16.7-ckt1.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/debian/iovec-fix-abi-change-in-3.16.7-ckt1.patch Mon Dec 8 01:47:13 2014 (r22133)
@@ -0,0 +1,58 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 08 Dec 2014 01:22:04 +0000
+Subject: iovec: Fix ABI change in 3.16.7-ckt1
+Forwarded: not-needed
+
+The combination of 'switch iov_iter_get_pages() to passing maximal
+number of pages' and 'fuse: honour max_read and max_write in direct_io
+mode' adds a new parameter to iov_iter_get_pages().
+
+I don't think it's very likely to be used OOT, but just in case it is:
+- Rename the new version to iov_iter_get_pages_fixed()
+- Define and export iov_iter_get_pages() with the old parameters
+ for ABI compatibility
+- Define iov_iter_get_pages as a macro alias for iov_iter_get_pages_fixed
+
+--- a/include/linux/uio.h
++++ b/include/linux/uio.h
+@@ -84,7 +84,10 @@ unsigned long iov_iter_alignment(const s
+ void iov_iter_init(struct iov_iter *i, int direction, const struct iovec *iov,
+ unsigned long nr_segs, size_t count);
+ ssize_t iov_iter_get_pages(struct iov_iter *i, struct page **pages,
++ size_t maxsize, size_t *start);
++ssize_t iov_iter_get_pages_fixed(struct iov_iter *i, struct page **pages,
+ size_t maxsize, unsigned maxpages, size_t *start);
++#define iov_iter_get_pages iov_iter_get_pages_fixed
+ ssize_t iov_iter_get_pages_alloc(struct iov_iter *i, struct page ***pages,
+ size_t maxsize, size_t *start);
+ int iov_iter_npages(const struct iov_iter *i, int maxpages);
+--- a/mm/iov_iter.c
++++ b/mm/iov_iter.c
+@@ -714,7 +714,8 @@ unsigned long iov_iter_alignment(const s
+ }
+ EXPORT_SYMBOL(iov_iter_alignment);
+
+-ssize_t iov_iter_get_pages(struct iov_iter *i,
++/* Called as iov_iter_get_pages() */
++ssize_t iov_iter_get_pages_fixed(struct iov_iter *i,
+ struct page **pages, size_t maxsize, unsigned maxpages,
+ size_t *start)
+ {
+@@ -723,6 +724,17 @@ ssize_t iov_iter_get_pages(struct iov_it
+ else
+ return get_pages_iovec(i, pages, maxsize, maxpages, start);
+ }
++EXPORT_SYMBOL(iov_iter_get_pages_fixed);
++
++/* ABI compatibility wrapper */
++#undef iov_iter_get_pages
++ssize_t iov_iter_get_pages(struct iov_iter *i,
++ struct page **pages, size_t maxsize,
++ size_t *start)
++{
++ return iov_iter_get_pages_fixed(i, pages, maxsize, maxsize / PAGE_SIZE,
++ start);
++}
+ EXPORT_SYMBOL(iov_iter_get_pages);
+
+ ssize_t iov_iter_get_pages_alloc(struct iov_iter *i,
Added: dists/sid/linux/debian/patches/debian/of-fix-abi-changes.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/debian/of-fix-abi-changes.patch Mon Dec 8 01:47:13 2014 (r22133)
@@ -0,0 +1,179 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 08 Dec 2014 01:10:36 +0000
+Subject: of: Fix ABI changes
+Forwarded: not-needed
+
+'of: Fix overflow bug in string property parsing functions'
+(included in 3.16.7-ckt2) and 'of: add optional options parameter to
+of_find_node_by_path()' (cherry-picked to support console selection)
+changed various exported functions into inline wrappers. Change the
+wrappers to exported extern functions, to maintain the ABI.
+
+--- a/drivers/of/base.c
++++ b/drivers/of/base.c
+@@ -882,6 +882,12 @@ struct device_node *of_find_node_opts_by
+ }
+ EXPORT_SYMBOL(of_find_node_opts_by_path);
+
++struct device_node *of_find_node_by_path(const char *path)
++{
++ return of_find_node_opts_by_path(path, NULL);
++}
++EXPORT_SYMBOL(of_find_node_by_path);
++
+ /**
+ * of_find_node_by_name - Find a node by its "name" property
+ * @from: The node to start searching from or NULL, the node
+@@ -1460,6 +1466,52 @@ int of_property_read_string_helper(struc
+ }
+ EXPORT_SYMBOL_GPL(of_property_read_string_helper);
+
++/**
++ * of_property_count_strings() - Find and return the number of strings from a
++ * multiple strings property.
++ * @np: device node from which the property value is to be read.
++ * @propname: name of the property to be searched.
++ *
++ * Search for a property in a device tree node and retrieve the number of null
++ * terminated string contain in it. Returns the number of strings on
++ * success, -EINVAL if the property does not exist, -ENODATA if property
++ * does not have a value, and -EILSEQ if the string is not null-terminated
++ * within the length of the property data.
++ */
++static inline int of_property_count_strings(struct device_node *np,
++ const char *propname)
++{
++ return of_property_read_string_helper(np, propname, NULL, 0, 0);
++}
++EXPORT_SYMBOL_GPL(of_property_count_strings);
++
++/**
++ * of_property_read_string_index() - Find and read a string from a multiple
++ * strings property.
++ * @np: device node from which the property value is to be read.
++ * @propname: name of the property to be searched.
++ * @index: index of the string in the list of strings
++ * @out_string: pointer to null terminated return string, modified only if
++ * return value is 0.
++ *
++ * Search for a property in a device tree node and retrieve a null
++ * terminated string value (pointer to data, not a copy) in the list of strings
++ * contained in that property.
++ * Returns 0 on success, -EINVAL if the property does not exist, -ENODATA if
++ * property does not have a value, and -EILSEQ if the string is not
++ * null-terminated within the length of the property data.
++ *
++ * The out_string pointer is modified only if a valid string can be decoded.
++ */
++int of_property_read_string_index(struct device_node *np,
++ const char *propname,
++ int index, const char **output)
++{
++ int rc = of_property_read_string_helper(np, propname, output, 1, index);
++ return rc < 0 ? rc : 0;
++}
++EXPORT_SYMBOL_GPL(of_property_read_string_index);
++
+ void of_print_phandle_args(const char *msg, const struct of_phandle_args *args)
+ {
+ int i;
+--- a/include/linux/of.h
++++ b/include/linux/of.h
+@@ -230,10 +230,7 @@ extern struct device_node *of_find_match
+
+ extern struct device_node *of_find_node_opts_by_path(const char *path,
+ const char **opts);
+-static inline struct device_node *of_find_node_by_path(const char *path)
+-{
+- return of_find_node_opts_by_path(path, NULL);
+-}
++extern struct device_node *of_find_node_by_path(const char *path);
+
+ extern struct device_node *of_find_node_by_phandle(phandle handle);
+ extern struct device_node *of_get_parent(const struct device_node *node);
+@@ -273,9 +270,14 @@ extern int of_property_read_u64(const st
+ extern int of_property_read_string(struct device_node *np,
+ const char *propname,
+ const char **out_string);
++extern int of_property_read_string_index(struct device_node *np,
++ const char *propname,
++ int index, const char **output);
+ extern int of_property_match_string(struct device_node *np,
+ const char *propname,
+ const char *string);
++extern int of_property_count_strings(struct device_node *np,
++ const char *propname);
+ extern int of_property_read_string_helper(struct device_node *np,
+ const char *propname,
+ const char **out_strs, size_t sz, int index);
+@@ -495,6 +497,19 @@ static inline int of_property_read_strin
+ return -ENOSYS;
+ }
+
++static inline int of_property_read_string_index(struct device_node *np,
++ const char *propname, int index,
++ const char **out_string)
++{
++ return -ENOSYS;
++}
++
++static inline int of_property_count_strings(struct device_node *np,
++ const char *propname)
++{
++ return -ENOSYS;
++}
++
+ static inline int of_property_read_string_helper(struct device_node *np,
+ const char *propname,
+ const char **out_strs, size_t sz, int index)
+@@ -691,50 +706,6 @@ static inline int of_property_read_strin
+ }
+
+ /**
+- * of_property_count_strings() - Find and return the number of strings from a
+- * multiple strings property.
+- * @np: device node from which the property value is to be read.
+- * @propname: name of the property to be searched.
+- *
+- * Search for a property in a device tree node and retrieve the number of null
+- * terminated string contain in it. Returns the number of strings on
+- * success, -EINVAL if the property does not exist, -ENODATA if property
+- * does not have a value, and -EILSEQ if the string is not null-terminated
+- * within the length of the property data.
+- */
+-static inline int of_property_count_strings(struct device_node *np,
+- const char *propname)
+-{
+- return of_property_read_string_helper(np, propname, NULL, 0, 0);
+-}
+-
+-/**
+- * of_property_read_string_index() - Find and read a string from a multiple
+- * strings property.
+- * @np: device node from which the property value is to be read.
+- * @propname: name of the property to be searched.
+- * @index: index of the string in the list of strings
+- * @out_string: pointer to null terminated return string, modified only if
+- * return value is 0.
+- *
+- * Search for a property in a device tree node and retrieve a null
+- * terminated string value (pointer to data, not a copy) in the list of strings
+- * contained in that property.
+- * Returns 0 on success, -EINVAL if the property does not exist, -ENODATA if
+- * property does not have a value, and -EILSEQ if the string is not
+- * null-terminated within the length of the property data.
+- *
+- * The out_string pointer is modified only if a valid string can be decoded.
+- */
+-static inline int of_property_read_string_index(struct device_node *np,
+- const char *propname,
+- int index, const char **output)
+-{
+- int rc = of_property_read_string_helper(np, propname, output, 1, index);
+- return rc < 0 ? rc : 0;
+-}
+-
+-/**
+ * of_property_read_bool - Findfrom a property
+ * @np: device node from which the property value is to be read.
+ * @propname: name of the property to be searched.
Added: dists/sid/linux/debian/patches/debian/perf-fix-abi-change-in-3.16.7-ckt2.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/debian/perf-fix-abi-change-in-3.16.7-ckt2.patch Mon Dec 8 01:47:13 2014 (r22133)
@@ -0,0 +1,20 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 08 Dec 2014 01:39:31 +0000
+Subject: perf: Fix ABI change in 3.16.7-ckt2
+Forwarded: not-needed
+
+Hide the new #include from genksyms.
+
+
+--- a/kernel/events/core.c
++++ b/kernel/events/core.c
+@@ -41,7 +41,9 @@
+ #include <linux/cgroup.h>
+ #include <linux/module.h>
+ #include <linux/mman.h>
++#ifndef __GENKSYMS__
+ #include <linux/compat.h>
++#endif
+
+ #include "internal.h"
+
Added: dists/sid/linux/debian/patches/debian/truncate-fix-abi-change-in-3.16.7-ckt1.patch
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ dists/sid/linux/debian/patches/debian/truncate-fix-abi-change-in-3.16.7-ckt1.patch Mon Dec 8 01:47:13 2014 (r22133)
@@ -0,0 +1,19 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 08 Dec 2014 01:34:44 +0000
+Subject: truncate: Fix ABI change in 3.16.7-ckt1
+Forwarded: not-needed
+
+Hide the new #include from genksyms.
+
+--- a/mm/truncate.c
++++ b/mm/truncate.c
+@@ -20,7 +20,9 @@
+ #include <linux/buffer_head.h> /* grr. try_to_release_page,
+ do_invalidatepage */
+ #include <linux/cleancache.h>
++#ifndef __GENKSYMS__
+ #include <linux/rmap.h>
++#endif
+ #include "internal.h"
+
+ static void clear_exceptional_entry(struct address_space *mapping,
Modified: dists/sid/linux/debian/patches/series
==============================================================================
--- dists/sid/linux/debian/patches/series Mon Dec 8 00:51:43 2014 (r22132)
+++ dists/sid/linux/debian/patches/series Mon Dec 8 01:47:13 2014 (r22133)
@@ -476,3 +476,7 @@
bugfix/x86/x86_64-traps-Stop-using-IST-for-SS.patch
bugfix/x86/x86_64-traps-Fix-the-espfix64-DF-fixup-and-rewrite-i.patch
bugfix/x86/x86_64-traps-Rework-bad_iret.patch
+debian/of-fix-abi-changes.patch
+debian/iovec-fix-abi-change-in-3.16.7-ckt1.patch
+debian/truncate-fix-abi-change-in-3.16.7-ckt1.patch
+debian/perf-fix-abi-change-in-3.16.7-ckt2.patch
More information about the Kernel-svn-changes
mailing list