[linux] 01/02: Update to 3.2.79

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Fri Apr 1 02:18:50 UTC 2016


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

benh pushed a commit to branch wheezy
in repository linux.

commit 1ecda73139763b97e3a1f3bace9730f8bb8bda53
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Fri Apr 1 02:55:00 2016 +0100

    Update to 3.2.79
    
    Drop patches applied upstream.
    
    Fix a couple of ABI changes.
    
    drm, agp: Update to 3.4.111
---
 debian/changelog                                   |  72 ++++++++++++
 ...rd-against-other-sk-in-unix_dgram_sendmsg.patch |  40 -------
 .../all/crypto-blk-giv-cipher-set-has_setkey.patch |  32 ------
 ...emove-redundant-log-messages-from-drivers.patch |  42 +++----
 ...to-algif_skcipher-do-not-dereference-ctx-.patch |  29 -----
 ...bata-align-ata_device-s-id-on-a-cacheline.patch |  24 ++++
 .../tracing-avoid-abi-change-in-3.2.79.patch       |  25 ++++
 debian/patches/features/all/drm/drm-3.4.patch      | 128 ++++++++-------------
 debian/patches/series                              |   5 +-
 9 files changed, 193 insertions(+), 204 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 6abd416..3f1e07c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,75 @@
+linux (3.2.79-1) UNRELEASED; urgency=medium
+
+  * New upstream stable update:
+    http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.2.79
+    - [x86] iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG
+    - wext: fix message delay/ordering
+    - cfg80211/wext: fix message ordering
+    - mac80211: fix use of uninitialised values in RX aggregation
+    - nfs: fix nfs_size_to_loff_t
+    - cifs: fix erroneous return value
+    - [s390*] dasd: prevent incorrect length error under z/VM after PAV changes
+    - [s390*] dasd: fix refcount for PAV reassignment
+    - libata: fix HDIO_GET_32BIT ioctl
+    - xen/pciback: Check PF instead of VF for PCI_COMMAND_MEMORY
+    - xen/pciback: Save the number of MSI-X entries to be copied later.
+    - xen/pcifront: Fix mysterious crashes when NUMA locality information was
+      extracted.
+    - ALSA: seq: Fix leak of pool buffer at concurrent writes
+    - tracepoints: Do not trace when cpu is offline
+    - tracing: Fix freak link error caused by branch tracer
+    - ALSA: seq: Fix double port list deletion
+    - af_unix: Don't set err in unix_stream_read_generic unless there was
+      an error
+    - [amd64] uaccess: Handle the caching of 4-byte nocache copies properly in
+      __copy_user_nocache()
+    - usb: dwc3: Fix assignment of EP transfer resources
+    - net/mlx4_en: Count HW buffer overrun only once
+    - USB: option: add support for SIM7100E
+    - USB: cp210x: add IDs for GE B650V3 and B850V3 boards
+    - USB: option: add "4G LTE usb-modem U901"
+    - [x86] Adding Intel Lewisburg device IDs for SATA
+    - ext4: fix bh->b_state corruption
+    - kernel/resource.c: fix muxed resource handling in __request_region()
+    - can: ems_usb: Fix possible tx overflow
+    - mac80211: minstrel_ht: set default tx aggregation timeout to 0
+    - sunrpc/cache: fix off-by-one in qword_get()
+    - KVM: async_pf: do not warn on page allocation failures
+    - Revert "jffs2: Fix lock acquisition order bug in jffs2_write_begin"
+    - jffs2: Fix page lock / f->sem deadlock
+    - Fix directory hardlinks from deleted directories
+    - libata: Align ata_device's id on a cacheline
+    - ipr: Fix out-of-bounds null overwrite
+    - ipr: Fix regression when loading firmware
+    - mm: thp: fix SMP race condition between THP page fault and MADV_DONTNEED
+    - hpfs: don't truncate the file when delete fails
+    - ALSA: timer: Fix broken compat timer user status ioctl
+    - ALSA: hdspm: Fix wrong boolean ctl value accesses
+    - ALSA: hdsp: Fix wrong boolean ctl value accesses
+    - USB: cp210x: Add ID for Parrot NMEA GPS Flight Recorder
+    - ASoC: wm8958: Fix enum ctl accesses in a wrong type
+    - ASoC: wm8994: Fix enum ctl accesses in a wrong type
+    - USB: serial: option: add support for Quectel UC20
+    - ALSA: seq: oss: Don't drain at closing a client
+    - [x86] PM / sleep: Fix crash on graph trace through x86 suspend
+    - IB/core: Use GRH when the path hop-limit > 0
+    - mld, igmp: Fix reserved tailroom calculation
+    - [mips*] traps: Fix SIGFPE information leak from `do_ov' and
+      `do_trap_or_bp'
+    - ubi: Fix out of bounds write in volume update code
+    - [s390*] mm: four page table levels vs. fork (CVE-2016-2143)
+    - Input: aiptek - fix crash on detecting device without endpoints
+    - include/linux/poison.h: fix LIST_POISON{1,2} offset (CVE-2016-0821)
+    - HID: usbhid: fix recursive deadlock
+
+  [ Ben Hutchings ]
+  * drm, agp: Update to 3.4.111:
+    - drm: add a check for x/y in drm_mode_setcrtc
+    - drm/radeon/combios: add some validation of lvds values
+  * Revert "libata: Align ata_device's id on a cacheline" to avoid ABI change
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Fri, 01 Apr 2016 02:11:16 +0100
+
 linux (3.2.78-1) wheezy; urgency=medium
 
   * New upstream stable update:
diff --git a/debian/patches/bugfix/all/af_unix-guard-against-other-sk-in-unix_dgram_sendmsg.patch b/debian/patches/bugfix/all/af_unix-guard-against-other-sk-in-unix_dgram_sendmsg.patch
deleted file mode 100644
index 0be82d9..0000000
--- a/debian/patches/bugfix/all/af_unix-guard-against-other-sk-in-unix_dgram_sendmsg.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Rainer Weikusat <rweikusat at mobileactivedefense.com>
-Date: Thu, 11 Feb 2016 19:37:27 +0000
-Subject: af_unix: Guard against other == sk in unix_dgram_sendmsg
-Origin: http://mid.gmane.org/87r3gj11jc.fsf_-_@doppelsaurus.mobileactivedefense.com
-
-The unix_dgram_sendmsg routine use the following test
-
-if (unlikely(unix_peer(other) != sk && unix_recvq_full(other))) {
-
-to determine if sk and other are in an n:1 association (either
-established via connect or by using sendto to send messages to an
-unrelated socket identified by address). This isn't correct as the
-specified address could have been bound to the sending socket itself or
-because this socket could have been connected to itself by the time of
-the unix_peer_get but disconnected before the unix_state_lock(other). In
-both cases, the if-block would be entered despite other == sk which
-might either block the sender unintentionally or lead to trying to unlock
-the same spin lock twice for a non-blocking send. Add a other != sk
-check to guard against this.
-
-Fixes: 7d267278a9ec ("unix: avoid use-after-free in ep_remove_wait_queue")
-Reported-By: Philipp Hahn <pmhahn at pmhahn.de>
-Signed-off-by: Rainer Weikusat <rweikusat at mobileactivedefense.com>
----
---- a/net/unix/af_unix.c
-+++ b/net/unix/af_unix.c
-@@ -1694,7 +1694,12 @@ restart_locked:
- 			goto out_unlock;
- 	}
- 
--	if (unlikely(unix_peer(other) != sk && unix_recvq_full(other))) {
-+	/* other == sk && unix_peer(other) != sk if
-+	 * - unix_peer(sk) == NULL, destination address bound to sk
-+	 * - unix_peer(sk) == sk by time of get but disconnected before lock
-+	 */
-+	if (other != sk &&
-+	    unlikely(unix_peer(other) != sk && unix_recvq_full(other))) {
- 		if (timeo) {
- 			timeo = unix_wait_for_peer(other, timeo);
- 
diff --git a/debian/patches/bugfix/all/crypto-blk-giv-cipher-set-has_setkey.patch b/debian/patches/bugfix/all/crypto-blk-giv-cipher-set-has_setkey.patch
deleted file mode 100644
index 2854d88..0000000
--- a/debian/patches/bugfix/all/crypto-blk-giv-cipher-set-has_setkey.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 06 Mar 2016 19:52:46 +0000
-Subject: crypto: {blk,giv}cipher: Set has_setkey
-
-Commit a1383cd86a06 ("crypto: skcipher - Add crypto_skcipher_has_setkey")
-was incorrectly backported to the 3.2.y and 3.16.y stable branches.
-We need to set ablkcipher_tfm::has_setkey in the
-crypto_init_blkcipher_ops_async() and crypto_init_givcipher_ops()
-functions as well as crypto_init_ablkcipher_ops().
-
-Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
----
---- a/crypto/ablkcipher.c
-+++ b/crypto/ablkcipher.c
-@@ -461,6 +461,7 @@ static int crypto_init_givcipher_ops(str
- 	crt->givdecrypt = alg->givdecrypt ?: no_givdecrypt;
- 	crt->base = __crypto_ablkcipher_cast(tfm);
- 	crt->ivsize = alg->ivsize;
-+	crt->has_setkey = alg->max_keysize;
- 
- 	return 0;
- }
---- a/crypto/blkcipher.c
-+++ b/crypto/blkcipher.c
-@@ -458,6 +458,7 @@ static int crypto_init_blkcipher_ops_asy
- 	}
- 	crt->base = __crypto_ablkcipher_cast(tfm);
- 	crt->ivsize = alg->ivsize;
-+	crt->has_setkey = alg->max_keysize;
- 
- 	return 0;
- }
diff --git a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
index 7956eae..bdab992 100644
--- a/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
+++ b/debian/patches/bugfix/all/firmware-remove-redundant-log-messages-from-drivers.patch
@@ -95,7 +95,7 @@ upstream submission.
      fw_size = firmware->size / sizeof(u32);
 --- a/drivers/bluetooth/ath3k.c
 +++ b/drivers/bluetooth/ath3k.c
-@@ -336,10 +336,8 @@ static int ath3k_load_patch(struct usb_d
+@@ -381,10 +381,8 @@ static int ath3k_load_patch(struct usb_d
  		fw_version.rom_version);
  
  	ret = request_firmware(&firmware, filename, &udev->dev);
@@ -107,7 +107,7 @@ upstream submission.
  
  	pt_version.rom_version = *(int *)(firmware->data + firmware->size - 8);
  	pt_version.build_version = *(int *)
-@@ -398,10 +396,8 @@ static int ath3k_load_syscfg(struct usb_
+@@ -443,10 +441,8 @@ static int ath3k_load_syscfg(struct usb_
  		fw_version.rom_version, clk_value, ".dfu");
  
  	ret = request_firmware(&firmware, filename, &udev->dev);
@@ -273,7 +273,7 @@ upstream submission.
  		release_firmware(rdev->me_fw);
 --- a/drivers/gpu/drm/radeon/r100.c
 +++ b/drivers/gpu/drm/radeon/r100.c
-@@ -994,10 +994,7 @@ static int r100_cp_init_microcode(struct
+@@ -998,10 +998,7 @@ static int r100_cp_init_microcode(struct
  
  	err = request_firmware(&rdev->me_fw, fw_name, &pdev->dev);
  	platform_device_unregister(pdev);
@@ -695,7 +695,7 @@ upstream submission.
  				printk(KERN_INFO "tda1004x: please rename the firmware file to %s\n",
 --- a/drivers/media/dvb/frontends/tda10071.c
 +++ b/drivers/media/dvb/frontends/tda10071.c
-@@ -930,13 +930,8 @@ static int tda10071_init(struct dvb_fron
+@@ -934,13 +934,8 @@ static int tda10071_init(struct dvb_fron
  
  		/* request the firmware, this will block and timeout */
  		ret = request_firmware(&fw, fw_file, priv->i2c->dev.parent);
@@ -1268,7 +1268,7 @@ upstream submission.
  	if (bp->mips_firmware->size < sizeof(*mips_fw) ||
 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
 +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c
-@@ -10569,11 +10569,8 @@ int bnx2x_init_firmware(struct bnx2x *bp
+@@ -10573,11 +10573,8 @@ int bnx2x_init_firmware(struct bnx2x *bp
  
  		rc = request_firmware(&bp->firmware, fw_file_name,
  				      &bp->pdev->dev);
@@ -1283,7 +1283,7 @@ upstream submission.
  		if (rc) {
 --- a/drivers/net/ethernet/broadcom/tg3.c
 +++ b/drivers/net/ethernet/broadcom/tg3.c
-@@ -9604,11 +9604,8 @@ static int tg3_request_firmware(struct t
+@@ -9603,11 +9603,8 @@ static int tg3_request_firmware(struct t
  {
  	const __be32 *fw_data;
  
@@ -1507,7 +1507,7 @@ upstream submission.
  	ret = ath9k_hif_usb_download_fw(hif_dev, drv_info);
 --- a/drivers/net/wireless/ath/carl9170/usb.c
 +++ b/drivers/net/wireless/ath/carl9170/usb.c
-@@ -1018,7 +1018,6 @@ static void carl9170_usb_firmware_step2(
+@@ -1025,7 +1025,6 @@ static void carl9170_usb_firmware_step2(
  		return;
  	}
  
@@ -1661,7 +1661,7 @@ upstream submission.
  			else
 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c
 +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -909,13 +909,8 @@ static void iwl_ucode_callback(const str
+@@ -913,13 +913,8 @@ static void iwl_ucode_callback(const str
  
  	memset(&pieces, 0, sizeof(pieces));
  
@@ -1894,7 +1894,7 @@ upstream submission.
  		ERROR(rt2x00dev, "Failed to read Firmware.\n");
 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
 +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/sw.c
-@@ -174,11 +174,8 @@ int rtl92c_init_sw_vars(struct ieee80211
+@@ -176,11 +176,8 @@ int rtl92c_init_sw_vars(struct ieee80211
  		fw_name = rtlpriv->cfg->fw_name;
  	}
  	err = request_firmware(&firmware, fw_name, rtlpriv->io.dev);
@@ -1909,7 +1909,7 @@ upstream submission.
  			 ("Firmware is too big!\n"));
 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
 +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-@@ -71,11 +71,8 @@ static int rtl92cu_init_sw_vars(struct i
+@@ -73,11 +73,8 @@ static int rtl92cu_init_sw_vars(struct i
  	/* request fw */
  	err = request_firmware(&firmware, rtlpriv->cfg->fw_name,
  			rtlpriv->io.dev);
@@ -1939,7 +1939,7 @@ upstream submission.
  			 ("Firmware is too big!\n"));
 --- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
 +++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-@@ -197,11 +197,8 @@ static int rtl92s_init_sw_vars(struct ie
+@@ -199,11 +199,8 @@ static int rtl92s_init_sw_vars(struct ie
  	/* request fw */
  	err = request_firmware(&firmware, rtlpriv->cfg->fw_name,
  			rtlpriv->io.dev);
@@ -2137,9 +2137,9 @@ upstream submission.
  	}
 --- a/drivers/scsi/ipr.c
 +++ b/drivers/scsi/ipr.c
-@@ -3744,10 +3744,8 @@ static ssize_t ipr_store_update_fw(struc
- 	len = snprintf(fname, 99, "%s", buf);
- 	fname[len-1] = '\0';
+@@ -3748,10 +3748,8 @@ static ssize_t ipr_store_update_fw(struc
+ 	if (endline)
+ 		*endline = '\0';
  
 -	if(request_firmware(&fw_entry, fname, &ioa_cfg->pdev->dev)) {
 -		dev_err(&ioa_cfg->pdev->dev, "Firmware file %s not found\n", fname);
@@ -2730,7 +2730,7 @@ upstream submission.
  	BootMajorVersion = rec->data[0];
 --- a/drivers/usb/serial/io_ti.c
 +++ b/drivers/usb/serial/io_ti.c
-@@ -870,8 +870,6 @@ static int build_i2c_fw_hdr(__u8 *header
+@@ -886,8 +886,6 @@ static int build_i2c_fw_hdr(__u8 *header
  
  	err = request_firmware(&fw, fw_name, dev);
  	if (err) {
@@ -2739,7 +2739,7 @@ upstream submission.
  		kfree(buffer);
  		return err;
  	}
-@@ -1436,8 +1434,6 @@ static int download_fw(struct edgeport_s
+@@ -1452,8 +1450,6 @@ static int download_fw(struct edgeport_s
  
  		err = request_firmware(&fw, fw_name, dev);
  		if (err) {
@@ -2750,7 +2750,7 @@ upstream submission.
  		}
 --- a/drivers/usb/serial/keyspan.c
 +++ b/drivers/usb/serial/keyspan.c
-@@ -1399,10 +1399,8 @@ static int keyspan_fake_startup(struct u
+@@ -1419,10 +1419,8 @@ static int keyspan_fake_startup(struct u
  		return 1;
  	}
  
@@ -2764,7 +2764,7 @@ upstream submission.
  
 --- a/drivers/usb/serial/keyspan_pda.c
 +++ b/drivers/usb/serial/keyspan_pda.c
-@@ -765,11 +765,8 @@ static int keyspan_pda_fake_startup(stru
+@@ -768,11 +768,8 @@ static int keyspan_pda_fake_startup(stru
  			__func__);
  		return -ENODEV;
  	}
@@ -2779,7 +2779,7 @@ upstream submission.
  	while (record) {
 --- a/drivers/usb/serial/ti_usb_3410_5052.c
 +++ b/drivers/usb/serial/ti_usb_3410_5052.c
-@@ -1747,10 +1747,8 @@ static int ti_download_firmware(struct t
+@@ -1750,10 +1750,8 @@ static int ti_download_firmware(struct t
  		}
  		status = request_firmware(&fw_p, buf, &dev->dev);
  	}
@@ -2793,7 +2793,7 @@ upstream submission.
  		release_firmware(fw_p);
 --- a/drivers/usb/serial/whiteheat.c
 +++ b/drivers/usb/serial/whiteheat.c
-@@ -301,18 +301,11 @@ static int whiteheat_firmware_download(s
+@@ -304,18 +304,11 @@ static int whiteheat_firmware_download(s
  	dbg("%s", __func__);
  
  	if (request_ihex_firmware(&firmware_fw, "whiteheat.fw",
@@ -2959,7 +2959,7 @@ upstream submission.
  	return err;
 --- a/sound/pci/emu10k1/emu10k1_main.c
 +++ b/sound/pci/emu10k1/emu10k1_main.c
-@@ -668,10 +668,8 @@ static int snd_emu1010_load_firmware(str
+@@ -673,10 +673,8 @@ static int snd_emu1010_load_firmware(str
  	const struct firmware *fw_entry;
  
  	err = request_firmware(&fw_entry, filename, &emu->pci->dev);
diff --git a/debian/patches/bugfix/all/revert-crypto-algif_skcipher-do-not-dereference-ctx-.patch b/debian/patches/bugfix/all/revert-crypto-algif_skcipher-do-not-dereference-ctx-.patch
deleted file mode 100644
index d1c8b12..0000000
--- a/debian/patches/bugfix/all/revert-crypto-algif_skcipher-do-not-dereference-ctx-.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From: Ben Hutchings <ben at decadent.org.uk>
-Date: Sun, 6 Mar 2016 22:07:37 +0000
-Subject: Revert "crypto: algif_skcipher - Do not dereference ctx without socket lock"
-
-This reverts commit c54ddfbb1b691d77c52b76ca6e13ca7082eb3b82, which
-was a poorly backported version of commit
-6454c2b83f719057069777132b13949e4c6b6350 upstream.  The small part I
-was able to backport makes no sense by itself.
----
- crypto/algif_skcipher.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/crypto/algif_skcipher.c b/crypto/algif_skcipher.c
-index da5d4ed238e2..45fa6bd9187b 100644
---- a/crypto/algif_skcipher.c
-+++ b/crypto/algif_skcipher.c
-@@ -249,11 +249,8 @@ static int skcipher_sendmsg(struct kiocb *unused, struct socket *sock,
- {
- 	struct sock *sk = sock->sk;
- 	struct alg_sock *ask = alg_sk(sk);
--	struct sock *psk = ask->parent;
--	struct alg_sock *pask = alg_sk(psk);
- 	struct skcipher_ctx *ctx = ask->private;
--	struct ablkcipher_tfm *skc = pask->private;
--	struct crypto_ablkcipher *tfm = skc->base;
-+	struct crypto_ablkcipher *tfm = crypto_ablkcipher_reqtfm(&ctx->req);
- 	unsigned ivsize = crypto_ablkcipher_ivsize(tfm);
- 	struct skcipher_sg_list *sgl;
- 	struct af_alg_control con = {};
diff --git a/debian/patches/debian/revert-libata-align-ata_device-s-id-on-a-cacheline.patch b/debian/patches/debian/revert-libata-align-ata_device-s-id-on-a-cacheline.patch
new file mode 100644
index 0000000..a0b6ce1
--- /dev/null
+++ b/debian/patches/debian/revert-libata-align-ata_device-s-id-on-a-cacheline.patch
@@ -0,0 +1,24 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Mon, 14 Mar 2016 17:47:16 +0000
+Subject: Revert "libata: Align ata_device's id on a cacheline"
+Forwarded: not-needed
+
+This reverts commit 2d5a6d0db3c83f5883b542fd3f79a2a80d319b14, which
+was commit 4ee34ea3a12396f35b26d90a094c75db95080baa upstream.  It's a
+real fix but we've lived with the problem for many years and it
+doesn't seem worth breaking ABI to fix it right now.
+---
+ include/linux/libata.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/include/linux/libata.h
++++ b/include/linux/libata.h
+@@ -657,7 +657,7 @@ struct ata_device {
+ 	union {
+ 		u16		id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
+ 		u32		gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
+-	} ____cacheline_aligned;
++	};
+ 
+ 	/* error history */
+ 	int			spdn_cnt;
diff --git a/debian/patches/debian/tracing-avoid-abi-change-in-3.2.79.patch b/debian/patches/debian/tracing-avoid-abi-change-in-3.2.79.patch
new file mode 100644
index 0000000..a347507
--- /dev/null
+++ b/debian/patches/debian/tracing-avoid-abi-change-in-3.2.79.patch
@@ -0,0 +1,25 @@
+From: Ben Hutchings <ben at decadent.org.uk>
+Date: Fri, 01 Apr 2016 02:32:56 +0100
+Subject: tracing: Avoid ABI change in 3.2.79
+Forwarded: not-needed
+
+Hide the new #include's from genksyms.
+
+---
+--- a/include/linux/tracepoint.h
++++ b/include/linux/tracepoint.h
+@@ -14,10 +14,14 @@
+  * See the file COPYING for more details.
+  */
+ 
++#ifndef __GENKSYMS__
+ #include <linux/smp.h>
++#endif
+ #include <linux/errno.h>
+ #include <linux/types.h>
++#ifndef __GENKSYMS__
+ #include <linux/cpumask.h>
++#endif
+ #include <linux/rcupdate.h>
+ #include <linux/jump_label.h>
+ 
diff --git a/debian/patches/features/all/drm/drm-3.4.patch b/debian/patches/features/all/drm/drm-3.4.patch
index 1b3d6b5..592c3d0 100644
--- a/debian/patches/features/all/drm/drm-3.4.patch
+++ b/debian/patches/features/all/drm/drm-3.4.patch
@@ -351,7 +351,7 @@ index 6d440fb894cf..325365f6d355 100644
  		return -EINVAL;
  
 diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
-index 20110b4ad791..c61e67222160 100644
+index 20110b4ad791..ed4b7481a865 100644
 --- a/drivers/gpu/drm/drm_crtc.c
 +++ b/drivers/gpu/drm/drm_crtc.c
 @@ -36,11 +36,7 @@
@@ -1282,21 +1282,7 @@ index 20110b4ad791..c61e67222160 100644
  	struct drm_connector **connector_set = NULL, *connector;
  	struct drm_framebuffer *fb = NULL;
  	struct drm_display_mode *mode = NULL;
-@@ -1505,11 +1836,8 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
- 	if (!drm_core_check_feature(dev, DRIVER_MODESET))
- 		return -EINVAL;
- 
--	/*
--	 * Universal plane src offsets are only 16.16, prevent havoc for
--	 * drivers using universal plane code internally.
--	 */
--	if (crtc_req->x & 0xffff0000 || crtc_req->y & 0xffff0000)
-+	/* For some reason crtc x/y offsets are signed internally. */
-+	if (crtc_req->x > INT_MAX || crtc_req->y > INT_MAX)
- 		return -ERANGE;
- 
- 	mutex_lock(&dev->mode_config.mutex);
-@@ -1527,14 +1855,12 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1527,14 +1858,12 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  		/* If we have a mode we need a framebuffer. */
  		/* If we pass -1, set the mode with the currently bound fb */
  		if (crtc_req->fb_id == -1) {
@@ -1316,7 +1302,7 @@ index 20110b4ad791..c61e67222160 100644
  		} else {
  			obj = drm_mode_object_find(dev, crtc_req->fb_id,
  						   DRM_MODE_OBJECT_FB);
-@@ -1548,8 +1874,30 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1548,8 +1877,30 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  		}
  
  		mode = drm_mode_create(dev);
@@ -1348,7 +1334,7 @@ index 20110b4ad791..c61e67222160 100644
  	}
  
  	if (crtc_req->count_connectors == 0 && mode) {
-@@ -1583,7 +1931,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1583,7 +1934,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  		}
  
  		for (i = 0; i < crtc_req->count_connectors; i++) {
@@ -1357,7 +1343,7 @@ index 20110b4ad791..c61e67222160 100644
  			if (get_user(out_id, &set_connectors_ptr[i])) {
  				ret = -EFAULT;
  				goto out;
-@@ -1617,6 +1965,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
+@@ -1617,6 +1968,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
  
  out:
  	kfree(connector_set);
@@ -1365,7 +1351,7 @@ index 20110b4ad791..c61e67222160 100644
  	mutex_unlock(&dev->mode_config.mutex);
  	return ret;
  }
-@@ -1667,6 +2016,42 @@ out:
+@@ -1667,6 +2019,42 @@ out:
  	return ret;
  }
  
@@ -1408,7 +1394,7 @@ index 20110b4ad791..c61e67222160 100644
  /**
   * drm_mode_addfb - add an FB to the graphics configuration
   * @inode: inode from the ioctl
-@@ -1687,18 +2072,27 @@ out:
+@@ -1687,18 +2075,27 @@ out:
  int drm_mode_addfb(struct drm_device *dev,
  		   void *data, struct drm_file *file_priv)
  {
@@ -1439,7 +1425,7 @@ index 20110b4ad791..c61e67222160 100644
  		return -EINVAL;
  
  	mutex_lock(&dev->mode_config.mutex);
-@@ -1706,6 +2100,138 @@ int drm_mode_addfb(struct drm_device *dev,
+@@ -1706,6 +2103,138 @@ int drm_mode_addfb(struct drm_device *dev,
  	/* TODO check buffer is sufficiently large */
  	/* TODO setup destructor callback */
  
@@ -1578,7 +1564,7 @@ index 20110b4ad791..c61e67222160 100644
  	fb = dev->mode_config.funcs->fb_create(dev, file_priv, r);
  	if (IS_ERR(fb)) {
  		DRM_ERROR("could not create framebuffer\n");
-@@ -1789,7 +2315,7 @@ out:
+@@ -1789,7 +2318,7 @@ out:
   * @arg: arg from ioctl
   *
   * LOCKING:
@@ -1587,7 +1573,7 @@ index 20110b4ad791..c61e67222160 100644
   *
   * Lookup the FB given its ID and return info about it.
   *
-@@ -1821,18 +2347,8 @@ int drm_mode_getfb(struct drm_device *dev,
+@@ -1821,18 +2350,8 @@ int drm_mode_getfb(struct drm_device *dev,
  	r->width = fb->width;
  	r->depth = fb->depth;
  	r->bpp = fb->bits_per_pixel;
@@ -1608,7 +1594,7 @@ index 20110b4ad791..c61e67222160 100644
  
  out:
  	mutex_unlock(&dev->mode_config.mutex);
-@@ -1863,7 +2379,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
+@@ -1863,7 +2382,7 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev,
  	fb = obj_to_fb(obj);
  
  	num_clips = r->num_clips;
@@ -1617,7 +1603,7 @@ index 20110b4ad791..c61e67222160 100644
  
  	if (!num_clips != !clips_ptr) {
  		ret = -EINVAL;
-@@ -1948,38 +2464,48 @@ void drm_fb_release(struct drm_file *priv)
+@@ -1948,38 +2467,48 @@ void drm_fb_release(struct drm_file *priv)
   *
   * Add @mode to @connector's user mode list.
   */
@@ -1685,7 +1671,7 @@ index 20110b4ad791..c61e67222160 100644
  }
  EXPORT_SYMBOL(drm_mode_attachmode_crtc);
  
-@@ -2058,9 +2584,14 @@ int drm_mode_attachmode_ioctl(struct drm_device *dev,
+@@ -2058,9 +2587,14 @@ int drm_mode_attachmode_ioctl(struct drm_device *dev,
  		goto out;
  	}
  
@@ -1702,7 +1688,7 @@ index 20110b4ad791..c61e67222160 100644
  out:
  	mutex_unlock(&dev->mode_config.mutex);
  	return ret;
-@@ -2101,7 +2632,12 @@ int drm_mode_detachmode_ioctl(struct drm_device *dev,
+@@ -2101,7 +2635,12 @@ int drm_mode_detachmode_ioctl(struct drm_device *dev,
  	}
  	connector = obj_to_connector(obj);
  
@@ -1716,7 +1702,7 @@ index 20110b4ad791..c61e67222160 100644
  	ret = drm_mode_detachmode(dev, connector, &mode);
  out:
  	mutex_unlock(&dev->mode_config.mutex);
-@@ -2112,6 +2648,7 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2112,6 +2651,7 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  					 const char *name, int num_values)
  {
  	struct drm_property *property = NULL;
@@ -1724,7 +1710,7 @@ index 20110b4ad791..c61e67222160 100644
  
  	property = kzalloc(sizeof(struct drm_property), GFP_KERNEL);
  	if (!property)
-@@ -2123,7 +2660,10 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2123,7 +2663,10 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  			goto fail;
  	}
  
@@ -1736,7 +1722,7 @@ index 20110b4ad791..c61e67222160 100644
  	property->flags = flags;
  	property->num_values = num_values;
  	INIT_LIST_HEAD(&property->enum_blob_list);
-@@ -2136,11 +2676,59 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
+@@ -2136,11 +2679,59 @@ struct drm_property *drm_property_create(struct drm_device *dev, int flags,
  	list_add_tail(&property->head, &dev->mode_config.property_list);
  	return property;
  fail:
@@ -1796,7 +1782,7 @@ index 20110b4ad791..c61e67222160 100644
  int drm_property_add_enum(struct drm_property *property, int index,
  			  uint64_t value, const char *name)
  {
-@@ -2259,7 +2847,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2259,7 +2850,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	struct drm_property_enum *prop_enum;
  	struct drm_mode_property_enum __user *enum_ptr;
  	struct drm_property_blob *prop_blob;
@@ -1805,7 +1791,7 @@ index 20110b4ad791..c61e67222160 100644
  	uint64_t __user *values_ptr;
  	uint32_t __user *blob_length_ptr;
  
-@@ -2289,7 +2877,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2289,7 +2880,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	out_resp->flags = property->flags;
  
  	if ((out_resp->count_values >= value_count) && value_count) {
@@ -1814,7 +1800,7 @@ index 20110b4ad791..c61e67222160 100644
  		for (i = 0; i < value_count; i++) {
  			if (copy_to_user(values_ptr + i, &property->values[i], sizeof(uint64_t))) {
  				ret = -EFAULT;
-@@ -2302,7 +2890,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2302,7 +2893,7 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	if (property->flags & DRM_MODE_PROP_ENUM) {
  		if ((out_resp->count_enum_blobs >= enum_count) && enum_count) {
  			copied = 0;
@@ -1823,7 +1809,7 @@ index 20110b4ad791..c61e67222160 100644
  			list_for_each_entry(prop_enum, &property->enum_blob_list, head) {
  
  				if (copy_to_user(&enum_ptr[copied].value, &prop_enum->value, sizeof(uint64_t))) {
-@@ -2324,8 +2912,8 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
+@@ -2324,8 +2915,8 @@ int drm_mode_getproperty_ioctl(struct drm_device *dev,
  	if (property->flags & DRM_MODE_PROP_BLOB) {
  		if ((out_resp->count_enum_blobs >= blob_count) && blob_count) {
  			copied = 0;
@@ -1834,7 +1820,7 @@ index 20110b4ad791..c61e67222160 100644
  
  			list_for_each_entry(prop_blob, &property->enum_blob_list, head) {
  				if (put_user(prop_blob->base.id, blob_id_ptr + copied)) {
-@@ -2352,6 +2940,7 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
+@@ -2352,6 +2943,7 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
  							  void *data)
  {
  	struct drm_property_blob *blob;
@@ -1842,7 +1828,7 @@ index 20110b4ad791..c61e67222160 100644
  
  	if (!length || !data)
  		return NULL;
-@@ -2360,13 +2949,16 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
+@@ -2360,13 +2952,16 @@ static struct drm_property_blob *drm_property_create_blob(struct drm_device *dev
  	if (!blob)
  		return NULL;
  
@@ -1862,7 +1848,7 @@ index 20110b4ad791..c61e67222160 100644
  	list_add_tail(&blob->head, &dev->mode_config.property_blob_list);
  	return blob;
  }
-@@ -2386,7 +2978,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2386,7 +2981,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
  	struct drm_mode_get_blob *out_resp = data;
  	struct drm_property_blob *blob;
  	int ret = 0;
@@ -1871,7 +1857,7 @@ index 20110b4ad791..c61e67222160 100644
  
  	if (!drm_core_check_feature(dev, DRIVER_MODESET))
  		return -EINVAL;
-@@ -2400,7 +2992,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
+@@ -2400,7 +2995,7 @@ int drm_mode_getblob_ioctl(struct drm_device *dev,
  	blob = obj_to_blob(obj);
  
  	if (out_resp->length == blob->length) {
@@ -1880,7 +1866,7 @@ index 20110b4ad791..c61e67222160 100644
  		if (copy_to_user(blob_ptr, blob->data, blob->length)){
  			ret = -EFAULT;
  			goto done;
-@@ -2545,7 +3137,7 @@ void drm_mode_connector_detach_encoder(struct drm_connector *connector,
+@@ -2545,7 +3140,7 @@ void drm_mode_connector_detach_encoder(struct drm_connector *connector,
  }
  EXPORT_SYMBOL(drm_mode_connector_detach_encoder);
  
@@ -1889,7 +1875,7 @@ index 20110b4ad791..c61e67222160 100644
  				  int gamma_size)
  {
  	crtc->gamma_size = gamma_size;
-@@ -2553,10 +3145,10 @@ bool drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
+@@ -2553,10 +3148,10 @@ bool drm_mode_crtc_set_gamma_size(struct drm_crtc *crtc,
  	crtc->gamma_store = kzalloc(gamma_size * sizeof(uint16_t) * 3, GFP_KERNEL);
  	if (!crtc->gamma_store) {
  		crtc->gamma_size = 0;
@@ -1902,7 +1888,7 @@ index 20110b4ad791..c61e67222160 100644
  }
  EXPORT_SYMBOL(drm_mode_crtc_set_gamma_size);
  
-@@ -2702,6 +3294,18 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
+@@ -2702,6 +3297,18 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
  		goto out;
  	fb = obj_to_fb(obj);
  
@@ -1921,7 +1907,7 @@ index 20110b4ad791..c61e67222160 100644
  	if (page_flip->flags & DRM_MODE_PAGE_FLIP_EVENT) {
  		ret = -ENOMEM;
  		spin_lock_irqsave(&dev->event_lock, flags);
-@@ -2731,10 +3335,12 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
+@@ -2731,10 +3338,12 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
  
  	ret = crtc->funcs->page_flip(crtc, fb, e);
  	if (ret) {
@@ -1938,7 +1924,7 @@ index 20110b4ad791..c61e67222160 100644
  	}
  
  out:
-@@ -2794,3 +3400,72 @@ int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
+@@ -2794,3 +3403,72 @@ int drm_mode_destroy_dumb_ioctl(struct drm_device *dev,
  
  	return dev->driver->dumb_destroy(file_priv, dev, args->handle);
  }
@@ -49831,7 +49817,7 @@ index 497da2af4f64..c60100d48ceb 100644
  	intel_encoder->crtc_mask = (1 << 0) | (1 << 1) | (1 << 2);
  
 diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
-index d30ccccb9d73..8fdc95700218 100644
+index e035eaf88454..8fdc95700218 100644
 --- a/drivers/gpu/drm/i915/intel_i2c.c
 +++ b/drivers/gpu/drm/i915/intel_i2c.c
 @@ -37,7 +37,7 @@
@@ -50182,6 +50168,15 @@ index d30ccccb9d73..8fdc95700218 100644
  	}
  
  	intel_i2c_reset(dev_priv->dev);
+@@ -410,7 +399,7 @@ int intel_setup_gmbus(struct drm_device *dev)
+ 	return 0;
+ 
+ err:
+-	while (i--) {
++	while (--i) {
+ 		struct intel_gmbus *bus = &dev_priv->gmbus[i];
+ 		i2c_del_adapter(&bus->adapter);
+ 	}
 @@ -430,19 +419,8 @@ void intel_gmbus_force_bit(struct i2c_adapter *adapter, bool force_bit)
  {
  	struct intel_gmbus *bus = to_intel_gmbus(adapter);
@@ -86114,27 +86109,10 @@ index b6e18c8db9f5..9c6b29a41927 100644
  			tmp = RREG32_PLL(RADEON_VCLK_ECP_CNTL);
  			tmp &= ~(RADEON_PIXCLK_ALWAYS_ONb |
 diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
-index 87a677e91927..cf5dd63a95c3 100644
+index 87a677e91927..b72eb507df64 100644
 --- a/drivers/gpu/drm/radeon/radeon_combios.c
 +++ b/drivers/gpu/drm/radeon/radeon_combios.c
-@@ -1259,15 +1259,10 @@ struct radeon_encoder_lvds *radeon_combios_get_lvds_info(struct radeon_encoder
- 
- 			if ((RBIOS16(tmp) == lvds->native_mode.hdisplay) &&
- 			    (RBIOS16(tmp + 2) == lvds->native_mode.vdisplay)) {
--				u32 hss = (RBIOS16(tmp + 21) - RBIOS16(tmp + 19) - 1) * 8;
--
--				if (hss > lvds->native_mode.hdisplay)
--					hss = (10 - 1) * 8;
--
- 				lvds->native_mode.htotal = lvds->native_mode.hdisplay +
- 					(RBIOS16(tmp + 17) - RBIOS16(tmp + 19)) * 8;
- 				lvds->native_mode.hsync_start = lvds->native_mode.hdisplay +
--					hss;
-+					(RBIOS16(tmp + 21) - RBIOS16(tmp + 19) - 1) * 8;
- 				lvds->native_mode.hsync_end = lvds->native_mode.hsync_start +
- 					(RBIOS8(tmp + 23) * 8);
- 
-@@ -2927,7 +2922,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
+@@ -2927,7 +2927,7 @@ bool radeon_combios_external_tmds_setup(struct drm_encoder *encoder)
  					case 4:
  						val = RBIOS16(index);
  						index += 2;
@@ -86143,7 +86121,7 @@ index 87a677e91927..cf5dd63a95c3 100644
  						break;
  					case 6:
  						slave_addr = id & 0xff;
-@@ -3126,7 +3121,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
+@@ -3126,7 +3126,7 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
  					udelay(150);
  					break;
  				case 2:
@@ -86152,7 +86130,7 @@ index 87a677e91927..cf5dd63a95c3 100644
  					break;
  				case 3:
  					while (tmp--) {
-@@ -3157,13 +3152,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
+@@ -3157,13 +3157,13 @@ static void combios_parse_pll_table(struct drm_device *dev, uint16_t offset)
  						/*mclk_cntl |= 0x00001111;*//* ??? */
  						WREG32_PLL(RADEON_MCLK_CNTL,
  							   mclk_cntl);
@@ -86168,7 +86146,7 @@ index 87a677e91927..cf5dd63a95c3 100644
  					}
  					break;
  				default:
-@@ -3399,14 +3394,6 @@ void radeon_combios_asic_init(struct drm_device *dev)
+@@ -3399,14 +3399,6 @@ void radeon_combios_asic_init(struct drm_device *dev)
  	    rdev->pdev->subsystem_device == 0x30ae)
  		return;
  
@@ -86801,7 +86779,7 @@ index 213210984764..8fb6f41bd1f2 100644
  		struct drm_crtc *crtc_p;
  
 diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
-index e51f09f7a175..2f555d782248 100644
+index 8cde84b666d5..2f555d782248 100644
 --- a/drivers/gpu/drm/radeon/radeon_device.c
 +++ b/drivers/gpu/drm/radeon/radeon_device.c
 @@ -89,6 +89,10 @@ static const char radeon_family_name[][16] = {
@@ -86940,15 +86918,7 @@ index e51f09f7a175..2f555d782248 100644
  	/* reset hpd state */
  	radeon_hpd_init(rdev);
  	/* blat the mode back in */
-@@ -960,7 +989,6 @@ int radeon_resume_kms(struct drm_device *dev)
- 	}
- 
- 	drm_kms_helper_poll_enable(dev);
--	drm_helper_hpd_irq_event(dev);
- 	return 0;
- }
- 
-@@ -1000,36 +1028,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
+@@ -999,36 +1028,29 @@ int radeon_gpu_reset(struct radeon_device *rdev)
  /*
   * Debugfs
   */
@@ -86991,7 +86961,7 @@ index e51f09f7a175..2f555d782248 100644
  #if defined(CONFIG_DEBUG_FS)
  	drm_debugfs_create_files(files, nfiles,
  				 rdev->ddev->control->debugfs_root,
-@@ -1041,6 +1062,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
+@@ -1040,6 +1062,22 @@ int radeon_debugfs_add_files(struct radeon_device *rdev,
  	return 0;
  }
  
@@ -87014,7 +86984,7 @@ index e51f09f7a175..2f555d782248 100644
  #if defined(CONFIG_DEBUG_FS)
  int radeon_debugfs_init(struct drm_minor *minor)
  {
-@@ -1049,11 +1086,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
+@@ -1048,11 +1086,5 @@ int radeon_debugfs_init(struct drm_minor *minor)
  
  void radeon_debugfs_cleanup(struct drm_minor *minor)
  {
diff --git a/debian/patches/series b/debian/patches/series
index 2c01ecd..cf467af 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1165,8 +1165,7 @@ debian/enclosure-fix-abi-change-in-2.6.32.70.patch
 debian/fix-abi-changes-for-cve-2013-4312-fix.patch
 bugfix/all/aufs-tiny-extract-a-new-func-xino_fwrite_wkq.patch
 bugfix/all/aufs-for-4.3-xino-handles-eintr-from-the-dying-proce.patch
-bugfix/all/af_unix-guard-against-other-sk-in-unix_dgram_sendmsg.patch
 debian/hrtimer-fix-abi-change-in-3.2.78.patch
-bugfix/all/crypto-blk-giv-cipher-set-has_setkey.patch
 debian/crypto-fix-abi-change-in-3.2.77.patch
-bugfix/all/revert-crypto-algif_skcipher-do-not-dereference-ctx-.patch
+debian/revert-libata-align-ata_device-s-id-on-a-cacheline.patch
+debian/tracing-avoid-abi-change-in-3.2.79.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