[linux] 03/03: Update to 3.2.81

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Wed Jun 15 21:57:46 UTC 2016


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

benh pushed a commit to branch wheezy-security
in repository linux.

commit e0b5e266b2f68ef02b2a64c66af1ee796adbda0d
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Wed Jun 15 22:54:49 2016 +0100

    Update to 3.2.81
    
    Drop or refresh patches as appropriate.
---
 debian/changelog                                   |  51 ++++++--
 ...idge_filename-handle-malformed-NM-entries.patch |  63 ---------
 ...age-access-is-denied-if-hugepages-are-not.patch | 141 ---------------------
 ...allow-hugepages_supported-to-be-architect.patch |  52 --------
 ...-add-link-layer-header-validation-functio.patch |  40 ------
 ...t-net-validate-variable-length-ll-headers.patch |  55 --------
 ...86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch |  68 ----------
 debian/patches/features/all/drm/drm-3.4.patch      | 141 ++++++++++++++-------
 debian/patches/features/all/xen/microcode.patch    |  50 +++-----
 debian/patches/series                              |   6 -
 10 files changed, 153 insertions(+), 514 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index faaf4a6..17cd9ae 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-linux (3.2.80-1) UNRELEASED; urgency=medium
+linux (3.2.81-1) UNRELEASED; urgency=medium
 
   * New upstream stable update:
     http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.79
@@ -146,6 +146,44 @@ linux (3.2.80-1) UNRELEASED; urgency=medium
     - ipv4: l2tp: fix a potential issue in l2tp_ip_recv
     - ipv6: Count in extension headers in skb->network_header
     - netfilter: x_tables: fix unconditional helper
+    https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.81
+    - [x86] microcode/amd: Do not overwrite final patch levels
+    - crypto: gcm - fix rfc4543 to handle async crypto correctly
+    - crypto: gcm - Fix rfc4543 decryption crash
+    - [x86] Add 1/2/4/8 byte optimization to 64bit
+      __copy_{from,to}_user_inatomic
+    - ipmi: fix timeout calculation when bmc is disconnected
+    - Input: gtco - fix crash on detecting device without endpoints
+      (CVE-2016-2187)
+    - libahci: save port map for forced port map
+    - [x86] kvm: do not leak guest xcr0 into host interrupt handlers
+    - nl80211: check netlink protocol in socket release notification
+    - usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host
+    - usb: xhci: fix wild pointers in xhci_mem_cleanup
+    - USB: uas: Add a new NO_REPORT_LUNS quirk
+    - usb: hcd: out of bounds access in for_each_companion
+    - Input: pmic8xxx-pwrkey - fix algorithm for converting trigger delay
+    - hugetlb: ensure hugepage access is denied if hugepages are not supported
+    - mm: hugetlb: allow hugepages_supported to be architecture specific
+    - [x86] mm/xen: Suppress hugetlbfs in PV guests (CVE-2016-3961)
+    - batman-adv: Check skb size before using encapsulated ETH+VLAN header
+    - batman-adv: Reduce refcnt of removed router when updating route
+    - batman-adv: Fix broadcast/ogm queue limit on a removed interface
+    - IB/security: Restrict use of the write() interface (CVE-2016-4565)
+    - thp: introduce hugepage_vma_check()
+    - mm/huge_memory: replace VM_NO_THP VM_BUG_ON with actual VMA check
+    - [x86] EDAC: i7core, sb_edac: Don't return NOTIFY_BAD from mce_decoder
+      callback
+    - Make hash_64() use a 64-bit multiply when appropriate
+    - Minimal fix-up of bad hashing behavior of hash_64()
+    - ACPICA: Dispatcher: Update thread ID for recursive method calls
+    - crypto: hash - Fix page length clamping in hash walk
+    - proc: prevent accessing /proc/<PID>/environ until it's ready
+    - get_rock_ridge_filename(): handle malformed NM entries (CVE-2016-4913)
+    - nf_conntrack: avoid kernel pointer value leak in slab name
+    - net: fix infoleak in llc (CVE-2016-4485)
+    - net: fix infoleak in rtnetlink (CVE-2016-4486)
+    - net: fix a kernel infoleak in x25 module (CVE-2016-4580)
 
   [ Ben Hutchings ]
   * drm, agp: Update to 3.4.112:
@@ -162,21 +200,14 @@ linux (3.2.80-1) UNRELEASED; urgency=medium
     - kernel: softirq: unlock with irqs on
     - rcu/torture: Comment out rcu_bh ops on PREEMPT_RT_FULL
     - kernel: sched: Fix preempt_disable_ip recodring for preempt_disable()
