[linux] 01/02: Update to 4.9-rc2

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Tue Nov 1 15:39:58 UTC 2016


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

benh pushed a commit to branch master
in repository linux.

commit 4ac6860c3b2ddb62d13b143a196161f85aa36a0e
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Sat Oct 29 00:36:56 2016 +0100

    Update to 4.9-rc2
    
    Drop/refresh patches as appropriate.
---
 debian/changelog                                   |   9 +
 debian/config/defines                              |   2 +-
 ...emove-redundant-log-messages-from-drivers.patch |  62 +--
 ...lear-sgid-bit-when-setting-file-permissio.patch | 433 ---------------------
 ...s-required-for-drm-and-kms-on-r600-onward.patch |   6 +-
 debian/patches/features/all/aufs4/aufs4-base.patch |  48 +--
 debian/patches/features/all/aufs4/aufs4-mmap.patch |  77 ++--
 .../features/all/aufs4/aufs4-standalone.patch      |  92 ++---
 ...e-acpi-table-override-if-securelevel-is-s.patch |  11 +-
 ...v-mem-and-dev-kmem-when-securelevel-is-se.patch |  13 +-
 ...ts-imx53-add-support-for-usb-armory-board.patch | 262 -------------
 .../x86-make-x32-syscall-support-conditional.patch |  14 +-
 debian/patches/series                              |   2 -
 13 files changed, 134 insertions(+), 897 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 3ebda2f..cfd6ed1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+linux (4.9~rc2-1~exp1) UNRELEASED; urgency=medium
+
+  * New upstream release candidate
+
+  [ Ben Hutchings ]
+  * [rt] Disable until it is updated for 4.9 or later
+
+ -- Ben Hutchings <ben at decadent.org.uk>  Sat, 29 Oct 2016 00:08:55 +0100
+
 linux (4.8.5-1) unstable; urgency=medium
 
   * New upstream stable update:
diff --git a/debian/config/defines b/debian/config/defines
index a8af916..5b35a8d 100644
--- a/debian/config/defines
+++ b/debian/config/defines
@@ -47,7 +47,7 @@ debug-info: true
 signed-modules: true
 
 [featureset-rt_base]
-enabled: true
+enabled: false
 
 [description]
 part-long-up: This kernel is not suitable for SMP (multi-processor,
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 47dbce3..a63fc4a 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
@@ -53,7 +53,7 @@ upstream submission.
  	/* disable MPU */
 --- a/arch/x86/kernel/cpu/microcode/amd.c
 +++ b/arch/x86/kernel/cpu/microcode/amd.c
-@@ -900,10 +900,8 @@ static enum ucode_state request_microcod
+@@ -917,10 +917,8 @@ static enum ucode_state request_microcod
  	if (c->x86 >= 0x15)
  		snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
  
@@ -92,11 +92,11 @@ upstream submission.
  	return err;
 -    }
  
-     fw_data = (__le32 *) firmware->data;
+     fw_data = (const __le32 *)firmware->data;
      fw_size = firmware->size / sizeof(u32);
 --- a/drivers/bluetooth/ath3k.c
 +++ b/drivers/bluetooth/ath3k.c
-@@ -420,10 +420,8 @@ static int ath3k_load_patch(struct usb_d
+@@ -422,10 +422,8 @@ static int ath3k_load_patch(struct usb_d
  		 le32_to_cpu(fw_version.rom_version));
  
  	ret = request_firmware(&firmware, filename, &udev->dev);
@@ -108,7 +108,7 @@ upstream submission.
  
  	pt_rom_version = get_unaligned_le32(firmware->data +
  					    firmware->size - 8);
-@@ -483,10 +481,8 @@ static int ath3k_load_syscfg(struct usb_
+@@ -485,10 +483,8 @@ static int ath3k_load_syscfg(struct usb_
  		le32_to_cpu(fw_version.rom_version), clk_value, ".dfu");
  
  	ret = request_firmware(&firmware, filename, &udev->dev);
@@ -122,15 +122,15 @@ upstream submission.
  	release_firmware(firmware);
 --- a/drivers/bluetooth/bcm203x.c
 +++ b/drivers/bluetooth/bcm203x.c
-@@ -191,7 +191,6 @@ static int bcm203x_probe(struct usb_inte
- 	}
+@@ -189,7 +189,6 @@ static int bcm203x_probe(struct usb_inte
+ 		return -ENOMEM;
  
  	if (request_firmware(&firmware, "BCM2033-MD.hex", &udev->dev) < 0) {
 -		BT_ERR("Mini driver request failed");
  		usb_free_urb(data->urb);
  		return -EIO;
  	}
-@@ -216,7 +215,6 @@ static int bcm203x_probe(struct usb_inte
+@@ -214,7 +213,6 @@ static int bcm203x_probe(struct usb_inte
  	release_firmware(firmware);
  
  	if (request_firmware(&firmware, "BCM2033-FW.bin", &udev->dev) < 0) {
@@ -203,7 +203,7 @@ upstream submission.
  		       fw->size, fw_name);
 --- a/drivers/dma/imx-sdma.c
 +++ b/drivers/dma/imx-sdma.c
-@@ -1408,11 +1408,8 @@ static void sdma_load_firmware(const str
+@@ -1433,11 +1433,8 @@ static void sdma_load_firmware(const str
  	const struct sdma_script_start_addrs *addr;
  	unsigned short *ram_code;
  
@@ -233,7 +233,7 @@ upstream submission.
  	where = 0;
 --- a/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
 +++ b/drivers/gpu/drm/nouveau/nvkm/engine/gr/gf100.c
-@@ -1740,10 +1740,8 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, co
+@@ -1765,10 +1765,8 @@ gf100_gr_ctor_fw(struct gf100_gr *gr, co
  	int ret;
  
  	ret = nvkm_firmware_get(device, fwname, &fw);
@@ -316,7 +316,7 @@ upstream submission.
  	ret = qib_ibsd_ucode_loaded(dd->pport, fw);
 --- a/drivers/input/touchscreen/atmel_mxt_ts.c
 +++ b/drivers/input/touchscreen/atmel_mxt_ts.c
-@@ -2193,10 +2193,8 @@ static int mxt_load_fw(struct device *de
+@@ -2714,10 +2714,8 @@ static int mxt_load_fw(struct device *de
  	int ret;
  
  	ret = request_firmware(&fw, fn, dev);
@@ -765,7 +765,7 @@ upstream submission.
  	b[0] = 0xaa;
 --- a/drivers/media/usb/ttusb-dec/ttusb_dec.c
 +++ b/drivers/media/usb/ttusb-dec/ttusb_dec.c
-@@ -1290,11 +1290,8 @@ static int ttusb_dec_boot_dsp(struct ttu
+@@ -1296,11 +1296,8 @@ static int ttusb_dec_boot_dsp(struct ttu
  	dprintk("%s\n", __func__);
  
  	result = request_firmware(&fw_entry, dec->firmware_name, &dec->udev->dev);
@@ -930,7 +930,7 @@ upstream submission.
  		printk(KERN_ERR "ERROR: Firmware size mismatch "
 --- a/drivers/media/pci/cx23885/cx23885-cards.c
 +++ b/drivers/media/pci/cx23885/cx23885-cards.c
-@@ -2279,11 +2279,7 @@ void cx23885_card_setup(struct cx23885_d
+@@ -2341,11 +2341,7 @@ void cx23885_card_setup(struct cx23885_d
  				cinfo.rev, filename);
  
  		ret = request_firmware(&fw, filename, &dev->pci->dev);
@@ -975,7 +975,7 @@ upstream submission.
  		pr_err("Firmware size mismatch (have %zd, expected %d)\n",
 --- a/drivers/media/usb/gspca/vicam.c
 +++ b/drivers/media/usb/gspca/vicam.c
-@@ -244,10 +244,8 @@ static int sd_init(struct gspca_dev *gsp
+@@ -243,10 +243,8 @@ static int sd_init(struct gspca_dev *gsp
  
  	ret = request_ihex_firmware(&fw, VICAM_FIRMWARE,
  				    &gspca_dev->dev->dev);
@@ -1032,7 +1032,7 @@ upstream submission.
  
 --- a/drivers/media/usb/s2255/s2255drv.c
 +++ b/drivers/media/usb/s2255/s2255drv.c
-@@ -2302,10 +2302,8 @@ static int s2255_probe(struct usb_interf
+@@ -2297,10 +2297,8 @@ static int s2255_probe(struct usb_interf
  	}
  	/* load the first chunk */
  	if (request_firmware(&dev->fw_data->fw,
@@ -1185,7 +1185,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
-@@ -13466,11 +13466,8 @@ static int bnx2x_init_firmware(struct bn
+@@ -13489,11 +13489,8 @@ static int bnx2x_init_firmware(struct bn
  	BNX2X_DEV_INFO("Loading %s\n", fw_file_name);
  
  	rc = request_firmware(&bp->firmware, fw_file_name, &bp->pdev->dev);
@@ -1338,7 +1338,7 @@ upstream submission.
  			       fw->size, fw_name[predef]);
 --- a/drivers/net/usb/kaweth.c
 +++ b/drivers/net/usb/kaweth.c
-@@ -396,10 +396,8 @@ static int kaweth_download_firmware(stru
+@@ -392,10 +392,8 @@ static int kaweth_download_firmware(stru
  	int ret;
  
  	ret = request_firmware(&fw, fwname, &kaweth->dev->dev);
@@ -1405,7 +1405,7 @@ upstream submission.
  
 --- a/drivers/net/wireless/ath/carl9170/usb.c
 +++ b/drivers/net/wireless/ath/carl9170/usb.c
-@@ -1033,7 +1033,6 @@ static void carl9170_usb_firmware_step2(
+@@ -1031,7 +1031,6 @@ static void carl9170_usb_firmware_step2(
  		return;
  	}
  
@@ -1547,7 +1547,7 @@ upstream submission.
  		 name_pre, tag);
 --- a/drivers/net/wireless/marvell/libertas_tf/if_usb.c
 +++ b/drivers/net/wireless/marvell/libertas_tf/if_usb.c
-@@ -824,8 +824,6 @@ static int if_usb_prog_firmware(struct i
+@@ -818,8 +818,6 @@ static int if_usb_prog_firmware(struct i
  	kernel_param_lock(THIS_MODULE);
  	ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev);
  	if (ret < 0) {
@@ -1558,7 +1558,7 @@ upstream submission.
  	}
 --- a/drivers/net/wireless/marvell/mwifiex/main.c
 +++ b/drivers/net/wireless/marvell/mwifiex/main.c
-@@ -515,11 +515,8 @@ static void mwifiex_fw_dpc(const struct
+@@ -524,11 +524,8 @@ static void mwifiex_fw_dpc(const struct
  	bool init_failed = false;
  	struct wireless_dev *wdev;
  
@@ -1652,7 +1652,7 @@ upstream submission.
  
 --- a/drivers/net/wireless/intersil/orinoco/orinoco_usb.c
 +++ b/drivers/net/wireless/intersil/orinoco/orinoco_usb.c
-@@ -1669,7 +1669,6 @@ static int ezusb_probe(struct usb_interf
+@@ -1667,7 +1667,6 @@ static int ezusb_probe(struct usb_interf
  		if (ezusb_firmware_download(upriv, &firmware) < 0)
  			goto error;
  	} else {
@@ -1773,7 +1773,7 @@ upstream submission.
  		wl1251_error("nvs size is not multiple of 32 bits: %zu",
 --- a/drivers/net/wireless/ti/wlcore/main.c
 +++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -747,10 +747,8 @@ static int wl12xx_fetch_firmware(struct
+@@ -756,10 +756,8 @@ static int wl12xx_fetch_firmware(struct
  
  	ret = request_firmware(&fw, fw_name, wl->dev);
  
@@ -1892,7 +1892,7 @@ upstream submission.
  	}
 --- a/drivers/scsi/ipr.c
 +++ b/drivers/scsi/ipr.c
-@@ -4014,10 +4014,8 @@ static ssize_t ipr_store_update_fw(struc
+@@ -4041,10 +4041,8 @@ static ssize_t ipr_store_update_fw(struc
  	if (endline)
  		*endline = '\0';
  
@@ -1930,7 +1930,7 @@ upstream submission.
  	}
 --- a/drivers/scsi/qla2xxx/qla_init.c
 +++ b/drivers/scsi/qla2xxx/qla_init.c
-@@ -5637,8 +5637,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
+@@ -5656,8 +5656,6 @@ qla2x00_load_risc(scsi_qla_host_t *vha,
  	/* Load firmware blob. */
  	blob = qla2x00_request_firmware(vha);
  	if (!blob) {
@@ -1939,7 +1939,7 @@ upstream submission.
  		ql_log(ql_log_info, vha, 0x0084,
  		    "Firmware images can be retrieved from: "QLA_FW_URL ".\n");
  		return QLA_FUNCTION_FAILED;
-@@ -5740,8 +5738,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
+@@ -5759,8 +5757,6 @@ qla24xx_load_risc_blob(scsi_qla_host_t *
  	/* Load firmware blob. */
  	blob = qla2x00_request_firmware(vha);
  	if (!blob) {
@@ -1965,7 +1965,7 @@ upstream submission.
  	if (qla82xx_validate_firmware_blob(vha,
 --- a/drivers/scsi/qla2xxx/qla_os.c
 +++ b/drivers/scsi/qla2xxx/qla_os.c
-@@ -5539,8 +5539,6 @@ qla2x00_request_firmware(scsi_qla_host_t
+@@ -5620,8 +5620,6 @@ qla2x00_request_firmware(scsi_qla_host_t
  		goto out;
  
  	if (request_firmware(&blob->fw, blob->name, &ha->pdev->dev)) {
@@ -2086,7 +2086,7 @@ upstream submission.
  MODULE_FIRMWARE("rtlwifi/rtl8712u.bin");
 --- a/drivers/staging/slicoss/slicoss.c
 +++ b/drivers/staging/slicoss/slicoss.c
-@@ -404,11 +404,8 @@ static int slic_card_download_gbrcv(stru
+@@ -376,11 +376,8 @@ static int slic_card_download_gbrcv(stru
  	}
  
  	ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@@ -2099,7 +2099,7 @@ upstream submission.
  
  	rcvucodelen = *(u32 *)(fw->data + index);
  	index += 4;
-@@ -482,11 +479,8 @@ static int slic_card_download(struct ada
+@@ -454,11 +451,8 @@ static int slic_card_download(struct ada
  		return -ENOENT;
  	}
  	ret = request_firmware(&fw, file, &adapter->pcidev->dev);
@@ -2130,7 +2130,7 @@ upstream submission.
  	if (!buffer)
 --- a/drivers/tty/cyclades.c
 +++ b/drivers/tty/cyclades.c
-@@ -3499,10 +3499,8 @@ static int cyz_load_fw(struct pci_dev *p
+@@ -3495,10 +3495,8 @@ static int cyz_load_fw(struct pci_dev *p
  	int retval;
  
  	retval = request_firmware(&fw, "cyzfirm.bin", &pdev->dev);
@@ -2367,7 +2367,7 @@ upstream submission.
  
 --- a/drivers/usb/serial/ti_usb_3410_5052.c
 +++ b/drivers/usb/serial/ti_usb_3410_5052.c
-@@ -1536,10 +1536,8 @@ static int ti_download_firmware(struct t
+@@ -1702,10 +1702,8 @@ static int ti_download_firmware(struct t
  	}
  
  check_firmware:
@@ -2526,7 +2526,7 @@ upstream submission.
  			   filename, emu->firmware->size);
 --- a/sound/pci/hda/hda_intel.c
 +++ b/sound/pci/hda/hda_intel.c
-@@ -1781,10 +1781,8 @@ static void azx_firmware_cb(const struct
+@@ -1812,10 +1812,8 @@ static void azx_firmware_cb(const struct
  	struct azx *chip = card->private_data;
  	struct pci_dev *pci = chip->pci;
  
@@ -2611,7 +2611,7 @@ upstream submission.
  			"too short firmware size %d (expected %d)\n",
 --- a/sound/soc/codecs/wm2000.c
 +++ b/sound/soc/codecs/wm2000.c
-@@ -889,10 +889,8 @@ static int wm2000_i2c_probe(struct i2c_c
+@@ -891,10 +891,8 @@ static int wm2000_i2c_probe(struct i2c_c
  	}
  
  	ret = request_firmware(&fw, filename, &i2c->dev);
diff --git a/debian/patches/bugfix/all/posix_acl-clear-sgid-bit-when-setting-file-permissio.patch b/debian/patches/bugfix/all/posix_acl-clear-sgid-bit-when-setting-file-permissio.patch
deleted file mode 100644
index 3241816..0000000
--- a/debian/patches/bugfix/all/posix_acl-clear-sgid-bit-when-setting-file-permissio.patch
+++ /dev/null
@@ -1,433 +0,0 @@
-From: Jan Kara <jack at suse.cz>
-Date: Mon, 19 Sep 2016 17:39:09 +0200
-Subject: posix_acl: Clear SGID bit when setting file permissions
-Origin: https://git.kernel.org/linus/073931017b49d9458aa351605b43a7e34598caef
-
-When file permissions are modified via chmod(2) and the user is not in
-the owning group or capable of CAP_FSETID, the setgid bit is cleared in
-inode_change_ok().  Setting a POSIX ACL via setxattr(2) sets the file
-permissions as well as the new ACL, but doesn't clear the setgid bit in
-a similar way; this allows to bypass the check in chmod(2).  Fix that.
-
-References: CVE-2016-7097
-Reviewed-by: Christoph Hellwig <hch at lst.de>
-Reviewed-by: Jeff Layton <jlayton at redhat.com>
-Signed-off-by: Jan Kara <jack at suse.cz>
-Signed-off-by: Andreas Gruenbacher <agruenba at redhat.com>
----
- fs/9p/acl.c               | 40 +++++++++++++++++-----------------------
- fs/btrfs/acl.c            |  6 ++----
- fs/ceph/acl.c             |  6 ++----
- fs/ext2/acl.c             | 12 ++++--------
- fs/ext4/acl.c             | 12 ++++--------
- fs/f2fs/acl.c             |  6 ++----
- fs/gfs2/acl.c             | 12 +++---------
- fs/hfsplus/posix_acl.c    |  4 ++--
- fs/jffs2/acl.c            |  9 ++++-----
- fs/jfs/acl.c              |  6 ++----
- fs/ocfs2/acl.c            | 10 ++++------
- fs/orangefs/acl.c         | 15 +++++----------
- fs/posix_acl.c            | 31 +++++++++++++++++++++++++++++++
- fs/reiserfs/xattr_acl.c   |  8 ++------
- fs/xfs/xfs_acl.c          | 13 ++++---------
- include/linux/posix_acl.h |  1 +
- 16 files changed, 89 insertions(+), 102 deletions(-)
-
-diff --git a/fs/9p/acl.c b/fs/9p/acl.c
-index 5b6a1743ea17..b3c2cc79c20d 100644
---- a/fs/9p/acl.c
-+++ b/fs/9p/acl.c
-@@ -276,32 +276,26 @@ static int v9fs_xattr_set_acl(const struct xattr_handler *handler,
- 	switch (handler->flags) {
- 	case ACL_TYPE_ACCESS:
- 		if (acl) {
--			umode_t mode = inode->i_mode;
--			retval = posix_acl_equiv_mode(acl, &mode);
--			if (retval < 0)
-+			struct iattr iattr;
-+
-+			retval = posix_acl_update_mode(inode, &iattr.ia_mode, &acl);
-+			if (retval)
- 				goto err_out;
--			else {
--				struct iattr iattr;
--				if (retval == 0) {
--					/*
--					 * ACL can be represented
--					 * by the mode bits. So don't
--					 * update ACL.
--					 */
--					acl = NULL;
--					value = NULL;
--					size = 0;
--				}
--				/* Updte the mode bits */
--				iattr.ia_mode = ((mode & S_IALLUGO) |
--						 (inode->i_mode & ~S_IALLUGO));
--				iattr.ia_valid = ATTR_MODE;
--				/* FIXME should we update ctime ?
--				 * What is the following setxattr update the
--				 * mode ?
-+			if (!acl) {
-+				/*
-+				 * ACL can be represented
-+				 * by the mode bits. So don't
-+				 * update ACL.
- 				 */
--				v9fs_vfs_setattr_dotl(dentry, &iattr);
-+				value = NULL;
-+				size = 0;
- 			}
-+			iattr.ia_valid = ATTR_MODE;
-+			/* FIXME should we update ctime ?
-+			 * What is the following setxattr update the
-+			 * mode ?
-+			 */
-+			v9fs_vfs_setattr_dotl(dentry, &iattr);
- 		}
- 		break;
- 	case ACL_TYPE_DEFAULT:
-diff --git a/fs/btrfs/acl.c b/fs/btrfs/acl.c
-index 53bb7af4e5f0..247b8dfaf6e5 100644
---- a/fs/btrfs/acl.c
-+++ b/fs/btrfs/acl.c
-@@ -79,11 +79,9 @@ static int __btrfs_set_acl(struct btrfs_trans_handle *trans,
- 	case ACL_TYPE_ACCESS:
- 		name = XATTR_NAME_POSIX_ACL_ACCESS;
- 		if (acl) {
--			ret = posix_acl_equiv_mode(acl, &inode->i_mode);
--			if (ret < 0)
-+			ret = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+			if (ret)
- 				return ret;
--			if (ret == 0)
--				acl = NULL;
- 		}
- 		ret = 0;
- 		break;
-diff --git a/fs/ceph/acl.c b/fs/ceph/acl.c
-index 4f67227f69a5..d0b6b342dff9 100644
---- a/fs/ceph/acl.c
-+++ b/fs/ceph/acl.c
-@@ -95,11 +95,9 @@ int ceph_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 	case ACL_TYPE_ACCESS:
- 		name = XATTR_NAME_POSIX_ACL_ACCESS;
- 		if (acl) {
--			ret = posix_acl_equiv_mode(acl, &new_mode);
--			if (ret < 0)
-+			ret = posix_acl_update_mode(inode, &new_mode, &acl);
-+			if (ret)
- 				goto out;
--			if (ret == 0)
--				acl = NULL;
- 		}
- 		break;
- 	case ACL_TYPE_DEFAULT:
-diff --git a/fs/ext2/acl.c b/fs/ext2/acl.c
-index 42f1d1814083..e725aa0890e0 100644
---- a/fs/ext2/acl.c
-+++ b/fs/ext2/acl.c
-@@ -190,15 +190,11 @@ ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 		case ACL_TYPE_ACCESS:
- 			name_index = EXT2_XATTR_INDEX_POSIX_ACL_ACCESS;
- 			if (acl) {
--				error = posix_acl_equiv_mode(acl, &inode->i_mode);
--				if (error < 0)
-+				error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+				if (error)
- 					return error;
--				else {
--					inode->i_ctime = CURRENT_TIME_SEC;
--					mark_inode_dirty(inode);
--					if (error == 0)
--						acl = NULL;
--				}
-+				inode->i_ctime = CURRENT_TIME_SEC;
-+				mark_inode_dirty(inode);
- 			}
- 			break;
- 
-diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
-index c6601a476c02..dfa519979038 100644
---- a/fs/ext4/acl.c
-+++ b/fs/ext4/acl.c
-@@ -193,15 +193,11 @@ __ext4_set_acl(handle_t *handle, struct inode *inode, int type,
- 	case ACL_TYPE_ACCESS:
- 		name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
- 		if (acl) {
--			error = posix_acl_equiv_mode(acl, &inode->i_mode);
--			if (error < 0)
-+			error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+			if (error)
- 				return error;
--			else {
--				inode->i_ctime = ext4_current_time(inode);
--				ext4_mark_inode_dirty(handle, inode);
--				if (error == 0)
--					acl = NULL;
--			}
-+			inode->i_ctime = ext4_current_time(inode);
-+			ext4_mark_inode_dirty(handle, inode);
- 		}
- 		break;
- 
-diff --git a/fs/f2fs/acl.c b/fs/f2fs/acl.c
-index 4dcc9e28dc5c..31344247ce89 100644
---- a/fs/f2fs/acl.c
-+++ b/fs/f2fs/acl.c
-@@ -210,12 +210,10 @@ static int __f2fs_set_acl(struct inode *inode, int type,
- 	case ACL_TYPE_ACCESS:
- 		name_index = F2FS_XATTR_INDEX_POSIX_ACL_ACCESS;
- 		if (acl) {
--			error = posix_acl_equiv_mode(acl, &inode->i_mode);
--			if (error < 0)
-+			error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+			if (error)
- 				return error;
- 			set_acl_inode(inode, inode->i_mode);
--			if (error == 0)
--				acl = NULL;
- 		}
- 		break;
- 
-diff --git a/fs/gfs2/acl.c b/fs/gfs2/acl.c
-index 363ba9e9d8d0..2524807ee070 100644
---- a/fs/gfs2/acl.c
-+++ b/fs/gfs2/acl.c
-@@ -92,17 +92,11 @@ int __gfs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 	if (type == ACL_TYPE_ACCESS) {
- 		umode_t mode = inode->i_mode;
- 
--		error = posix_acl_equiv_mode(acl, &mode);
--		if (error < 0)
-+		error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+		if (error)
- 			return error;
--
--		if (error == 0)
--			acl = NULL;
--
--		if (mode != inode->i_mode) {
--			inode->i_mode = mode;
-+		if (mode != inode->i_mode)
- 			mark_inode_dirty(inode);
--		}
- 	}
- 
- 	if (acl) {
-diff --git a/fs/hfsplus/posix_acl.c b/fs/hfsplus/posix_acl.c
-index ab7ea2506b4d..9b92058a1240 100644
---- a/fs/hfsplus/posix_acl.c
-+++ b/fs/hfsplus/posix_acl.c
-@@ -65,8 +65,8 @@ int hfsplus_set_posix_acl(struct inode *inode, struct posix_acl *acl,
- 	case ACL_TYPE_ACCESS:
- 		xattr_name = XATTR_NAME_POSIX_ACL_ACCESS;
- 		if (acl) {
--			err = posix_acl_equiv_mode(acl, &inode->i_mode);
--			if (err < 0)
-+			err = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+			if (err)
- 				return err;
- 		}
- 		err = 0;
-diff --git a/fs/jffs2/acl.c b/fs/jffs2/acl.c
-index bc2693d56298..2a0f2a1044c1 100644
---- a/fs/jffs2/acl.c
-+++ b/fs/jffs2/acl.c
-@@ -233,9 +233,10 @@ int jffs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 	case ACL_TYPE_ACCESS:
- 		xprefix = JFFS2_XPREFIX_ACL_ACCESS;
- 		if (acl) {
--			umode_t mode = inode->i_mode;
--			rc = posix_acl_equiv_mode(acl, &mode);
--			if (rc < 0)
-+			umode_t mode;
-+
-+			rc = posix_acl_update_mode(inode, &mode, &acl);
-+			if (rc)
- 				return rc;
- 			if (inode->i_mode != mode) {
- 				struct iattr attr;
-@@ -247,8 +248,6 @@ int jffs2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 				if (rc < 0)
- 					return rc;
- 			}
--			if (rc == 0)
--				acl = NULL;
- 		}
- 		break;
- 	case ACL_TYPE_DEFAULT:
-diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c
-index 21fa92ba2c19..3a1e1554a4e3 100644
---- a/fs/jfs/acl.c
-+++ b/fs/jfs/acl.c
-@@ -78,13 +78,11 @@ static int __jfs_set_acl(tid_t tid, struct inode *inode, int type,
- 	case ACL_TYPE_ACCESS:
- 		ea_name = XATTR_NAME_POSIX_ACL_ACCESS;
- 		if (acl) {
--			rc = posix_acl_equiv_mode(acl, &inode->i_mode);
--			if (rc < 0)
-+			rc = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+			if (rc)
- 				return rc;
- 			inode->i_ctime = CURRENT_TIME;
- 			mark_inode_dirty(inode);
--			if (rc == 0)
--				acl = NULL;
- 		}
- 		break;
- 	case ACL_TYPE_DEFAULT:
-diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c
-index 2162434728c0..164307b99405 100644
---- a/fs/ocfs2/acl.c
-+++ b/fs/ocfs2/acl.c
-@@ -241,13 +241,11 @@ int ocfs2_set_acl(handle_t *handle,
- 	case ACL_TYPE_ACCESS:
- 		name_index = OCFS2_XATTR_INDEX_POSIX_ACL_ACCESS;
- 		if (acl) {
--			umode_t mode = inode->i_mode;
--			ret = posix_acl_equiv_mode(acl, &mode);
--			if (ret < 0)
--				return ret;
-+			umode_t mode;
- 
--			if (ret == 0)
--				acl = NULL;
-+			ret = posix_acl_update_mode(inode, &mode, &acl);
-+			if (ret)
-+				return ret;
- 
- 			ret = ocfs2_acl_set_mode(inode, di_bh,
- 						 handle, mode);
-diff --git a/fs/orangefs/acl.c b/fs/orangefs/acl.c
-index 28f2195cd798..7a3754488312 100644
---- a/fs/orangefs/acl.c
-+++ b/fs/orangefs/acl.c
-@@ -73,14 +73,11 @@ int orangefs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 	case ACL_TYPE_ACCESS:
- 		name = XATTR_NAME_POSIX_ACL_ACCESS;
- 		if (acl) {
--			umode_t mode = inode->i_mode;
--			/*
--			 * can we represent this with the traditional file
--			 * mode permission bits?
--			 */
--			error = posix_acl_equiv_mode(acl, &mode);
--			if (error < 0) {
--				gossip_err("%s: posix_acl_equiv_mode err: %d\n",
-+			umode_t mode;
-+
-+			error = posix_acl_update_mode(inode, &mode, &acl);
-+			if (error) {
-+				gossip_err("%s: posix_acl_update_mode err: %d\n",
- 					   __func__,
- 					   error);
- 				return error;
-@@ -90,8 +87,6 @@ int orangefs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 				SetModeFlag(orangefs_inode);
- 			inode->i_mode = mode;
- 			mark_inode_dirty_sync(inode);
--			if (error == 0)
--				acl = NULL;
- 		}
- 		break;
- 	case ACL_TYPE_DEFAULT:
-diff --git a/fs/posix_acl.c b/fs/posix_acl.c
-index 59d47ab0791a..bfc3ec388322 100644
---- a/fs/posix_acl.c
-+++ b/fs/posix_acl.c
-@@ -626,6 +626,37 @@ posix_acl_create(struct inode *dir, umode_t *mode,
- }
- EXPORT_SYMBOL_GPL(posix_acl_create);
- 
-+/**
-+ * posix_acl_update_mode  -  update mode in set_acl
-+ *
-+ * Update the file mode when setting an ACL: compute the new file permission
-+ * bits based on the ACL.  In addition, if the ACL is equivalent to the new
-+ * file mode, set *acl to NULL to indicate that no ACL should be set.
-+ *
-+ * As with chmod, clear the setgit bit if the caller is not in the owning group
-+ * or capable of CAP_FSETID (see inode_change_ok).
-+ *
-+ * Called from set_acl inode operations.
-+ */
-+int posix_acl_update_mode(struct inode *inode, umode_t *mode_p,
-+			  struct posix_acl **acl)
-+{
-+	umode_t mode = inode->i_mode;
-+	int error;
-+
-+	error = posix_acl_equiv_mode(*acl, &mode);
-+	if (error < 0)
-+		return error;
-+	if (error == 0)
-+		*acl = NULL;
-+	if (!in_group_p(inode->i_gid) &&
-+	    !capable_wrt_inode_uidgid(inode, CAP_FSETID))
-+		mode &= ~S_ISGID;
-+	*mode_p = mode;
-+	return 0;
-+}
-+EXPORT_SYMBOL(posix_acl_update_mode);
-+
- /*
-  * Fix up the uids and gids in posix acl extended attributes in place.
-  */
-diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c
-index dbed42f755e0..27376681c640 100644
---- a/fs/reiserfs/xattr_acl.c
-+++ b/fs/reiserfs/xattr_acl.c
-@@ -242,13 +242,9 @@ __reiserfs_set_acl(struct reiserfs_transaction_handle *th, struct inode *inode,
- 	case ACL_TYPE_ACCESS:
- 		name = XATTR_NAME_POSIX_ACL_ACCESS;
- 		if (acl) {
--			error = posix_acl_equiv_mode(acl, &inode->i_mode);
--			if (error < 0)
-+			error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
-+			if (error)
- 				return error;
--			else {
--				if (error == 0)
--					acl = NULL;
--			}
- 		}
- 		break;
- 	case ACL_TYPE_DEFAULT:
-diff --git a/fs/xfs/xfs_acl.c b/fs/xfs/xfs_acl.c
-index b6e527b8eccb..8a0dec89ca56 100644
---- a/fs/xfs/xfs_acl.c
-+++ b/fs/xfs/xfs_acl.c
-@@ -257,16 +257,11 @@ xfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
- 		return error;
- 
- 	if (type == ACL_TYPE_ACCESS) {
--		umode_t mode = inode->i_mode;
--		error = posix_acl_equiv_mode(acl, &mode);
--
--		if (error <= 0) {
--			acl = NULL;
--
--			if (error < 0)
--				return error;
--		}
-+		umode_t mode;
- 
-+		error = posix_acl_update_mode(inode, &mode, &acl);
-+		if (error)
-+			return error;
- 		error = xfs_set_mode(inode, mode);
- 		if (error)
- 			return error;
-diff --git a/include/linux/posix_acl.h b/include/linux/posix_acl.h
-index d5d3d741f028..bf1046d0397b 100644
---- a/include/linux/posix_acl.h
-+++ b/include/linux/posix_acl.h
-@@ -93,6 +93,7 @@ extern int set_posix_acl(struct inode *, int, struct posix_acl *);
- extern int posix_acl_chmod(struct inode *, umode_t);
- extern int posix_acl_create(struct inode *, umode_t *, struct posix_acl **,
- 		struct posix_acl **);
-+extern int posix_acl_update_mode(struct inode *, umode_t *, struct posix_acl **);
- 
- extern int simple_set_acl(struct inode *, struct posix_acl *, int);
- extern int simple_acl_create(struct inode *, struct inode *);
diff --git a/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch b/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
index ffd1443..6065c39 100644
--- a/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
+++ b/debian/patches/bugfix/all/radeon-firmware-is-required-for-drm-and-kms-on-r600-onward.patch
@@ -26,7 +26,7 @@ missing, except for the pre-R600 case.
 ---
 --- a/drivers/gpu/drm/radeon/radeon_drv.c
 +++ b/drivers/gpu/drm/radeon/radeon_drv.c
-@@ -42,6 +42,8 @@
+@@ -43,6 +43,8 @@
  
  #include "drm_crtc_helper.h"
  #include "radeon_kfd.h"
@@ -35,9 +35,9 @@ missing, except for the pre-R600 case.
  
  /*
   * KMS wrapper.
-@@ -309,6 +311,29 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
+@@ -309,6 +311,29 @@ static struct drm_driver kms_driver;
  
- static struct drm_driver kms_driver;
+ bool radeon_device_is_virtual(void);
  
 +/* Test that /lib/firmware/radeon is a directory (or symlink to a
 + * directory).  We could try to match the udev search path, but let's
diff --git a/debian/patches/features/all/aufs4/aufs4-base.patch b/debian/patches/features/all/aufs4/aufs4-base.patch
index 330185a..7e5098d 100644
--- a/debian/patches/features/all/aufs4/aufs4-base.patch
+++ b/debian/patches/features/all/aufs4/aufs4-base.patch
@@ -8,11 +8,11 @@ Patch headers added by debian/patches/features/all/aufs4/gen-patch
 
 aufs4.8 base patch
 
-diff --git a/MAINTAINERS b/MAINTAINERS
-index f593300..8a17054 100644
+[bwh: Forward-ported to 4.9: adjust context]
+
 --- a/MAINTAINERS
 +++ b/MAINTAINERS
-@@ -2256,6 +2256,19 @@ F:	include/linux/audit.h
+@@ -2285,6 +2285,19 @@ F:	include/linux/audit.h
  F:	include/uapi/linux/audit.h
  F:	kernel/audit*
  
@@ -32,11 +32,9 @@ index f593300..8a17054 100644
  AUXILIARY DISPLAY DRIVERS
  M:	Miguel Ojeda Sandonis <miguel.ojeda.sandonis at gmail.com>
  W:	http://miguelojeda.es/auxdisplay.htm
-diff --git a/drivers/block/loop.c b/drivers/block/loop.c
-index c9f2107..005e292 100644
 --- a/drivers/block/loop.c
 +++ b/drivers/block/loop.c
-@@ -701,6 +701,24 @@ static inline int is_loop_device(struct file *file)
+@@ -701,6 +701,24 @@ static inline int is_loop_device(struct
  	return i && S_ISBLK(i->i_mode) && MAJOR(i->i_rdev) == LOOP_MAJOR;
  }
  
@@ -61,8 +59,6 @@ index c9f2107..005e292 100644
  /* loop sysfs attributes */
  
  static ssize_t loop_attr_show(struct device *dev, char *page,
-diff --git a/fs/dcache.c b/fs/dcache.c
-index 5c7cc95..df0268c 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
 @@ -1164,7 +1164,7 @@ enum d_walk_ret {
@@ -74,8 +70,6 @@ index 5c7cc95..df0268c 100644
  		   enum d_walk_ret (*enter)(void *, struct dentry *),
  		   void (*finish)(void *))
  {
-diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 350a2c8..6f42279 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
 @@ -29,7 +29,7 @@
@@ -87,7 +81,7 @@ index 350a2c8..6f42279 100644
  {
  	struct inode * inode = file_inode(filp);
  	int error = 0;
-@@ -60,6 +60,8 @@ static int setfl(int fd, struct file * filp, unsigned long arg)
+@@ -60,6 +60,8 @@ static int setfl(int fd, struct file * f
  
  	if (filp->f_op->check_flags)
  		error = filp->f_op->check_flags(arg);
@@ -96,11 +90,9 @@ index 350a2c8..6f42279 100644
  	if (error)
  		return error;
  
-diff --git a/fs/inode.c b/fs/inode.c
-index 7e3ef3a..675fe84 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
-@@ -1593,7 +1593,7 @@ EXPORT_SYMBOL(generic_update_time);
+@@ -1642,7 +1642,7 @@ EXPORT_SYMBOL(generic_update_time);
   * This does the actual work of updating an inodes time or version.  Must have
   * had called mnt_want_write() before calling this.
   */
@@ -109,11 +101,9 @@ index 7e3ef3a..675fe84 100644
  {
  	int (*update_time)(struct inode *, struct timespec *, int);
  
-diff --git a/fs/read_write.c b/fs/read_write.c
-index 66215a7..a1da117 100644
 --- a/fs/read_write.c
 +++ b/fs/read_write.c
-@@ -515,6 +515,28 @@ ssize_t __vfs_write(struct file *file, const char __user *p, size_t count,
+@@ -515,6 +515,28 @@ ssize_t __vfs_write(struct file *file, c
  }
  EXPORT_SYMBOL(__vfs_write);
  
@@ -142,11 +132,9 @@ index 66215a7..a1da117 100644
  ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
  {
  	mm_segment_t old_fs;
-diff --git a/fs/splice.c b/fs/splice.c
-index dd9bf7e..9326c2a 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
-@@ -1111,8 +1111,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
+@@ -859,8 +859,8 @@ EXPORT_SYMBOL(generic_splice_sendpage);
  /*
   * Attempt to initiate a splice from pipe to file.
   */
@@ -157,7 +145,7 @@ index dd9bf7e..9326c2a 100644
  {
  	ssize_t (*splice_write)(struct pipe_inode_info *, struct file *,
  				loff_t *, size_t, unsigned int);
-@@ -1128,9 +1128,9 @@ static long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -876,9 +876,9 @@ static long do_splice_from(struct pipe_i
  /*
   * Attempt to initiate a splice from a file to a pipe.
   */
@@ -170,8 +158,6 @@ index dd9bf7e..9326c2a 100644
  {
  	ssize_t (*splice_read)(struct file *, loff_t *,
  			       struct pipe_inode_info *, size_t, unsigned int);
-diff --git a/include/linux/file.h b/include/linux/file.h
-index 7444f5f..bdac0be 100644
 --- a/include/linux/file.h
 +++ b/include/linux/file.h
 @@ -19,6 +19,7 @@ struct dentry;
@@ -182,11 +168,9 @@ index 7444f5f..bdac0be 100644
  
  static inline void fput_light(struct file *file, int fput_needed)
  {
-diff --git a/include/linux/fs.h b/include/linux/fs.h
-index 901e25d..a71aa9e 100644
 --- a/include/linux/fs.h
 +++ b/include/linux/fs.h
-@@ -1275,6 +1275,7 @@ extern void fasync_free(struct fasync_struct *);
+@@ -1290,6 +1290,7 @@ extern void fasync_free(struct fasync_st
  /* can be called from interrupts */
  extern void kill_fasync(struct fasync_struct **, int, int);
  
@@ -194,7 +178,7 @@ index 901e25d..a71aa9e 100644
  extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force);
  extern void f_setown(struct file *filp, unsigned long arg, int force);
  extern void f_delown(struct file *filp);
-@@ -1699,6 +1700,7 @@ struct file_operations {
+@@ -1715,6 +1716,7 @@ struct file_operations {
  	ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);
  	unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
  	int (*check_flags)(int);
@@ -202,7 +186,7 @@ index 901e25d..a71aa9e 100644
  	int (*flock) (struct file *, int, struct file_lock *);
  	ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int);
  	ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int);
-@@ -1759,6 +1761,12 @@ ssize_t rw_copy_check_uvector(int type, const struct iovec __user * uvector,
+@@ -1768,6 +1770,12 @@ ssize_t rw_copy_check_uvector(int type,
  			      struct iovec *fast_pointer,
  			      struct iovec **ret_pointer);
  
@@ -215,7 +199,7 @@ index 901e25d..a71aa9e 100644
  extern ssize_t __vfs_read(struct file *, char __user *, size_t, loff_t *);
  extern ssize_t __vfs_write(struct file *, const char __user *, size_t, loff_t *);
  extern ssize_t vfs_read(struct file *, char __user *, size_t, loff_t *);
-@@ -2123,6 +2131,7 @@ extern int current_umask(void);
+@@ -2140,6 +2148,7 @@ extern int current_umask(void);
  extern void ihold(struct inode * inode);
  extern void iput(struct inode *);
  extern int generic_update_time(struct inode *, struct timespec *, int);
@@ -223,14 +207,12 @@ index 901e25d..a71aa9e 100644
  
  /* /sys/fs */
  extern struct kobject *fs_kobj;
-diff --git a/include/linux/splice.h b/include/linux/splice.h
-index da2751d..2e0fca6 100644
 --- a/include/linux/splice.h
 +++ b/include/linux/splice.h
-@@ -83,4 +83,10 @@ extern void splice_shrink_spd(struct splice_pipe_desc *);
- extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
+@@ -86,4 +86,10 @@ extern void spd_release_page(struct spli
  
  extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
+ extern const struct pipe_buf_operations default_pipe_buf_ops;
 +
 +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
 +			   loff_t *ppos, size_t len, unsigned int flags);
diff --git a/debian/patches/features/all/aufs4/aufs4-mmap.patch b/debian/patches/features/all/aufs4/aufs4-mmap.patch
index 5e2f68d..98b1946 100644
--- a/debian/patches/features/all/aufs4/aufs4-mmap.patch
+++ b/debian/patches/features/all/aufs4/aufs4-mmap.patch
@@ -8,11 +8,11 @@ Patch headers added by debian/patches/features/all/aufs4/gen-patch
 
 aufs4.8 mmap patch
 
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index ac0df4d..42255e5 100644
+[bwh: Forward-ported to 4.9: adjust context]
+
 --- a/fs/proc/base.c
 +++ b/fs/proc/base.c
-@@ -1938,7 +1938,7 @@ static int map_files_get_link(struct dentry *dentry, struct path *path)
+@@ -1952,7 +1952,7 @@ static int map_files_get_link(struct den
  	down_read(&mm->mmap_sem);
  	vma = find_exact_vma(mm, vm_start, vm_end);
  	if (vma && vma->vm_file) {
@@ -21,11 +21,9 @@ index ac0df4d..42255e5 100644
  		path_get(path);
  		rc = 0;
  	}
-diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c
-index f8595e8..cb8eda0 100644
 --- a/fs/proc/nommu.c
 +++ b/fs/proc/nommu.c
-@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_file *m, struct vm_region *region)
+@@ -45,7 +45,10 @@ static int nommu_region_show(struct seq_
  	file = region->vm_file;
  
  	if (file) {
@@ -37,11 +35,9 @@ index f8595e8..cb8eda0 100644
  		dev = inode->i_sb->s_dev;
  		ino = inode->i_ino;
  	}
-diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
-index f6fa99e..2750949 100644
 --- a/fs/proc/task_mmu.c
 +++ b/fs/proc/task_mmu.c
-@@ -298,7 +298,10 @@ show_map_vma(struct seq_file *m, struct vm_area_struct *vma, int is_pid)
+@@ -291,7 +291,10 @@ show_map_vma(struct seq_file *m, struct
  	const char *name = NULL;
  
  	if (file) {
@@ -53,7 +49,7 @@ index f6fa99e..2750949 100644
  		dev = inode->i_sb->s_dev;
  		ino = inode->i_ino;
  		pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
-@@ -1634,7 +1637,7 @@ static int show_numa_map(struct seq_file *m, void *v, int is_pid)
+@@ -1627,7 +1630,7 @@ static int show_numa_map(struct seq_file
  	struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
  	struct vm_area_struct *vma = v;
  	struct numa_maps *md = &numa_priv->md;
@@ -62,11 +58,9 @@ index f6fa99e..2750949 100644
  	struct mm_struct *mm = vma->vm_mm;
  	struct mm_walk walk = {
  		.hugetlb_entry = gather_hugetlb_stats,
-diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
-index faacb0c..17b43be 100644
 --- a/fs/proc/task_nommu.c
 +++ b/fs/proc/task_nommu.c
-@@ -163,7 +163,10 @@ static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma,
+@@ -155,7 +155,10 @@ static int nommu_vma_show(struct seq_fil
  	file = vma->vm_file;
  
  	if (file) {
@@ -78,11 +72,9 @@ index faacb0c..17b43be 100644
  		dev = inode->i_sb->s_dev;
  		ino = inode->i_ino;
  		pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
-diff --git a/include/linux/mm.h b/include/linux/mm.h
-index ef815b9..a772481 100644
 --- a/include/linux/mm.h
 +++ b/include/linux/mm.h
-@@ -1278,6 +1278,28 @@ static inline int fixup_user_fault(struct task_struct *tsk,
+@@ -1266,6 +1266,28 @@ static inline int fixup_user_fault(struc
  }
  #endif
  
@@ -108,11 +100,9 @@ index ef815b9..a772481 100644
 +#define vmr_fput(region)		vmr_do_fput(region, __func__, __LINE__)
 +#endif /* !CONFIG_MMU */
 +
- extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write);
+ extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len,
+ 		unsigned int gup_flags);
  extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
- 		void *buf, int len, int write);
-diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
-index 903200f..55fc528 100644
 --- a/include/linux/mm_types.h
 +++ b/include/linux/mm_types.h
 @@ -275,6 +275,7 @@ struct vm_region {
@@ -131,11 +121,9 @@ index 903200f..55fc528 100644
  	void * vm_private_data;		/* was vm_pte (shared mem) */
  
  #ifndef CONFIG_MMU
-diff --git a/kernel/fork.c b/kernel/fork.c
-index beb3172..ad4cfa8 100644
 --- a/kernel/fork.c
 +++ b/kernel/fork.c
-@@ -477,7 +477,7 @@ static int dup_mmap(struct mm_struct *mm, struct mm_struct *oldmm)
+@@ -621,7 +621,7 @@ static __latent_entropy int dup_mmap(str
  			struct inode *inode = file_inode(file);
  			struct address_space *mapping = file->f_mapping;
  
@@ -144,11 +132,9 @@ index beb3172..ad4cfa8 100644
  			if (tmp->vm_flags & VM_DENYWRITE)
  				atomic_dec(&inode->i_writecount);
  			i_mmap_lock_write(mapping);
-diff --git a/mm/Makefile b/mm/Makefile
-index 2ca1faf..6b9da3f 100644
 --- a/mm/Makefile
 +++ b/mm/Makefile
-@@ -40,7 +40,7 @@ obj-y			:= filemap.o mempool.o oom_kill.o \
+@@ -37,7 +37,7 @@ obj-y			:= filemap.o mempool.o oom_kill.
  			   mm_init.o mmu_context.o percpu.o slab_common.o \
  			   compaction.o vmacache.o \
  			   interval_tree.o list_lru.o workingset.o \
@@ -157,11 +143,9 @@ index 2ca1faf..6b9da3f 100644
  
  obj-y += init-mm.o
  
-diff --git a/mm/filemap.c b/mm/filemap.c
-index 2d0986a..4a31bad 100644
 --- a/mm/filemap.c
 +++ b/mm/filemap.c
-@@ -2284,7 +2284,7 @@ int filemap_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf)
+@@ -2303,7 +2303,7 @@ int filemap_page_mkwrite(struct vm_area_
  	int ret = VM_FAULT_LOCKED;
  
  	sb_start_pagefault(inode->i_sb);
@@ -170,11 +154,9 @@ index 2d0986a..4a31bad 100644
  	lock_page(page);
  	if (page->mapping != inode->i_mapping) {
  		unlock_page(page);
-diff --git a/mm/memory.c b/mm/memory.c
-index 793fe0f..45f39f3 100644
 --- a/mm/memory.c
 +++ b/mm/memory.c
-@@ -2113,7 +2113,7 @@ static inline int wp_page_reuse(struct fault_env *fe, pte_t orig_pte,
+@@ -2117,7 +2117,7 @@ static inline int wp_page_reuse(struct f
  		}
  
  		if (!page_mkwrite)
@@ -183,11 +165,9 @@ index 793fe0f..45f39f3 100644
  	}
  
  	return VM_FAULT_WRITE;
-diff --git a/mm/mmap.c b/mm/mmap.c
-index ca9d91b..f3ebc5a 100644
 --- a/mm/mmap.c
 +++ b/mm/mmap.c
-@@ -163,7 +163,7 @@ static struct vm_area_struct *remove_vma(struct vm_area_struct *vma)
+@@ -170,7 +170,7 @@ static struct vm_area_struct *remove_vma
  	if (vma->vm_ops && vma->vm_ops->close)
  		vma->vm_ops->close(vma);
  	if (vma->vm_file)
@@ -196,7 +176,7 @@ index ca9d91b..f3ebc5a 100644
  	mpol_put(vma_policy(vma));
  	kmem_cache_free(vm_area_cachep, vma);
  	return next;
-@@ -790,7 +790,7 @@ again:
+@@ -879,7 +879,7 @@ again:
  	if (remove_next) {
  		if (file) {
  			uprobe_munmap(next, next->vm_start, next->vm_end);
@@ -205,7 +185,7 @@ index ca9d91b..f3ebc5a 100644
  		}
  		if (next->anon_vma)
  			anon_vma_merge(vma, next);
-@@ -1574,8 +1574,8 @@ out:
+@@ -1727,8 +1727,8 @@ out:
  	return addr;
  
  unmap_and_free_vma:
@@ -215,7 +195,7 @@ index ca9d91b..f3ebc5a 100644
  
  	/* Undo any partial mapping done by a device driver. */
  	unmap_region(mm, vma, prev, vma->vm_start, vma->vm_end);
-@@ -2380,7 +2380,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2533,7 +2533,7 @@ static int __split_vma(struct mm_struct
  		goto out_free_mpol;
  
  	if (new->vm_file)
@@ -224,7 +204,7 @@ index ca9d91b..f3ebc5a 100644
  
  	if (new->vm_ops && new->vm_ops->open)
  		new->vm_ops->open(new);
-@@ -2399,7 +2399,7 @@ static int __split_vma(struct mm_struct *mm, struct vm_area_struct *vma,
+@@ -2552,7 +2552,7 @@ static int __split_vma(struct mm_struct
  	if (new->vm_ops && new->vm_ops->close)
  		new->vm_ops->close(new);
  	if (new->vm_file)
@@ -233,7 +213,7 @@ index ca9d91b..f3ebc5a 100644
  	unlink_anon_vmas(new);
   out_free_mpol:
  	mpol_put(vma_policy(new));
-@@ -2550,7 +2550,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2703,7 +2703,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
  	struct vm_area_struct *vma;
  	unsigned long populate = 0;
  	unsigned long ret = -EINVAL;
@@ -242,7 +222,7 @@ index ca9d91b..f3ebc5a 100644
  
  	pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.txt.\n",
  		     current->comm, current->pid);
-@@ -2625,10 +2625,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
+@@ -2778,10 +2778,27 @@ SYSCALL_DEFINE5(remap_file_pages, unsign
  		}
  	}
  
@@ -271,7 +251,7 @@ index ca9d91b..f3ebc5a 100644
  out:
  	up_write(&mm->mmap_sem);
  	if (populate)
-@@ -2903,7 +2920,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+@@ -3056,7 +3073,7 @@ struct vm_area_struct *copy_vma(struct v
  		if (anon_vma_clone(new_vma, vma))
  			goto out_free_mempol;
  		if (new_vma->vm_file)
@@ -280,11 +260,9 @@ index ca9d91b..f3ebc5a 100644
  		if (new_vma->vm_ops && new_vma->vm_ops->open)
  			new_vma->vm_ops->open(new_vma);
  		vma_link(mm, new_vma, prev, rb_link, rb_parent);
-diff --git a/mm/nommu.c b/mm/nommu.c
-index 95daf81..5086a29 100644
 --- a/mm/nommu.c
 +++ b/mm/nommu.c
-@@ -644,7 +644,7 @@ static void __put_nommu_region(struct vm_region *region)
+@@ -636,7 +636,7 @@ static void __put_nommu_region(struct vm
  		up_write(&nommu_region_sem);
  
  		if (region->vm_file)
@@ -293,7 +271,7 @@ index 95daf81..5086a29 100644
  
  		/* IO memory and memory shared directly out of the pagecache
  		 * from ramfs/tmpfs mustn't be released here */
-@@ -802,7 +802,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
+@@ -794,7 +794,7 @@ static void delete_vma(struct mm_struct
  	if (vma->vm_ops && vma->vm_ops->close)
  		vma->vm_ops->close(vma);
  	if (vma->vm_file)
@@ -302,7 +280,7 @@ index 95daf81..5086a29 100644
  	put_nommu_region(vma->vm_region);
  	kmem_cache_free(vm_area_cachep, vma);
  }
-@@ -1328,7 +1328,7 @@ unsigned long do_mmap(struct file *file,
+@@ -1320,7 +1320,7 @@ unsigned long do_mmap(struct file *file,
  					goto error_just_free;
  				}
  			}
@@ -311,7 +289,7 @@ index 95daf81..5086a29 100644
  			kmem_cache_free(vm_region_jar, region);
  			region = pregion;
  			result = start;
-@@ -1403,10 +1403,10 @@ error_just_free:
+@@ -1395,10 +1395,10 @@ error_just_free:
  	up_write(&nommu_region_sem);
  error:
  	if (region->vm_file)
@@ -324,9 +302,6 @@ index 95daf81..5086a29 100644
  	kmem_cache_free(vm_area_cachep, vma);
  	return ret;
  
-diff --git a/mm/prfile.c b/mm/prfile.c
-new file mode 100644
-index 0000000..b323b8a
 --- /dev/null
 +++ b/mm/prfile.c
 @@ -0,0 +1,86 @@
diff --git a/debian/patches/features/all/aufs4/aufs4-standalone.patch b/debian/patches/features/all/aufs4/aufs4-standalone.patch
index 8c89bb9..49139af 100644
--- a/debian/patches/features/all/aufs4/aufs4-standalone.patch
+++ b/debian/patches/features/all/aufs4/aufs4-standalone.patch
@@ -8,8 +8,6 @@ Patch headers added by debian/patches/features/all/aufs4/gen-patch
 
 aufs4.8 standalone patch
 
-diff --git a/fs/dcache.c b/fs/dcache.c
-index df0268c..76280ee 100644
 --- a/fs/dcache.c
 +++ b/fs/dcache.c
 @@ -1272,6 +1272,7 @@ rename_retry:
@@ -20,11 +18,9 @@ index df0268c..76280ee 100644
  
  /*
   * Search for at least 1 mount point in the dentry's subdirs.
-diff --git a/fs/exec.c b/fs/exec.c
-index 6fcfb3f..ed9d646 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
-@@ -104,6 +104,7 @@ bool path_noexec(const struct path *path)
+@@ -104,6 +104,7 @@ bool path_noexec(const struct path *path
  	return (path->mnt->mnt_flags & MNT_NOEXEC) ||
  	       (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC);
  }
@@ -32,11 +28,9 @@ index 6fcfb3f..ed9d646 100644
  
  #ifdef CONFIG_USELIB
  /*
-diff --git a/fs/fcntl.c b/fs/fcntl.c
-index 6f42279..04fd33c 100644
 --- a/fs/fcntl.c
 +++ b/fs/fcntl.c
-@@ -82,6 +82,7 @@ int setfl(int fd, struct file * filp, unsigned long arg)
+@@ -82,6 +82,7 @@ int setfl(int fd, struct file * filp, un
   out:
  	return error;
  }
@@ -44,8 +38,6 @@ index 6f42279..04fd33c 100644
  
  static void f_modown(struct file *filp, struct pid *pid, enum pid_type type,
                       int force)
-diff --git a/fs/file_table.c b/fs/file_table.c
-index ad17e05..ae9f267 100644
 --- a/fs/file_table.c
 +++ b/fs/file_table.c
 @@ -147,6 +147,7 @@ over:
@@ -80,11 +72,9 @@ index ad17e05..ae9f267 100644
  
  void __init files_init(void)
  { 
-diff --git a/fs/inode.c b/fs/inode.c
-index 675fe84..da063d3 100644
 --- a/fs/inode.c
 +++ b/fs/inode.c
-@@ -1602,6 +1602,7 @@ int update_time(struct inode *inode, struct timespec *time, int flags)
+@@ -1651,6 +1651,7 @@ int update_time(struct inode *inode, str
  
  	return update_time(inode, time, flags);
  }
@@ -92,11 +82,9 @@ index 675fe84..da063d3 100644
  
  /**
   *	touch_atime	-	update the access time
-diff --git a/fs/namespace.c b/fs/namespace.c
-index 7bb2cda..88ec098 100644
 --- a/fs/namespace.c
 +++ b/fs/namespace.c
-@@ -463,6 +463,7 @@ void __mnt_drop_write(struct vfsmount *mnt)
+@@ -466,6 +466,7 @@ void __mnt_drop_write(struct vfsmount *m
  	mnt_dec_writers(real_mount(mnt));
  	preempt_enable();
  }
@@ -104,7 +92,7 @@ index 7bb2cda..88ec098 100644
  
  /**
   * mnt_drop_write - give up write access to a mount
-@@ -1812,6 +1813,7 @@ int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
+@@ -1823,6 +1824,7 @@ int iterate_mounts(int (*f)(struct vfsmo
  	}
  	return 0;
  }
@@ -112,8 +100,6 @@ index 7bb2cda..88ec098 100644
  
  static void cleanup_group_ids(struct mount *mnt, struct mount *end)
  {
-diff --git a/fs/notify/group.c b/fs/notify/group.c
-index b47f7cf..618bc9e 100644
 --- a/fs/notify/group.c
 +++ b/fs/notify/group.c
 @@ -22,6 +22,7 @@
@@ -124,7 +110,7 @@ index b47f7cf..618bc9e 100644
  
  #include <linux/fsnotify_backend.h>
  #include "fsnotify.h"
-@@ -100,6 +101,7 @@ void fsnotify_get_group(struct fsnotify_group *group)
+@@ -100,6 +101,7 @@ void fsnotify_get_group(struct fsnotify_
  {
  	atomic_inc(&group->refcnt);
  }
@@ -132,7 +118,7 @@ index b47f7cf..618bc9e 100644
  
  /*
   * Drop a reference to a group.  Free it if it's through.
-@@ -109,6 +111,7 @@ void fsnotify_put_group(struct fsnotify_group *group)
+@@ -109,6 +111,7 @@ void fsnotify_put_group(struct fsnotify_
  	if (atomic_dec_and_test(&group->refcnt))
  		fsnotify_final_destroy_group(group);
  }
@@ -140,7 +126,7 @@ index b47f7cf..618bc9e 100644
  
  /*
   * Create a new fsnotify_group and hold a reference for the group returned.
-@@ -137,6 +140,7 @@ struct fsnotify_group *fsnotify_alloc_group(const struct fsnotify_ops *ops)
+@@ -137,6 +140,7 @@ struct fsnotify_group *fsnotify_alloc_gr
  
  	return group;
  }
@@ -148,11 +134,9 @@ index b47f7cf..618bc9e 100644
  
  int fsnotify_fasync(int fd, struct file *file, int on)
  {
-diff --git a/fs/notify/mark.c b/fs/notify/mark.c
-index d3fea0b..5fc06ad 100644
 --- a/fs/notify/mark.c
 +++ b/fs/notify/mark.c
-@@ -113,6 +113,7 @@ void fsnotify_put_mark(struct fsnotify_mark *mark)
+@@ -113,6 +113,7 @@ void fsnotify_put_mark(struct fsnotify_m
  		mark->free_mark(mark);
  	}
  }
@@ -160,7 +144,7 @@ index d3fea0b..5fc06ad 100644
  
  /* Calculate mask of events for a list of marks */
  u32 fsnotify_recalc_mask(struct hlist_head *head)
-@@ -230,6 +231,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark,
+@@ -230,6 +231,7 @@ void fsnotify_destroy_mark(struct fsnoti
  	mutex_unlock(&group->mark_mutex);
  	fsnotify_free_mark(mark);
  }
@@ -176,7 +160,7 @@ index d3fea0b..5fc06ad 100644
  
  int fsnotify_add_mark(struct fsnotify_mark *mark, struct fsnotify_group *group,
  		      struct inode *inode, struct vfsmount *mnt, int allow_dups)
-@@ -533,6 +536,7 @@ void fsnotify_init_mark(struct fsnotify_mark *mark,
+@@ -533,6 +536,7 @@ void fsnotify_init_mark(struct fsnotify_
  	atomic_set(&mark->refcnt, 1);
  	mark->free_mark = free_mark;
  }
@@ -184,11 +168,9 @@ index d3fea0b..5fc06ad 100644
  
  /*
   * Destroy all marks in destroy_list, waits for SRCU period to finish before
-diff --git a/fs/open.c b/fs/open.c
-index 4fd6e25..ec6f532 100644
 --- a/fs/open.c
 +++ b/fs/open.c
-@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
+@@ -64,6 +64,7 @@ int do_truncate(struct dentry *dentry, l
  	inode_unlock(dentry->d_inode);
  	return ret;
  }
@@ -196,7 +178,7 @@ index 4fd6e25..ec6f532 100644
  
  long vfs_truncate(const struct path *path, loff_t length)
  {
-@@ -678,6 +679,7 @@ int open_check_o_direct(struct file *f)
+@@ -695,6 +696,7 @@ int open_check_o_direct(struct file *f)
  	}
  	return 0;
  }
@@ -204,8 +186,6 @@ index 4fd6e25..ec6f532 100644
  
  static int do_dentry_open(struct file *f,
  			  struct inode *inode,
-diff --git a/fs/read_write.c b/fs/read_write.c
-index a1da117..c643215 100644
 --- a/fs/read_write.c
 +++ b/fs/read_write.c
 @@ -525,6 +525,7 @@ vfs_readf_t vfs_readf(struct file *file)
@@ -216,7 +196,7 @@ index a1da117..c643215 100644
  
  vfs_writef_t vfs_writef(struct file *file)
  {
-@@ -536,6 +537,7 @@ vfs_writef_t vfs_writef(struct file *file)
+@@ -536,6 +537,7 @@ vfs_writef_t vfs_writef(struct file *fil
  		return new_sync_write;
  	return ERR_PTR(-ENOSYS);
  }
@@ -224,11 +204,9 @@ index a1da117..c643215 100644
  
  ssize_t __kernel_write(struct file *file, const char *buf, size_t count, loff_t *pos)
  {
-diff --git a/fs/splice.c b/fs/splice.c
-index 9326c2a..0606690 100644
 --- a/fs/splice.c
 +++ b/fs/splice.c
-@@ -1124,6 +1124,7 @@ long do_splice_from(struct pipe_inode_info *pipe, struct file *out,
+@@ -872,6 +872,7 @@ long do_splice_from(struct pipe_inode_in
  
  	return splice_write(pipe, out, ppos, len, flags);
  }
@@ -236,7 +214,7 @@ index 9326c2a..0606690 100644
  
  /*
   * Attempt to initiate a splice from a file to a pipe.
-@@ -1153,6 +1154,7 @@ long do_splice_to(struct file *in, loff_t *ppos,
+@@ -901,6 +902,7 @@ long do_splice_to(struct file *in, loff_
  
  	return splice_read(in, ppos, pipe, len, flags);
  }
@@ -244,20 +222,16 @@ index 9326c2a..0606690 100644
  
  /**
   * splice_direct_to_actor - splices data directly between two non-pipes
-diff --git a/fs/xattr.c b/fs/xattr.c
-index c243905..b60dc60 100644
 --- a/fs/xattr.c
 +++ b/fs/xattr.c
-@@ -214,6 +214,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value,
+@@ -290,6 +290,7 @@ vfs_getxattr_alloc(struct dentry *dentry
  	*xattr_value = value;
  	return error;
  }
 +EXPORT_SYMBOL_GPL(vfs_getxattr_alloc);
  
  ssize_t
- vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size)
-diff --git a/kernel/task_work.c b/kernel/task_work.c
-index d513051..e056d54 100644
+ __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name,
 --- a/kernel/task_work.c
 +++ b/kernel/task_work.c
 @@ -119,3 +119,4 @@ void task_work_run(void)
@@ -265,11 +239,9 @@ index d513051..e056d54 100644
  	}
  }
 +EXPORT_SYMBOL_GPL(task_work_run);
-diff --git a/security/commoncap.c b/security/commoncap.c
-index 14540bd..4e3b242 100644
 --- a/security/commoncap.c
 +++ b/security/commoncap.c
-@@ -1066,12 +1066,14 @@ int cap_mmap_addr(unsigned long addr)
+@@ -1061,12 +1061,14 @@ int cap_mmap_addr(unsigned long addr)
  	}
  	return ret;
  }
@@ -284,8 +256,6 @@ index 14540bd..4e3b242 100644
  
  #ifdef CONFIG_SECURITY
  
-diff --git a/security/device_cgroup.c b/security/device_cgroup.c
-index 03c1652..f88c84b 100644
 --- a/security/device_cgroup.c
 +++ b/security/device_cgroup.c
 @@ -7,6 +7,7 @@
@@ -296,7 +266,7 @@ index 03c1652..f88c84b 100644
  #include <linux/list.h>
  #include <linux/uaccess.h>
  #include <linux/seq_file.h>
-@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct inode *inode, int mask)
+@@ -849,6 +850,7 @@ int __devcgroup_inode_permission(struct
  	return __devcgroup_check_permission(type, imajor(inode), iminor(inode),
  			access);
  }
@@ -304,11 +274,9 @@ index 03c1652..f88c84b 100644
  
  int devcgroup_inode_mknod(int mode, dev_t dev)
  {
-diff --git a/security/security.c b/security/security.c
-index 4838e7f..36c741e 100644
 --- a/security/security.c
 +++ b/security/security.c
-@@ -434,6 +434,7 @@ int security_path_rmdir(const struct path *dir, struct dentry *dentry)
+@@ -443,6 +443,7 @@ int security_path_rmdir(const struct pat
  		return 0;
  	return call_int_hook(path_rmdir, 0, dir, dentry);
  }
@@ -316,7 +284,7 @@ index 4838e7f..36c741e 100644
  
  int security_path_unlink(const struct path *dir, struct dentry *dentry)
  {
-@@ -450,6 +451,7 @@ int security_path_symlink(const struct path *dir, struct dentry *dentry,
+@@ -459,6 +460,7 @@ int security_path_symlink(const struct p
  		return 0;
  	return call_int_hook(path_symlink, 0, dir, dentry, old_name);
  }
@@ -324,7 +292,7 @@ index 4838e7f..36c741e 100644
  
  int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
  		       struct dentry *new_dentry)
-@@ -458,6 +460,7 @@ int security_path_link(struct dentry *old_dentry, const struct path *new_dir,
+@@ -467,6 +469,7 @@ int security_path_link(struct dentry *ol
  		return 0;
  	return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry);
  }
@@ -332,7 +300,7 @@ index 4838e7f..36c741e 100644
  
  int security_path_rename(const struct path *old_dir, struct dentry *old_dentry,
  			 const struct path *new_dir, struct dentry *new_dentry,
-@@ -485,6 +488,7 @@ int security_path_truncate(const struct path *path)
+@@ -494,6 +497,7 @@ int security_path_truncate(const struct
  		return 0;
  	return call_int_hook(path_truncate, 0, path);
  }
@@ -340,7 +308,7 @@ index 4838e7f..36c741e 100644
  
  int security_path_chmod(const struct path *path, umode_t mode)
  {
-@@ -492,6 +496,7 @@ int security_path_chmod(const struct path *path, umode_t mode)
+@@ -501,6 +505,7 @@ int security_path_chmod(const struct pat
  		return 0;
  	return call_int_hook(path_chmod, 0, path, mode);
  }
@@ -348,7 +316,7 @@ index 4838e7f..36c741e 100644
  
  int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
  {
-@@ -499,6 +504,7 @@ int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid)
+@@ -508,6 +513,7 @@ int security_path_chown(const struct pat
  		return 0;
  	return call_int_hook(path_chown, 0, path, uid, gid);
  }
@@ -356,7 +324,7 @@ index 4838e7f..36c741e 100644
  
  int security_path_chroot(const struct path *path)
  {
-@@ -584,6 +590,7 @@ int security_inode_readlink(struct dentry *dentry)
+@@ -593,6 +599,7 @@ int security_inode_readlink(struct dentr
  		return 0;
  	return call_int_hook(inode_readlink, 0, dentry);
  }
@@ -364,7 +332,7 @@ index 4838e7f..36c741e 100644
  
  int security_inode_follow_link(struct dentry *dentry, struct inode *inode,
  			       bool rcu)
-@@ -599,6 +606,7 @@ int security_inode_permission(struct inode *inode, int mask)
+@@ -608,6 +615,7 @@ int security_inode_permission(struct ino
  		return 0;
  	return call_int_hook(inode_permission, 0, inode, mask);
  }
@@ -372,7 +340,7 @@ index 4838e7f..36c741e 100644
  
  int security_inode_setattr(struct dentry *dentry, struct iattr *attr)
  {
-@@ -758,6 +766,7 @@ int security_file_permission(struct file *file, int mask)
+@@ -779,6 +787,7 @@ int security_file_permission(struct file
  
  	return fsnotify_perm(file, mask);
  }
@@ -380,7 +348,7 @@ index 4838e7f..36c741e 100644
  
  int security_file_alloc(struct file *file)
  {
-@@ -817,6 +826,7 @@ int security_mmap_file(struct file *file, unsigned long prot,
+@@ -838,6 +847,7 @@ int security_mmap_file(struct file *file
  		return ret;
  	return ima_file_mmap(file, prot);
  }
diff --git a/debian/patches/features/all/securelevel/acpi-disable-acpi-table-override-if-securelevel-is-s.patch b/debian/patches/features/all/securelevel/acpi-disable-acpi-table-override-if-securelevel-is-s.patch
index 3dfc71d..0491b2f 100644
--- a/debian/patches/features/all/securelevel/acpi-disable-acpi-table-override-if-securelevel-is-s.patch
+++ b/debian/patches/features/all/securelevel/acpi-disable-acpi-table-override-if-securelevel-is-s.patch
@@ -15,6 +15,7 @@ do not allow ACPI tables to be overridden if securelevel is set.
 
 Signed-off-by: Linn Crosetto <linn at hpe.com>
 [bwh: Forward-ported to 4.7: ACPI override code moved to drivers/acpi/tables.c]
+[bwh: Forward-ported to 4.9: adjust context]
 ---
  arch/x86/kernel/setup.c | 12 ++++++------
  drivers/acpi/tables.c   |  6 ++++++
@@ -22,7 +23,7 @@ Signed-off-by: Linn Crosetto <linn at hpe.com>
 
 --- a/arch/x86/kernel/setup.c
 +++ b/arch/x86/kernel/setup.c
-@@ -1155,6 +1155,12 @@ void __init setup_arch(char **cmdline_p)
+@@ -1153,6 +1153,12 @@ void __init setup_arch(char **cmdline_p)
  	/* Allocate bigger log buffer */
  	setup_log_buf(1);
  
@@ -35,7 +36,7 @@ Signed-off-by: Linn Crosetto <linn at hpe.com>
  	reserve_initrd();
  
  	acpi_table_upgrade();
-@@ -1163,12 +1169,6 @@ void __init setup_arch(char **cmdline_p)
+@@ -1161,12 +1167,6 @@ void __init setup_arch(char **cmdline_p)
  
  	io_delay_init();
  
@@ -50,15 +51,15 @@ Signed-off-by: Linn Crosetto <linn at hpe.com>
  	 */
 --- a/drivers/acpi/tables.c
 +++ b/drivers/acpi/tables.c
-@@ -36,6 +36,7 @@
+@@ -35,6 +35,7 @@
+ #include <linux/earlycpio.h>
  #include <linux/memblock.h>
  #include <linux/initrd.h>
- #include <linux/acpi.h>
 +#include <linux/security.h>
  #include "internal.h"
  
  #ifdef CONFIG_ACPI_CUSTOM_DSDT
-@@ -543,6 +544,12 @@ void __init acpi_table_upgrade(void)
+@@ -545,6 +546,12 @@ void __init acpi_table_upgrade(void)
  	if (table_nr == 0)
  		return;
  
diff --git a/debian/patches/features/all/securelevel/restrict-dev-mem-and-dev-kmem-when-securelevel-is-se.patch b/debian/patches/features/all/securelevel/restrict-dev-mem-and-dev-kmem-when-securelevel-is-se.patch
index 48cf73d..dd8676d 100644
--- a/debian/patches/features/all/securelevel/restrict-dev-mem-and-dev-kmem-when-securelevel-is-se.patch
+++ b/debian/patches/features/all/securelevel/restrict-dev-mem-and-dev-kmem-when-securelevel-is-se.patch
@@ -8,15 +8,14 @@ modification of the kernel at runtime. Prevent this if securelevel has been
 set.
 
 Signed-off-by: Matthew Garrett <mjg59 at srcf.ucam.org>
+[bwh: Forward-ported to 4.9: adjust context]
 ---
  drivers/char/mem.c | 6 ++++++
  1 file changed, 6 insertions(+)
 
-diff --git a/drivers/char/mem.c b/drivers/char/mem.c
-index cef0d40a3d74..c810f1e15c73 100644
 --- a/drivers/char/mem.c
 +++ b/drivers/char/mem.c
-@@ -167,6 +167,9 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
+@@ -164,6 +164,9 @@ static ssize_t write_mem(struct file *fi
  	if (p != *ppos)
  		return -EFBIG;
  
@@ -26,13 +25,13 @@ index cef0d40a3d74..c810f1e15c73 100644
  	if (!valid_phys_addr_range(p, count))
  		return -EFAULT;
  
-@@ -513,6 +516,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
+@@ -513,6 +516,9 @@ static ssize_t write_kmem(struct file *f
  	char *kbuf; /* k-addr because vwrite() takes vmlist_lock rwlock */
  	int err = 0;
  
 +	if (get_securelevel() > 0)
 +		return -EPERM;
 +
- 	if (p < (unsigned long) high_memory) {
- 		unsigned long to_write = min_t(unsigned long, count,
- 					       (unsigned long)high_memory - p);
+ 	if (!pfn_valid(PFN_DOWN(p)))
+ 		return -EIO;
+ 
diff --git a/debian/patches/features/arm/arm-dts-imx53-add-support-for-usb-armory-board.patch b/debian/patches/features/arm/arm-dts-imx53-add-support-for-usb-armory-board.patch
deleted file mode 100644
index dc5cf39..0000000
--- a/debian/patches/features/arm/arm-dts-imx53-add-support-for-usb-armory-board.patch
+++ /dev/null
@@ -1,262 +0,0 @@
-From: Andrej Rosano <andrej at inversepath.com>
-Date: Mon, 5 Sep 2016 12:11:17 +0200
-Subject: ARM: dts: imx53: add support for USB armory board
-Origin: https://git.kernel.org/linus/17028ca2a5030a2e97f87b3290f814ba860480c0
-Bug-Debian: https://bugs.debian.org/840137
-
-Add support for Inverse Path USB armory board, an open source
-flash-drive sized computer based on NXP i.MX53 SoC.
-
-https://inversepath.com/usbarmory
-
-Signed-off-by: Andrej Rosano <andrej at inversepath.com>
-Tested-by: Vagrant Cascadian <vagrant at debian.org>
-Signed-off-by: Shawn Guo <shawnguo at kernel.org>
----
- arch/arm/boot/dts/Makefile            |   1 +
- arch/arm/boot/dts/imx53-usbarmory.dts | 224 ++++++++++++++++++++++++++++++++++
- 2 files changed, 225 insertions(+)
- create mode 100644 arch/arm/boot/dts/imx53-usbarmory.dts
-
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index 5dcc2394fbad..f79cac25afa8 100644
---- a/arch/arm/boot/dts/Makefile
-+++ b/arch/arm/boot/dts/Makefile
-@@ -315,6 +315,7 @@ dtb-$(CONFIG_SOC_IMX53) += \
- 	imx53-smd.dtb \
- 	imx53-tx53-x03x.dtb \
- 	imx53-tx53-x13x.dtb \
-+	imx53-usbarmory.dtb \
- 	imx53-voipac-bsb.dtb
- dtb-$(CONFIG_SOC_IMX6Q) += \
- 	imx6dl-apf6dev.dtb \
-diff --git a/arch/arm/boot/dts/imx53-usbarmory.dts b/arch/arm/boot/dts/imx53-usbarmory.dts
-new file mode 100644
-index 000000000000..6782d7fc5961
---- /dev/null
-+++ b/arch/arm/boot/dts/imx53-usbarmory.dts
-@@ -0,0 +1,224 @@
-+/*
-+ * USB armory MkI device tree file
-+ * https://inversepath.com/usbarmory
-+ *
-+ * Copyright (C) 2015, Inverse Path
-+ * Andrej Rosano <andrej at inversepath.com>
-+ *
-+ * This file is dual-licensed: you can use it either under the terms
-+ * of the GPL or the X11 license, at your option. Note that this dual
-+ * licensing only applies to this file, and not this project as a
-+ * whole.
-+ *
-+ *  a) This file is free software; you can redistribute it and/or
-+ *     modify it under the terms of the GNU General Public License as
-+ *     published by the Free Software Foundation; either version 2 of the
-+ *     License, or (at your option) any later version.
-+ *
-+ *     This file is distributed in the hope that it will be useful,
-+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ *     GNU General Public License for more details.
-+ *
-+ * Or, alternatively,
-+ *
-+ *  b) Permission is hereby granted, free of charge, to any person
-+ *     obtaining a copy of this software and associated documentation
-+ *     files (the "Software"), to deal in the Software without
-+ *     restriction, including without limitation the rights to use,
-+ *     copy, modify, merge, publish, distribute, sublicense, and/or
-+ *     sell copies of the Software, and to permit persons to whom the
-+ *     Software is furnished to do so, subject to the following
-+ *     conditions:
-+ *
-+ *     The above copyright notice and this permission notice shall be
-+ *     included in all copies or substantial portions of the Software.
-+ *
-+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-+ *     OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/dts-v1/;
-+#include "imx53.dtsi"
-+
-+/ {
-+	model = "Inverse Path USB armory";
-+	compatible = "inversepath,imx53-usbarmory", "fsl,imx53";
-+};
-+
-+/ {
-+	chosen {
-+		stdout-path = &uart1;
-+	};
-+
-+	memory {
-+		reg = <0x70000000 0x20000000>;
-+	};
-+
-+	leds {
-+		compatible = "gpio-leds";
-+		pinctrl-names = "default";
-+		pinctrl-0 = <&pinctrl_led>;
-+
-+		user {
-+			label = "LED";
-+			gpios = <&gpio4 27 GPIO_ACTIVE_LOW>;
-+			linux,default-trigger = "heartbeat";
-+		};
-+	};
-+};
-+
-+/*
-+ * Not every i.MX53 P/N supports clock > 800MHz.
-+ * As USB armory does not mount a specific P/N set a safe clock upper limit.
-+ */
-+&cpu0 {
-+	operating-points = <
-+		/* kHz */
-+		166666  850000
-+		400000  900000
-+		800000 1050000
-+	>;
-+};
-+
-+&esdhc1 {
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&pinctrl_esdhc1>;
-+	status = "okay";
-+};
-+
-+&iomuxc {
-+	pinctrl_esdhc1: esdhc1grp {
-+		fsl,pins = <
-+			MX53_PAD_SD1_DATA0__ESDHC1_DAT0		0x1d5
-+			MX53_PAD_SD1_DATA1__ESDHC1_DAT1		0x1d5
-+			MX53_PAD_SD1_DATA2__ESDHC1_DAT2		0x1d5
-+			MX53_PAD_SD1_DATA3__ESDHC1_DAT3		0x1d5
-+			MX53_PAD_SD1_CMD__ESDHC1_CMD		0x1d5
-+			MX53_PAD_SD1_CLK__ESDHC1_CLK		0x1d5
-+		>;
-+	};
-+
-+	pinctrl_i2c1_pmic: i2c1grp {
-+		fsl,pins = <
-+			MX53_PAD_EIM_D21__I2C1_SCL	0x80
-+			MX53_PAD_EIM_D28__I2C1_SDA	0x80
-+		>;
-+	};
-+
-+	pinctrl_led: ledgrp {
-+		fsl,pins = <
-+			MX53_PAD_DISP0_DAT6__GPIO4_27 0x1e4
-+		>;
-+	};
-+
-+	/*
-+	 * UART mode pin header configration
-+	 * 3 - GPIO5[26], pull-down 100K
-+	 * 4 - GPIO5[27], pull-down 100K
-+	 * 5 - TX, pull-up 100K
-+	 * 6 - RX, pull-up 100K
-+	 * 7 - GPIO5[30], pull-down 100K
-+	 */
-+	pinctrl_uart1: uart1grp {
-+		fsl,pins = <
-+			MX53_PAD_CSI0_DAT8__GPIO5_26		0xc0
-+			MX53_PAD_CSI0_DAT9__GPIO5_27		0xc0
-+			MX53_PAD_CSI0_DAT10__UART1_TXD_MUX	0x1e4
-+			MX53_PAD_CSI0_DAT11__UART1_RXD_MUX	0x1e4
-+			MX53_PAD_CSI0_DAT12__GPIO5_30		0xc0
-+		>;
-+	};
-+};
-+
-+&i2c1 {
-+	pinctrl-0 = <&pinctrl_i2c1_pmic>;
-+	status = "okay";
-+
-+	ltc3589: pmic at 34 {
-+		compatible = "lltc,ltc3589-2";
-+		reg = <0x34>;
-+
-+		regulators {
-+			sw1_reg: sw1 {
-+				regulator-min-microvolt = <591930>;
-+				regulator-max-microvolt = <1224671>;
-+				lltc,fb-voltage-divider = <100000 158000>;
-+				regulator-ramp-delay = <7000>;
-+				regulator-boot-on;
-+				regulator-always-on;
-+			};
-+
-+			sw2_reg: sw2 {
-+				regulator-min-microvolt = <704123>;
-+				regulator-max-microvolt = <1456803>;
-+				lltc,fb-voltage-divider = <180000 191000>;
-+				regulator-ramp-delay = <7000>;
-+				regulator-boot-on;
-+				regulator-always-on;
-+			};
-+
-+			sw3_reg: sw3 {
-+				regulator-min-microvolt = <1341250>;
-+				regulator-max-microvolt = <2775000>;
-+				lltc,fb-voltage-divider = <270000 100000>;
-+				regulator-ramp-delay = <7000>;
-+				regulator-boot-on;
-+				regulator-always-on;
-+			};
-+
-+			bb_out_reg: bb-out {
-+				regulator-min-microvolt = <3387341>;
-+				regulator-max-microvolt = <3387341>;
-+				lltc,fb-voltage-divider = <511000 158000>;
-+				regulator-boot-on;
-+				regulator-always-on;
-+			};
-+
-+			ldo1_reg: ldo1 {
-+				regulator-min-microvolt = <1306329>;
-+				regulator-max-microvolt = <1306329>;
-+				lltc,fb-voltage-divider = <100000 158000>;
-+				regulator-boot-on;
-+				regulator-always-on;
-+			};
-+
-+			ldo2_reg: ldo2 {
-+				regulator-min-microvolt = <704123>;
-+				regulator-max-microvolt = <1456806>;
-+				lltc,fb-voltage-divider = <180000 191000>;
-+				regulator-ramp-delay = <7000>;
-+				regulator-boot-on;
-+				regulator-always-on;
-+			};
-+
-+			ldo3_reg: ldo3 {
-+				regulator-min-microvolt = <2800000>;
-+				regulator-max-microvolt = <2800000>;
-+				regulator-boot-on;
-+			};
-+
-+			ldo4_reg: ldo4 {
-+				regulator-min-microvolt = <1200000>;
-+				regulator-max-microvolt = <3200000>;
-+			};
-+		};
-+	};
-+};
-+
-+&uart1 {
-+	pinctrl-names = "default";
-+	pinctrl-0 = <&pinctrl_uart1>;
-+	status = "okay";
-+};
-+
-+&usbotg {
-+	dr_mode = "peripheral";
-+	status = "okay";
-+};
diff --git a/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch b/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch
index 755dda3..d606fbf 100644
--- a/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch
+++ b/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch
@@ -28,7 +28,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
 
 --- a/Documentation/kernel-parameters.txt
 +++ b/Documentation/kernel-parameters.txt
-@@ -3877,6 +3877,10 @@ bytes respectively. Such letter suffixes
+@@ -4005,6 +4005,10 @@ bytes respectively. Such letter suffixes
  
  	switches=	[HW,M68k]
  
@@ -41,7 +41,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
  			on older distributions. When this option is enabled
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
-@@ -2665,6 +2665,14 @@ config X86_X32
+@@ -2721,6 +2721,14 @@ config X86_X32
  	  elf32_x86_64 support enabled to compile a kernel with this
  	  option set.
  
@@ -77,7 +77,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
  # error "The following code assumes __USER32_DS == __USER_DS"
 --- a/arch/x86/entry/entry_64.S
 +++ b/arch/x86/entry/entry_64.S
-@@ -193,8 +193,12 @@ entry_SYSCALL_64_fastpath:
+@@ -195,8 +195,12 @@ entry_SYSCALL_64_fastpath:
  #if __SYSCALL_MASK == ~0
  	cmpq	$__NR_syscall_max, %rax
  #else
@@ -92,7 +92,7 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
  #endif
  	ja	1f				/* return -ENOSYS (already in pt_regs->ax) */
  	movq	%r10, %rcx
-@@ -324,6 +328,16 @@ opportunistic_sysret_failed:
+@@ -331,6 +335,16 @@ opportunistic_sysret_failed:
  	jmp	restore_c_regs_and_iret
  END(entry_SYSCALL_64)
  
@@ -165,15 +165,15 @@ Signed-off-by: Ben Hutchings <ben at decadent.org.uk>
 +#endif
 --- a/arch/x86/entry/common.c
 +++ b/arch/x86/entry/common.c
-@@ -334,6 +334,7 @@ __visible void do_syscall_64(struct pt_r
+@@ -264,6 +264,7 @@ __visible void do_syscall_64(struct pt_r
  {
- 	struct thread_info *ti = pt_regs_to_thread_info(regs);
+ 	struct thread_info *ti = current_thread_info();
  	unsigned long nr = regs->orig_ax;
 +	unsigned int syscall_mask, nr_syscalls_enabled;
  
  	enter_from_user_mode();
  	local_irq_enable();
-@@ -346,8 +347,19 @@ __visible void do_syscall_64(struct pt_r
+@@ -276,8 +277,19 @@ __visible void do_syscall_64(struct pt_r
  	 * table.  The only functional difference is the x32 bit in
  	 * regs->orig_ax, which changes the behavior of some syscalls.
  	 */
diff --git a/debian/patches/series b/debian/patches/series
index a1f66d4..de5129d 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -54,7 +54,6 @@ features/mips/MIPS-Loongson-3-Add-Loongson-LS3A-RS780E-1-way-machi.patch
 features/mips/MIPS-octeon-Add-support-for-the-UBNT-E200-board.patch
 features/x86/x86-memtest-WARN-if-bad-RAM-found.patch
 features/x86/x86-make-x32-syscall-support-conditional.patch
-features/arm/arm-dts-imx53-add-support-for-usb-armory-board.patch
 
 # Miscellaneous bug fixes
 bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
@@ -95,7 +94,6 @@ features/all/securelevel/arm64-add-kernel-config-option-to-set-securelevel-wh.pa
 bugfix/all/ptrace-being-capable-wrt-a-process-requires-mapped-uids-gids.patch
 debian/i386-686-pae-pci-set-pci-nobios-by-default.patch
 bugfix/all/net-add-recursion-limit-to-gro.patch
-bugfix/all/posix_acl-clear-sgid-bit-when-setting-file-permissio.patch
 bugfix/all/KEYS-Fix-short-sprintf-buffer-in-proc-keys-show-func.patch
 
 # ABI maintenance

-- 
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