-  * Revert "net: validate variable length ll headers", "ax25: add link layer
-    header validation function" and "net/ipv6: add sysctl option
-    accept_ra_min_hop_limit" to avoid ABI changes
+  * Revert "net/ipv6: add sysctl option accept_ra_min_hop_limit" to avoid
+    ABI change
   * aufs: Make fcntl(F_SETFL, ...) work (Closes: #627782):
     - for aufs: new f_op->setfl() to support fcntl(F_SETFL)
     - aufs: implement new f_op->setfl()
     - fs: Fix ABI change for aufs F_SETFL fix
-  * hugetlb: ensure hugepage access is denied if hugepages are not supported
-  * mm: hugetlb: allow hugepages_supported to be architecture specific
-  * [x86] mm/xen: Suppress hugetlbfs in PV guests (CVE-2016-3961)
   * stable-update: Rewrite stable-update.sh in Python
 
-  [ Salvatore Bonaccorso ]
-  * get_rock_ridge_filename(): handle malformed NM entries (CVE-2016-4913)
-
  -- Ben Hutchings <ben at decadent.org.uk>  Fri, 01 Apr 2016 02:11:16 +0100
 
 linux (3.2.78-1) wheezy; urgency=medium
diff --git a/debian/patches/bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch b/debian/patches/bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch
deleted file mode 100644
index 063a5a5..0000000
--- a/debian/patches/bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Al Viro <viro at zeniv.linux.org.uk>
-Date: Thu, 5 May 2016 16:25:35 -0400
-Subject: get_rock_ridge_filename(): handle malformed NM entries
-Origin: https://git.kernel.org/linus/99d825822eade8d827a1817357cbf3f889a552d6
-
-Payloads of NM entries are not supposed to contain NUL.  When we run
-into such, only the part prior to the first NUL goes into the
-concatenation (i.e. the directory entry name being encoded by a bunch
-of NM entries).  We do stop when the amount collected so far + the
-claimed amount in the current NM entry exceed 254.  So far, so good,
-but what we return as the total length is the sum of *claimed*
-sizes, not the actual amount collected.  And that can grow pretty
-large - not unlimited, since you'd need to put CE entries in
-between to be able to get more than the maximum that could be
-contained in one isofs directory entry / continuation chunk and
-we are stop once we'd encountered 32 CEs, but you can get about 8Kb
-easily.  And that's what will be passed to readdir callback as the
-name length.  8Kb __copy_to_user() from a buffer allocated by
-__get_free_page()
-
-Cc: stable at vger.kernel.org # 0.98pl6+ (yes, really)
-Signed-off-by: Al Viro <viro at zeniv.linux.org.uk>
----
- fs/isofs/rock.c | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
-index 5384ceb..98b3eb7 100644
---- a/fs/isofs/rock.c
-+++ b/fs/isofs/rock.c
-@@ -203,6 +203,8 @@ int get_rock_ridge_filename(struct iso_directory_record *de,
- 	int retnamlen = 0;
- 	int truncate = 0;
- 	int ret = 0;
-+	char *p;
-+	int len;
- 
- 	if (!ISOFS_SB(inode->i_sb)->s_rock)
- 		return 0;
-@@ -267,12 +269,17 @@ repeat:
- 					rr->u.NM.flags);
- 				break;
- 			}
--			if ((strlen(retname) + rr->len - 5) >= 254) {
-+			len = rr->len - 5;
-+			if (retnamlen + len >= 254) {
- 				truncate = 1;
- 				break;
- 			}
--			strncat(retname, rr->u.NM.name, rr->len - 5);
--			retnamlen += rr->len - 5;
-+			p = memchr(rr->u.NM.name, '\0', len);
-+			if (unlikely(p))
-+				len = p - rr->u.NM.name;
-+			memcpy(retname + retnamlen, rr->u.NM.name, len);
-+			retnamlen += len;
-+			retname[retnamlen] = '\0';
- 			break;
- 		case SIG('R', 'E'):
- 			kfree(rs.buffer);
--- 
-2.8.1
-
diff --git a/debian/patches/bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch b/debian/patches/bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch
deleted file mode 100644
index 19b360b..0000000
--- a/debian/patches/bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch
+++ /dev/null
@@ -1,141 +0,0 @@
-From: Nishanth Aravamudan <nacc at linux.vnet.ibm.com>
-Date: Tue, 6 May 2014 12:50:00 -0700
-Subject: hugetlb: ensure hugepage access is denied if hugepages are not
- supported
-
-commit 457c1b27ed56ec472d202731b12417bff023594a upstream.
-
-Currently, I am seeing the following when I `mount -t hugetlbfs /none
-/dev/hugetlbfs`, and then simply do a `ls /dev/hugetlbfs`.  I think it's
-related to the fact that hugetlbfs is properly not correctly setting
-itself up in this state?:
-
-  Unable to handle kernel paging request for data at address 0x00000031
-  Faulting instruction address: 0xc000000000245710
-  Oops: Kernel access of bad area, sig: 11 [#1]
-  SMP NR_CPUS=2048 NUMA pSeries
-  ....
-
-In KVM guests on Power, in a guest not backed by hugepages, we see the
-following:
-
-  AnonHugePages:         0 kB
-  HugePages_Total:       0
-  HugePages_Free:        0
-  HugePages_Rsvd:        0
-  HugePages_Surp:        0
-  Hugepagesize:         64 kB
-
-HPAGE_SHIFT == 0 in this configuration, which indicates that hugepages
-are not supported at boot-time, but this is only checked in
-hugetlb_init().  Extract the check to a helper function, and use it in a
-few relevant places.
-
-This does make hugetlbfs not supported (not registered at all) in this
-environment.  I believe this is fine, as there are no valid hugepages
-and that won't change at runtime.
-
-[akpm at linux-foundation.org: use pr_info(), per Mel]
-[akpm at linux-foundation.org: fix build when HPAGE_SHIFT is undefined]
-Signed-off-by: Nishanth Aravamudan <nacc at linux.vnet.ibm.com>
-Reviewed-by: Aneesh Kumar K.V <aneesh.kumar at linux.vnet.ibm.com>
-Acked-by: Mel Gorman <mgorman at suse.de>
-Cc: Randy Dunlap <rdunlap at infradead.org>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-[bwh: Backported to 3.2:
- - Drop changes to hugetlb_show_meminfo()
- - Adjust context]
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- fs/hugetlbfs/inode.c    |  5 +++++
- include/linux/hugetlb.h | 10 ++++++++++
- mm/hugetlb.c            | 19 ++++++++++++++-----
- 3 files changed, 29 insertions(+), 5 deletions(-)
-
---- a/fs/hugetlbfs/inode.c
-+++ b/fs/hugetlbfs/inode.c
-@@ -979,6 +979,11 @@ static int __init init_hugetlbfs_fs(void
- 	int error;
- 	struct vfsmount *vfsmount;
- 
-+	if (!hugepages_supported()) {
-+		pr_info("hugetlbfs: disabling because there are no supported hugepage sizes\n");
-+		return -ENOTSUPP;
-+	}
-+
- 	error = bdi_init(&hugetlbfs_backing_dev_info);
- 	if (error)
- 		return error;
---- a/include/linux/hugetlb.h
-+++ b/include/linux/hugetlb.h
-@@ -344,6 +344,16 @@ static inline pgoff_t basepage_index(str
- 	return __basepage_index(page);
- }
- 
-+static inline bool hugepages_supported(void)
-+{
-+	/*
-+	 * Some platform decide whether they support huge pages at boot
-+	 * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
-+	 * there is no such support
-+	 */
-+	return HPAGE_SHIFT != 0;
-+}
-+
- #else
- struct hstate {};
- #define alloc_huge_page_node(h, nid) NULL
---- a/mm/hugetlb.c
-+++ b/mm/hugetlb.c
-@@ -1889,11 +1889,7 @@ module_exit(hugetlb_exit);
- 
- static int __init hugetlb_init(void)
- {
--	/* Some platform decide whether they support huge pages at boot
--	 * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
--	 * there is no such support
--	 */
--	if (HPAGE_SHIFT == 0)
-+	if (!hugepages_supported())
- 		return 0;
- 
- 	if (!size_to_hstate(default_hstate_size)) {
-@@ -2010,6 +2006,9 @@ static int hugetlb_sysctl_handler_common
- 	unsigned long tmp;
- 	int ret;
- 
-+	if (!hugepages_supported())
-+		return -ENOTSUPP;
-+
- 	tmp = h->max_huge_pages;
- 
- 	if (write && h->order >= MAX_ORDER)
-@@ -2075,6 +2074,9 @@ int hugetlb_overcommit_handler(struct ct
- 	unsigned long tmp;
- 	int ret;
- 
-+	if (!hugepages_supported())
-+		return -ENOTSUPP;
-+
- 	tmp = h->nr_overcommit_huge_pages;
- 
- 	if (write && h->order >= MAX_ORDER)
-@@ -2100,6 +2102,8 @@ out:
- void hugetlb_report_meminfo(struct seq_file *m)
- {
- 	struct hstate *h = &default_hstate;
-+	if (!hugepages_supported())
-+		return;
- 	seq_printf(m,
- 			"HugePages_Total:   %5lu\n"
- 			"HugePages_Free:    %5lu\n"
-@@ -2116,6 +2120,8 @@ void hugetlb_report_meminfo(struct seq_f
- int hugetlb_report_node_meminfo(int nid, char *buf)
- {
- 	struct hstate *h = &default_hstate;
-+	if (!hugepages_supported())
-+		return 0;
- 	return sprintf(buf,
- 		"Node %d HugePages_Total: %5u\n"
- 		"Node %d HugePages_Free:  %5u\n"
diff --git a/debian/patches/bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch b/debian/patches/bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch
deleted file mode 100644
index d00d0ec..0000000
--- a/debian/patches/bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From: Dominik Dingel <dingel at linux.vnet.ibm.com>
-Date: Fri, 17 Jul 2015 16:23:37 -0700
-Subject: mm: hugetlb: allow hugepages_supported to be architecture specific
-
-commit 2531c8cf56a640cd7d17057df8484e570716a450 upstream.
-
-s390 has a constant hugepage size, by setting HPAGE_SHIFT we also change
-e.g. the pageblock_order, which should be independent in respect to
-hugepage support.
-
-With this patch every architecture is free to define how to check
-for hugepage support.
-
-Signed-off-by: Dominik Dingel <dingel at linux.vnet.ibm.com>
-Acked-by: Martin Schwidefsky <schwidefsky at de.ibm.com>
-Cc: Heiko Carstens <heiko.carstens at de.ibm.com>
-Cc: Christian Borntraeger <borntraeger at de.ibm.com>
-Cc: Michael Holzheu <holzheu at linux.vnet.ibm.com>
-Cc: Gerald Schaefer <gerald.schaefer at de.ibm.com>
-Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- include/linux/hugetlb.h | 17 ++++++++---------
- 1 file changed, 8 insertions(+), 9 deletions(-)
-
---- a/include/linux/hugetlb.h
-+++ b/include/linux/hugetlb.h
-@@ -344,15 +344,14 @@ static inline pgoff_t basepage_index(str
- 	return __basepage_index(page);
- }
- 
--static inline bool hugepages_supported(void)
--{
--	/*
--	 * Some platform decide whether they support huge pages at boot
--	 * time. On these, such as powerpc, HPAGE_SHIFT is set to 0 when
--	 * there is no such support
--	 */
--	return HPAGE_SHIFT != 0;
--}
-+#ifndef hugepages_supported
-+/*
-+ * Some platform decide whether they support huge pages at boot
-+ * time. Some of them, such as powerpc, set HPAGE_SHIFT to 0
-+ * when there is no such support
-+ */
-+#define hugepages_supported() (HPAGE_SHIFT != 0)
-+#endif
- 
- #else
- struct hstate {};
diff --git a/debian/patches/bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch b/debian/patches/bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch
deleted file mode 100644
index 672d497..0000000
--- a/debian/patches/bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 1 May 2016 17:59:44 +0200
-Subject: Revert "ax25: add link layer header validation function"
-
-This reverts commit 0954b59d9f4b2dcc59f28d1f64c3a21062a64372, which was
-commit ea47781c26510e5d97f80f9aceafe9065bd5e3aa upstream.  It is
-pointless unless af_packet calls the new function.
----
- net/ax25/ax25_ip.c | 15 ---------------
- 1 file changed, 15 deletions(-)
-
-diff --git a/net/ax25/ax25_ip.c b/net/ax25/ax25_ip.c
-index a0c9956b5b23..cf0c47a26530 100644
---- a/net/ax25/ax25_ip.c
-+++ b/net/ax25/ax25_ip.c
-@@ -232,24 +232,9 @@ int ax25_rebuild_header(struct sk_buff *skb)
- 
- #endif
- 
--static bool ax25_validate_header(const char *header, unsigned int len)
--{
--	ax25_digi digi;
--
--	if (!len)
--		return false;
--
--	if (header[0])
--		return true;
--
--	return ax25_addr_parse(header + 1, len - 1, NULL, NULL, &digi, NULL,
--			       NULL);
--}
--
- const struct header_ops ax25_header_ops = {
- 	.create = ax25_hard_header,
- 	.rebuild = ax25_rebuild_header,
--	.validate = ax25_validate_header,
- };
- 
- EXPORT_SYMBOL(ax25_hard_header);
diff --git a/debian/patches/bugfix/all/revert-net-validate-variable-length-ll-headers.patch b/debian/patches/bugfix/all/revert-net-validate-variable-length-ll-headers.patch
deleted file mode 100644
index 728a2b9..0000000
--- a/debian/patches/bugfix/all/revert-net-validate-variable-length-ll-headers.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 1 May 2016 18:00:43 +0200
-Subject: Revert "net: validate variable length ll headers"
-
-This reverts commit b5518429e70cd783b8ca52335456172c1a0589f6, which was
-commit 2793a23aacbd754dbbb5cb75093deb7e4103bace upstream.  It is
-pointless unless af_packet calls the new function.
----
- include/linux/netdevice.h | 21 +--------------------
- 1 file changed, 1 insertion(+), 20 deletions(-)
-
---- a/include/linux/netdevice.h
-+++ b/include/linux/netdevice.h
-@@ -296,7 +296,6 @@ struct header_ops {
- 	void	(*cache_update)(struct hh_cache *hh,
- 				const struct net_device *dev,
- 				const unsigned char *haddr);
--	bool	(*validate)(const char *ll_header, unsigned int len);
- };
- 
- /* These flag bits are private to the generic network queueing
-@@ -1146,7 +1145,7 @@ struct net_device {
- 
- 	unsigned int		mtu;	/* interface MTU value		*/
- 	unsigned short		type;	/* interface hardware type	*/
--	unsigned short		hard_header_len; /* maximum hardware hdr length	*/
-+	unsigned short		hard_header_len;	/* hardware hdr length	*/
- 
- 	/* extra head- and tailroom the hardware may need, but not in all cases
- 	 * can this be guaranteed, especially tailroom. Some cases also use
-@@ -1757,24 +1756,6 @@ static inline int dev_rebuild_header(str
- 	return dev->header_ops->rebuild(skb);
- }
- 
--/* ll_header must have at least hard_header_len allocated */
--static inline bool dev_validate_header(const struct net_device *dev,
--				       char *ll_header, int len)
--{
--	if (likely(len >= dev->hard_header_len))
--		return true;
--
--	if (capable(CAP_SYS_RAWIO)) {
--		memset(ll_header + len, 0, dev->hard_header_len - len);
--		return true;
--	}
--
--	if (dev->header_ops && dev->header_ops->validate)
--		return dev->header_ops->validate(ll_header, len);
--
--	return false;
--}
--
- typedef int gifconf_func_t(struct net_device * dev, char __user * bufptr, int len);
- extern int		register_gifconf(unsigned int family, gifconf_func_t * gifconf);
- static inline int unregister_gifconf(unsigned int family)
diff --git a/debian/patches/bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch b/debian/patches/bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch
deleted file mode 100644
index 69763f3..0000000
--- a/debian/patches/bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From: Jan Beulich <JBeulich at suse.com>
-Date: Thu, 21 Apr 2016 00:27:04 -0600
-Subject: x86/mm/xen: Suppress hugetlbfs in PV guests
-
-commit 103f6112f253017d7062cd74d17f4a514ed4485c upstream.
-
-Huge pages are not normally available to PV guests. Not suppressing
-hugetlbfs use results in an endless loop of page faults when user mode
-code tries to access a hugetlbfs mapped area (since the hypervisor
-denies such PTEs to be created, but error indications can't be
-propagated out of xen_set_pte_at(), just like for various of its
-siblings), and - once killed in an oops like this:
-
-  kernel BUG at .../fs/hugetlbfs/inode.c:428!
-  invalid opcode: 0000 [#1] SMP
-  ...
-  RIP: e030:[<ffffffff811c333b>]  [<ffffffff811c333b>] remove_inode_hugepages+0x25b/0x320
-  ...
-  Call Trace:
-   [<ffffffff811c3415>] hugetlbfs_evict_inode+0x15/0x40
-   [<ffffffff81167b3d>] evict+0xbd/0x1b0
-   [<ffffffff8116514a>] __dentry_kill+0x19a/0x1f0
-   [<ffffffff81165b0e>] dput+0x1fe/0x220
-   [<ffffffff81150535>] __fput+0x155/0x200
-   [<ffffffff81079fc0>] task_work_run+0x60/0xa0
-   [<ffffffff81063510>] do_exit+0x160/0x400
-   [<ffffffff810637eb>] do_group_exit+0x3b/0xa0
-   [<ffffffff8106e8bd>] get_signal+0x1ed/0x470
-   [<ffffffff8100f854>] do_signal+0x14/0x110
-   [<ffffffff810030e9>] prepare_exit_to_usermode+0xe9/0xf0
-   [<ffffffff814178a5>] retint_user+0x8/0x13
-
-This is CVE-2016-3961 / XSA-174.
-
-Reported-by: Vitaly Kuznetsov <vkuznets at redhat.com>
-Signed-off-by: Jan Beulich <jbeulich at suse.com>
-Cc: Andrew Morton <akpm at linux-foundation.org>
-Cc: Andy Lutomirski <luto at amacapital.net>
-Cc: Boris Ostrovsky <boris.ostrovsky at oracle.com>
-Cc: Borislav Petkov <bp at alien8.de>
-Cc: Brian Gerst <brgerst at gmail.com>
-Cc: David Vrabel <david.vrabel at citrix.com>
-Cc: Denys Vlasenko <dvlasenk at redhat.com>
-Cc: H. Peter Anvin <hpa at zytor.com>
-Cc: Juergen Gross <JGross at suse.com>
-Cc: Linus Torvalds <torvalds at linux-foundation.org>
-Cc: Luis R. Rodriguez <mcgrof at suse.com>
-Cc: Peter Zijlstra <peterz at infradead.org>
-Cc: Thomas Gleixner <tglx at linutronix.de>
-Cc: Toshi Kani <toshi.kani at hp.com>
-Cc: xen-devel <xen-devel at lists.xenproject.org>
-Link: http://lkml.kernel.org/r/57188ED802000078000E431C@prv-mh.provo.novell.com
-Signed-off-by: Ingo Molnar <mingo at kernel.org>
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
- arch/x86/include/asm/hugetlb.h | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/arch/x86/include/asm/hugetlb.h
-+++ b/arch/x86/include/asm/hugetlb.h
-@@ -3,6 +3,7 @@
- 
- #include <asm/page.h>
- 
-+#define hugepages_supported() cpu_has_pse
- 
- static inline int is_hugepage_only_range(struct mm_struct *mm,
- 					 unsigned long addr,
diff --git a/debian/patches/features/all/drm/drm-3.4.patch b/debian/patches/features/all/drm/drm-3.4.patch
index 65c22a2..4d5e723 100644
--- a/debian/patches/features/all/drm/drm-3.4.patch
+++ b/debian/patches/features/all/drm/drm-3.4.patch
@@ -43963,7 +43963,7 @@ index ca67338e5533..38c0a4720cc8 100644
  
  int i915_max_ioctl = DRM_ARRAY_SIZE(i915_ioctls);
 diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
-index 452bc512e6a7..89f3d4aed664 100644
+index e216c21110e4..89f3d4aed664 100644
 --- a/drivers/gpu/drm/i915/i915_drv.c
 +++ b/drivers/gpu/drm/i915/i915_drv.c
 @@ -66,7 +66,11 @@ MODULE_PARM_DESC(semaphores,
@@ -44098,7 +44098,43 @@ index 452bc512e6a7..89f3d4aed664 100644
  		mutex_unlock(&dev->struct_mutex);
  
  		if (HAS_PCH_SPLIT(dev))
-@@ -614,13 +643,40 @@ static int ironlake_do_reset(struct drm_device *dev, u8 flags)
+@@ -538,35 +567,6 @@ int i915_resume(struct drm_device *dev)
+ 	if (dev->switch_power_state == DRM_SWITCH_POWER_OFF)
+ 		return 0;
+ 
+-	/*
+-	 * Note that we need to set the power state explicitly, since we
+-	 * powered off the device during freeze and the PCI core won't power
+-	 * it back up for us during thaw. Powering off the device during
+-	 * freeze is not a hard requirement though, and during the
+-	 * suspend/resume phases the PCI core makes sure we get here with the
+-	 * device powered on. So in case we change our freeze logic and keep
+-	 * the device powered we can also remove the following set power state
+-	 * call.
+-	 */
+-	ret = pci_set_power_state(dev->pdev, PCI_D0);
+-	if (ret) {
+-		DRM_ERROR("failed to set PCI D0 power state (%d)\n", ret);
+-		return ret;
+-	}
+-
+-	/*
+-	 * Note that pci_enable_device() first enables any parent bridge
+-	 * device and only then sets the power state for this device. The
+-	 * bridge enabling is a nop though, since bridge devices are resumed
+-	 * first. The order of enabling power and enabling the device is
+-	 * imposed by the PCI core as described above, so here we preserve the
+-	 * same order for the freeze/thaw phases.
+-	 *
+-	 * TODO: eventually we should remove pci_disable_device() /
+-	 * pci_enable_enable_device() from suspend/resume. Due to how they
+-	 * depend on the device enable refcount we can't anyway depend on them
+-	 * disabling/enabling the device.
+-	 */
+ 	if (pci_enable_device(dev->pdev))
+ 		return -EIO;
+ 
+@@ -643,13 +643,40 @@ static int ironlake_do_reset(struct drm_device *dev, u8 flags)
  static int gen6_do_reset(struct drm_device *dev, u8 flags)
  {
  	struct drm_i915_private *dev_priv = dev->dev_private;
@@ -44142,7 +44178,7 @@ index 452bc512e6a7..89f3d4aed664 100644
   * @dev: drm device to reset
   * @flags: reset domains
   *
-@@ -643,7 +699,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
+@@ -672,7 +699,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
  	 * need to
  	 */
  	bool need_display = true;
@@ -44150,7 +44186,7 @@ index 452bc512e6a7..89f3d4aed664 100644
  	int ret;
  
  	if (!i915_try_reset)
-@@ -661,11 +716,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
+@@ -690,11 +716,6 @@ int i915_reset(struct drm_device *dev, u8 flags)
  	case 7:
  	case 6:
  		ret = gen6_do_reset(dev, flags);
@@ -44162,7 +44198,7 @@ index 452bc512e6a7..89f3d4aed664 100644
  		break;
  	case 5:
  		ret = ironlake_do_reset(dev, flags);
-@@ -702,12 +752,16 @@ int i915_reset(struct drm_device *dev, u8 flags)
+@@ -731,12 +752,16 @@ int i915_reset(struct drm_device *dev, u8 flags)
  			!dev_priv->mm.suspended) {
  		dev_priv->mm.suspended = 0;
  
@@ -44179,7 +44215,7 @@ index 452bc512e6a7..89f3d4aed664 100644
  		mutex_unlock(&dev->struct_mutex);
  		drm_irq_uninstall(dev);
  		drm_mode_config_reset(dev);
-@@ -830,6 +884,21 @@ static struct vm_operations_struct i915_gem_vm_ops = {
+@@ -859,6 +884,21 @@ static struct vm_operations_struct i915_gem_vm_ops = {
  	.close = drm_gem_vm_close,
  };
  
@@ -44201,7 +44237,7 @@ index 452bc512e6a7..89f3d4aed664 100644
  static struct drm_driver driver = {
  	/* Don't use MTRRs here; the Xserver or userspace app should
  	 * deal with them for Intel hardware.
-@@ -863,21 +932,7 @@ static struct drm_driver driver = {
+@@ -892,21 +932,7 @@ static struct drm_driver driver = {
  	.dumb_map_offset = i915_gem_mmap_gtt,
  	.dumb_destroy = i915_gem_dumb_destroy,
  	.ioctls = i915_ioctls,
@@ -44224,7 +44260,7 @@ index 452bc512e6a7..89f3d4aed664 100644
  	.name = DRIVER_NAME,
  	.desc = DRIVER_DESC,
  	.date = DRIVER_DATE,
-@@ -945,17 +1000,21 @@ MODULE_LICENSE("GPL and additional rights");
+@@ -974,17 +1000,21 @@ MODULE_LICENSE("GPL and additional rights");
  /* We give fast paths for the really cool registers */
  #define NEEDS_FORCE_WAKE(dev_priv, reg) \
  	((HAS_FORCE_WAKE((dev_priv)->dev)) && \
@@ -44251,7 +44287,7 @@ index 452bc512e6a7..89f3d4aed664 100644
  	} else { \
  		val = read##y(dev_priv->regs + reg); \
  	} \
-@@ -971,11 +1030,15 @@ __i915_read(64, q)
+@@ -1000,11 +1030,15 @@ __i915_read(64, q)
  
  #define __i915_write(x, y) \
  void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val) { \
@@ -72463,7 +72499,7 @@ index 3e34f1ee340a..5325c20fd706 100644
  	radeon_write_dpcd_reg(dp_info->radeon_connector, DP_LANE_COUNT_SET, tmp);
  
 diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
-index a1a7d071eb17..dd5c14e917e0 100644
+index cd8b34146146..dd5c14e917e0 100644
 --- a/drivers/gpu/drm/radeon/atombios_encoders.c
 +++ b/drivers/gpu/drm/radeon/atombios_encoders.c
 @@ -57,22 +57,6 @@ static inline bool radeon_encoder_is_digital(struct drm_encoder *encoder)
@@ -72489,7 +72525,18 @@ index a1a7d071eb17..dd5c14e917e0 100644
  static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
  				   struct drm_display_mode *mode,
  				   struct drm_display_mode *adjusted_mode)
-@@ -257,7 +241,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
+@@ -90,10 +74,6 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
+ 	    && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
+ 		adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
+ 
+-	/* vertical FP must be at least 1 */
+-	if (mode->crtc_vsync_start == mode->crtc_vdisplay)
+-		adjusted_mode->crtc_vsync_start++;
+-
+ 	/* get the native mode for LVDS */
+ 	if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT))
+ 		radeon_panel_mode_fixup(encoder, adjusted_mode);
+@@ -261,7 +241,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
  			/* R4xx, R5xx */
  			args.ext_tmds.sXTmdsEncoder.ucEnable = action;
  
@@ -72498,7 +72545,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.ext_tmds.sXTmdsEncoder.ucMisc |= PANEL_ENCODER_MISC_DUAL;
  
  			args.ext_tmds.sXTmdsEncoder.ucMisc |= ATOM_PANEL_MISC_888RGB;
-@@ -269,7 +253,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
+@@ -273,7 +253,7 @@ atombios_dvo_setup(struct drm_encoder *encoder, int action)
  			/* DFP1, CRT1, TV1 depending on the type of port */
  			args.dvo.sDVOEncoder.ucDeviceType = ATOM_DEVICE_DFP1_INDEX;
  
@@ -72507,7 +72554,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.dvo.sDVOEncoder.usDevAttr.sDigAttrib.ucAttribute |= PANEL_ENCODER_MISC_DUAL;
  			break;
  		case 3:
-@@ -353,7 +337,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
+@@ -357,7 +337,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
  			} else {
  				if (dig->linkb)
  					args.v1.ucMisc |= PANEL_ENCODER_MISC_TMDS_LINKB;
@@ -72516,7 +72563,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v1.ucMisc |= PANEL_ENCODER_MISC_DUAL;
  				/*if (pScrn->rgbBits == 8) */
  				args.v1.ucMisc |= ATOM_PANEL_MISC_888RGB;
-@@ -392,7 +376,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
+@@ -396,7 +376,7 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
  			} else {
  				if (dig->linkb)
  					args.v2.ucMisc |= PANEL_ENCODER_MISC_TMDS_LINKB;
@@ -72525,7 +72572,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v2.ucMisc |= PANEL_ENCODER_MISC_DUAL;
  			}
  			break;
-@@ -412,9 +396,9 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
+@@ -416,9 +396,9 @@ atombios_digital_setup(struct drm_encoder *encoder, int action)
  int
  atombios_get_encoder_mode(struct drm_encoder *encoder)
  {
@@ -72536,7 +72583,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  	struct drm_connector *connector;
  	struct radeon_connector *radeon_connector;
  	struct radeon_connector_atom_dig *dig_connector;
-@@ -438,13 +422,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -442,13 +422,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
  	switch (connector->connector_type) {
  	case DRM_MODE_CONNECTOR_DVII:
  	case DRM_MODE_CONNECTOR_HDMIB: /* HDMI-B is basically DL-DVI; analog works fine */
@@ -72555,7 +72602,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			return ATOM_ENCODER_MODE_DVI;
  		else
  			return ATOM_ENCODER_MODE_CRT;
-@@ -452,13 +434,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -456,13 +434,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
  	case DRM_MODE_CONNECTOR_DVID:
  	case DRM_MODE_CONNECTOR_HDMIA:
  	default:
@@ -72574,7 +72621,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			return ATOM_ENCODER_MODE_DVI;
  		break;
  	case DRM_MODE_CONNECTOR_LVDS:
-@@ -469,13 +449,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -473,13 +449,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
  		if ((dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_DISPLAYPORT) ||
  		    (dig_connector->dp_sink_type == CONNECTOR_OBJECT_ID_eDP))
  			return ATOM_ENCODER_MODE_DP;
@@ -72593,7 +72640,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			return ATOM_ENCODER_MODE_DVI;
  		break;
  	case DRM_MODE_CONNECTOR_eDP:
-@@ -510,7 +488,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -514,7 +488,7 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
   * - 2 DIG encoder blocks.
   * DIG1/2 can drive UNIPHY0/1/2 link A or link B
   *
@@ -72602,7 +72649,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
   * - 3 DIG transmitter blocks UNIPHY0/1/2 (links A and B).
   * Supports up to 6 digital outputs
   * - 6 DIG encoder blocks.
-@@ -526,7 +504,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
+@@ -530,7 +504,11 @@ atombios_get_encoder_mode(struct drm_encoder *encoder)
   * - 3 DIG transmitter blocks UNIPHY0/1/2 (links A and B).
   * Supports up to 6 digital outputs
   * - 2 DIG encoder blocks.
@@ -72614,7 +72661,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
   *
   * Routing
   * crtc -> dig encoder -> UNIPHY/LVTMA (1 or 2 links)
-@@ -568,7 +550,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -572,7 +550,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
  		dp_clock = dig_connector->dp_clock;
  		dp_lane_count = dig_connector->dp_lane_count;
  		hpd_id = radeon_connector->hpd.hpd;
@@ -72623,7 +72670,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  	}
  
  	/* no dig encoder assigned */
-@@ -602,11 +584,13 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -606,11 +584,13 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
  
  			if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode))
  				args.v1.ucLaneNum = dp_lane_count;
@@ -72638,7 +72685,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			switch (radeon_encoder->encoder_id) {
  			case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
  				args.v1.ucConfig = ATOM_ENCODER_CONFIG_V2_TRANSMITTER1;
-@@ -623,10 +607,6 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -627,10 +607,6 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
  				args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKB;
  			else
  				args.v1.ucConfig |= ATOM_ENCODER_CONFIG_LINKA;
@@ -72649,7 +72696,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			break;
  		case 2:
  		case 3:
-@@ -639,7 +619,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -643,7 +619,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
  
  			if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode))
  				args.v3.ucLaneNum = dp_lane_count;
@@ -72658,7 +72705,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.v3.ucLaneNum = 8;
  			else
  				args.v3.ucLaneNum = 4;
-@@ -679,7 +659,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
+@@ -683,7 +659,7 @@ atombios_dig_encoder_setup(struct drm_encoder *encoder, int action, int panel_mo
  
  			if (ENCODER_MODE_IS_DP(args.v1.ucEncoderMode))
  				args.v4.ucLaneNum = dp_lane_count;
@@ -72667,7 +72714,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.v4.ucLaneNum = 8;
  			else
  				args.v4.ucLaneNum = 4;
-@@ -736,6 +716,7 @@ union dig_transmitter_control {
+@@ -740,6 +716,7 @@ union dig_transmitter_control {
  	DIG_TRANSMITTER_CONTROL_PARAMETERS_V2 v2;
  	DIG_TRANSMITTER_CONTROL_PARAMETERS_V3 v3;
  	DIG_TRANSMITTER_CONTROL_PARAMETERS_V4 v4;
@@ -72675,7 +72722,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  };
  
  void
-@@ -756,6 +737,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -760,6 +737,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  	int connector_object_id = 0;
  	int igp_lane_info = 0;
  	int dig_encoder = dig->dig_encoder;
@@ -72683,7 +72730,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  
  	if (action == ATOM_TRANSMITTER_ACTION_INIT) {
  		connector = radeon_get_connector_for_encoder_init(encoder);
-@@ -771,6 +753,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -775,6 +753,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  		struct radeon_connector_atom_dig *dig_connector =
  			radeon_connector->con_priv;
  
@@ -72691,7 +72738,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  		dp_clock = dig_connector->dp_clock;
  		dp_lane_count = dig_connector->dp_lane_count;
  		connector_object_id =
-@@ -823,7 +806,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -827,7 +806,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  				if (is_dp)
  					args.v1.usPixelClock =
  						cpu_to_le16(dp_clock / 10);
@@ -72700,7 +72747,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v1.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
  				else
  					args.v1.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -838,7 +821,8 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -842,7 +821,8 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  
  			if ((rdev->flags & RADEON_IS_IGP) &&
  			    (radeon_encoder->encoder_id == ENCODER_OBJECT_ID_INTERNAL_UNIPHY)) {
@@ -72710,7 +72757,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					if (igp_lane_info & 0x1)
  						args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_LANE_0_3;
  					else if (igp_lane_info & 0x2)
-@@ -865,7 +849,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -869,7 +849,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  			else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
  				if (dig->coherent_mode)
  					args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_COHERENT;
@@ -72719,7 +72766,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v1.ucConfig |= ATOM_TRANSMITTER_CONFIG_8LANE_LINK;
  			}
  			break;
-@@ -880,7 +864,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -884,7 +864,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  				if (is_dp)
  					args.v2.usPixelClock =
  						cpu_to_le16(dp_clock / 10);
@@ -72728,7 +72775,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v2.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
  				else
  					args.v2.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -908,7 +892,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -912,7 +892,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  			} else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
  				if (dig->coherent_mode)
  					args.v2.acConfig.fCoherentMode = 1;
@@ -72737,7 +72784,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v2.acConfig.fDualLinkConnector = 1;
  			}
  			break;
-@@ -923,7 +907,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -927,7 +907,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  				if (is_dp)
  					args.v3.usPixelClock =
  						cpu_to_le16(dp_clock / 10);
@@ -72746,7 +72793,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v3.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
  				else
  					args.v3.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -931,7 +915,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -935,7 +915,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  
  			if (is_dp)
  				args.v3.ucLaneNum = dp_lane_count;
@@ -72755,7 +72802,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.v3.ucLaneNum = 8;
  			else
  				args.v3.ucLaneNum = 4;
-@@ -968,7 +952,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -972,7 +952,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  			else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
  				if (dig->coherent_mode)
  					args.v3.acConfig.fCoherentMode = 1;
@@ -72764,7 +72811,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v3.acConfig.fDualLinkConnector = 1;
  			}
  			break;
-@@ -983,7 +967,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -987,7 +967,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  				if (is_dp)
  					args.v4.usPixelClock =
  						cpu_to_le16(dp_clock / 10);
@@ -72773,7 +72820,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					args.v4.usPixelClock = cpu_to_le16((radeon_encoder->pixel_clock / 2) / 10);
  				else
  					args.v4.usPixelClock = cpu_to_le16(radeon_encoder->pixel_clock / 10);
-@@ -991,7 +975,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -995,7 +975,7 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  
  			if (is_dp)
  				args.v4.ucLaneNum = dp_lane_count;
@@ -72782,7 +72829,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.v4.ucLaneNum = 8;
  			else
  				args.v4.ucLaneNum = 4;
-@@ -1031,10 +1015,64 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
+@@ -1035,10 +1015,64 @@ atombios_dig_transmitter_setup(struct drm_encoder *encoder, int action, uint8_t
  			else if (radeon_encoder->devices & (ATOM_DEVICE_DFP_SUPPORT)) {
  				if (dig->coherent_mode)
  					args.v4.acConfig.fCoherentMode = 1;
@@ -72848,7 +72895,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  		default:
  			DRM_ERROR("Unknown table version %d, %d\n", frev, crev);
  			break;
-@@ -1130,7 +1168,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
+@@ -1134,7 +1168,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
  		dp_lane_count = dig_connector->dp_lane_count;
  		connector_object_id =
  			(radeon_connector->connector_object_id & OBJECT_ID_MASK) >> OBJECT_ID_SHIFT;
@@ -72857,7 +72904,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  	}
  
  	memset(&args, 0, sizeof(args));
-@@ -1154,7 +1192,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
+@@ -1158,7 +1192,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
  				if (dp_clock == 270000)
  					args.v1.sDigEncoder.ucConfig |= ATOM_ENCODER_CONFIG_DPLINKRATE_2_70GHZ;
  				args.v1.sDigEncoder.ucLaneNum = dp_lane_count;
@@ -72866,7 +72913,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.v1.sDigEncoder.ucLaneNum = 8;
  			else
  				args.v1.sDigEncoder.ucLaneNum = 4;
-@@ -1173,7 +1211,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
+@@ -1177,7 +1211,7 @@ atombios_external_encoder_setup(struct drm_encoder *encoder,
  				else if (dp_clock == 540000)
  					args.v3.sExtEncoder.ucConfig |= EXTERNAL_ENCODER_CONFIG_V3_DPLINKRATE_5_40GHZ;
  				args.v3.sExtEncoder.ucLaneNum = dp_lane_count;
@@ -72875,7 +72922,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  				args.v3.sExtEncoder.ucLaneNum = 8;
  			else
  				args.v3.sExtEncoder.ucLaneNum = 4;
-@@ -1371,7 +1409,7 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
+@@ -1375,7 +1409,7 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode)
  						   ATOM_ENCODER_CMD_SETUP_PANEL_MODE,
  						   dig->panel_mode);
  			if (ext_encoder) {
@@ -72884,7 +72931,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  					atombios_external_encoder_setup(encoder, ext_encoder,
  									EXTERNAL_ENCODER_ACTION_V3_ENCODER_SETUP);
  			}
-@@ -1450,7 +1488,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
+@@ -1454,7 +1488,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
  	switch (mode) {
  	case DRM_MODE_DPMS_ON:
  	default:
@@ -72893,7 +72940,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			atombios_external_encoder_setup(encoder, ext_encoder,
  							EXTERNAL_ENCODER_ACTION_V3_ENABLE_OUTPUT);
  			atombios_external_encoder_setup(encoder, ext_encoder,
-@@ -1461,7 +1499,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
+@@ -1465,7 +1499,7 @@ radeon_atom_encoder_dpms_ext(struct drm_encoder *encoder,
  	case DRM_MODE_DPMS_STANDBY:
  	case DRM_MODE_DPMS_SUSPEND:
  	case DRM_MODE_DPMS_OFF:
@@ -72902,7 +72949,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			atombios_external_encoder_setup(encoder, ext_encoder,
  							EXTERNAL_ENCODER_ACTION_V3_ENCODER_BLANKING);
  			atombios_external_encoder_setup(encoder, ext_encoder,
-@@ -1743,13 +1781,34 @@ static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder)
+@@ -1747,13 +1781,34 @@ static int radeon_atom_pick_dig_encoder(struct drm_encoder *encoder)
  	struct radeon_crtc *radeon_crtc = to_radeon_crtc(encoder->crtc);
  	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
  	struct drm_encoder *test_encoder;
@@ -72942,7 +72989,7 @@ index a1a7d071eb17..dd5c14e917e0 100644
  			/* ontario follows DCE4 */
  			if (rdev->family == CHIP_PALM) {
  				if (dig->linkb)
-@@ -1837,7 +1896,7 @@ radeon_atom_encoder_init(struct radeon_device *rdev)
+@@ -1841,7 +1896,7 @@ radeon_atom_encoder_init(struct radeon_device *rdev)
  			break;
  		}
  
diff --git a/debian/patches/features/all/xen/microcode.patch b/debian/patches/features/all/xen/microcode.patch
index e1bcdd3..58c5d1b 100644
--- a/debian/patches/features/all/xen/microcode.patch
+++ b/debian/patches/features/all/xen/microcode.patch
@@ -17,22 +17,16 @@ Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge at citrix.com>
 
 Takes from git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git#upstream/microcode
 
- arch/x86/include/asm/microcode.h |    9 ++
- arch/x86/kernel/Makefile         |    1 +
- arch/x86/kernel/microcode_core.c |    5 +-
- arch/x86/kernel/microcode_xen.c  |  198 ++++++++++++++++++++++++++++++++++++++
- arch/x86/xen/Kconfig             |    4 +
- 5 files changed, 216 insertions(+), 1 deletion(-)
- create mode 100644 arch/x86/kernel/microcode_xen.c
+[bwh: Adjust context to apply after "x86/microcode/amd: Do not overwrite
+ final patch levels" in 3.2.81]
 
-Index: linux/arch/x86/include/asm/microcode.h
-===================================================================
---- linux.orig/arch/x86/include/asm/microcode.h	2012-10-30 23:27:11.000000000 +0000
-+++ linux/arch/x86/include/asm/microcode.h	2012-11-09 10:59:49.000000000 +0000
-@@ -61,4 +61,13 @@
- }
+--- a/arch/x86/include/asm/microcode.h
++++ b/arch/x86/include/asm/microcode.h
+@@ -62,4 +62,14 @@ static inline struct microcode_ops * __i
  #endif
  
+ extern bool check_current_patch_level(u32 *rev, bool early);
++
 +#ifdef CONFIG_MICROCODE_XEN
 +extern struct microcode_ops * __init init_xen_microcode(void);
 +#else
@@ -43,11 +37,9 @@ Index: linux/arch/x86/include/asm/microcode.h
 +#endif
 +
  #endif /* _ASM_X86_MICROCODE_H */
-Index: linux/arch/x86/kernel/Makefile
-===================================================================
---- linux.orig/arch/x86/kernel/Makefile	2012-10-30 23:27:11.000000000 +0000
-+++ linux/arch/x86/kernel/Makefile	2012-11-09 10:59:49.000000000 +0000
-@@ -92,6 +92,7 @@
+--- a/arch/x86/kernel/Makefile
++++ b/arch/x86/kernel/Makefile
+@@ -93,6 +93,7 @@ obj-$(CONFIG_PCSPKR_PLATFORM)	+= pcspeak
  microcode-y				:= microcode_core.o
  microcode-$(CONFIG_MICROCODE_INTEL)	+= microcode_intel.o
  microcode-$(CONFIG_MICROCODE_AMD)	+= microcode_amd.o
@@ -55,10 +47,8 @@ Index: linux/arch/x86/kernel/Makefile
  obj-$(CONFIG_MICROCODE)			+= microcode.o
  
  obj-$(CONFIG_X86_CHECK_BIOS_CORRUPTION) += check.o
-Index: linux/arch/x86/kernel/microcode_core.c
-===================================================================
---- linux.orig/arch/x86/kernel/microcode_core.c	2012-11-09 10:18:15.000000000 +0000
-+++ linux/arch/x86/kernel/microcode_core.c	2012-11-09 10:59:49.000000000 +0000
+--- a/arch/x86/kernel/microcode_core.c
++++ b/arch/x86/kernel/microcode_core.c
 @@ -84,6 +84,7 @@
  #include <linux/mm.h>
  #include <linux/syscore_ops.h>
@@ -67,7 +57,7 @@ Index: linux/arch/x86/kernel/microcode_core.c
  #include <asm/microcode.h>
  #include <asm/processor.h>
  
-@@ -518,7 +519,9 @@
+@@ -518,7 +519,9 @@ static int __init microcode_init(void)
  	struct cpuinfo_x86 *c = &cpu_data(0);
  	int error;
  
@@ -78,10 +68,8 @@ Index: linux/arch/x86/kernel/microcode_core.c
  		microcode_ops = init_intel_microcode();
  	else if (c->x86_vendor == X86_VENDOR_AMD)
  		microcode_ops = init_amd_microcode();
-Index: linux/arch/x86/kernel/microcode_xen.c
-===================================================================
---- /dev/null	1970-01-01 00:00:00.000000000 +0000
-+++ linux/arch/x86/kernel/microcode_xen.c	2012-11-09 10:59:49.000000000 +0000
+--- /dev/null
++++ b/arch/x86/kernel/microcode_xen.c
 @@ -0,0 +1,198 @@
 +/*
 + * Xen microcode update driver
@@ -281,11 +269,9 @@ Index: linux/arch/x86/kernel/microcode_xen.c
 +		return NULL;
 +	return &microcode_xen_ops;
 +}
-Index: linux/arch/x86/xen/Kconfig
-===================================================================
---- linux.orig/arch/x86/xen/Kconfig	2012-10-30 23:27:11.000000000 +0000
-+++ linux/arch/x86/xen/Kconfig	2012-11-09 11:00:42.000000000 +0000
-@@ -48,3 +48,7 @@
+--- a/arch/x86/xen/Kconfig
++++ b/arch/x86/xen/Kconfig
+@@ -48,3 +48,7 @@ config XEN_DEBUG_FS
  	help
  	  Enable statistics output and various tuning options in debugfs.
  	  Enabling this option may incur a significant performance overhead.
diff --git a/debian/patches/series b/debian/patches/series
index 5d12603..ab75c59 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1172,11 +1172,5 @@ debian/revert-libata-align-ata_device-s-id-on-a-cacheline.patch
 debian/tracing-avoid-abi-change-in-3.2.79.patch
 debian/fs-fix-abi-change-in-3.2.80.patch
 debian/pci-fix-abi-change-in-3.2.80.patch
-bugfix/all/revert-ax25-add-link-layer-header-validation-functio.patch
-bugfix/all/revert-net-validate-variable-length-ll-headers.patch
 debian/revert-net-ipv6-add-sysctl-option-accept_ra_min_hop_limit.patch
 debian/fs-fix-abi-change-for-aufs-f_setfl-fix.patch
-bugfix/all/get_rock_ridge_filename-handle-malformed-NM-entries.patch
-bugfix/all/hugetlb-ensure-hugepage-access-is-denied-if-hugepages-are-not.patch
-bugfix/all/mm-hugetlb-allow-hugepages_supported-to-be-architect.patch
-bugfix/x86/x86-mm-xen-Suppress-hugetlbfs-in-PV-guests.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