[linux] 02/03: Update to 4.8.6

debian-kernel at lists.debian.org debian-kernel at lists.debian.org
Thu Nov 3 18:17:16 UTC 2016


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

benh pushed a commit to branch sid
in repository linux.

commit 0acd08301db2a60842cb795c144760241c4655d2
Author: Ben Hutchings <ben at decadent.org.uk>
Date:   Thu Nov 3 12:08:20 2016 -0600

    Update to 4.8.6
---
 debian/changelog                                   | 108 ++++-
 ...lear-sgid-bit-when-setting-file-permissio.patch | 433 ---------------------
 debian/patches/series                              |   1 -
 3 files changed, 107 insertions(+), 435 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 842acf6..ffa5c1f 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,5 +1,111 @@
-linux (4.8.5-2) UNRELEASED; urgency=medium
+linux (4.8.6-1) UNRELEASED; urgency=medium
 
+  * New upstream stable update:
+    https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.8.6
+    - [armhf,arm64] drm/vc4: Fix races when the CS reads from render targets.
+    - [x86] drm/i915/backlight: setup and cache pwm alternate increment value
+    - [x86] drm/i915/backlight: setup backlight pwm alternate increment on
+      backlight enable
+    - [x86] drm/amdgpu: fix IB alignment for UVD
+    - [x86] drm/amdgpu/dce10: disable hpd on local panels
+    - [x86] drm/amdgpu/dce8: disable hpd on local panels
+    - [x86] drm/amdgpu/dce11: disable hpd on local panels
+    - [x86] drm/amdgpu/dce11: add missing drm_mode_config_cleanup call
+    - [x86] drm/amdgpu: initialize the context reset_counter in amdgpu_ctx_init
+    - [x86] drm/amdgpu: change vblank_time's calculation method to reduce
+      computational error.
+    - drm/radeon: narrow asic_init for virtualization
+    - drm/radeon/si/dpm: fix phase shedding setup
+    - drm/radeon: change vblank_time's calculation method to reduce
+      computational error.
+    - [x86] drm/vmwgfx: Limit the user-space command buffer size
+    - [x86] drm/amd/powerplay: fix mclk not switching back after multi-head
+      was disabled
+    - [x86] drm/i915/skl: Update plane watermarks atomically during plane
+      updates
+    - [x86] drm/i915: Move CRTC updating in atomic_commit into it's own hook
+    - [x86] drm/i915/skl: Update DDB values atomically with wms/plane attrs
+    - [x86] drm/i915/skl: Don't try to update plane watermarks if they haven't
+      changed
+    - [x86] drm/i915/gen9: only add the planes actually affected by ddb changes
+    - [x86] drm/i915/gen9: fix the WaWmMemoryReadLatency implementation
+    - [x86] drm/i915/gen9: minimum scanlines for Y tile is not always 4
+    - [x86] drm/i915/gen9: fix plane_blocks_per_line on watermarks calculations
+    - [x86] drm/i915/gen9: fix the watermark res_blocks value
+    - [x86] drm/i915: SAGV is not SKL-only, so rename a few things
+    - [x86] drm/i915: introduce intel_has_sagv()
+    - [x86] drm/i915/kbl: KBL also needs to run the SAGV code
+    - [x86] Revert "drm/i915: Check live status before reading edid"
+    - [x86] drm/i915: Account for TSEG size when determining 865G stolen base
+    - [x86] drm/i915/skl: Ensure pipes with changed wms get added to the state
+    - [x86] drm/i915: Allow PCH DPLL sharing regardless of DPLL_SDVO_HIGH_SPEED
+    - [x86] drm/i915: Move long hpd handling into the hotplug work
+    - [x86] drm/i915: Allow DP to work w/o EDID
+    - [x86] drm/i915: Just clear the mmiodebug before a register access
+    - [x86] drm/i915: Unalias obj->phys_handle and obj->userptr
+    - rt2x00usb: Fix error return code
+    - uio: fix dmem_region_start computation
+    - i40e: remove a stray unlock
+    - i40e: fix broken i40e_config_rss_aq function
+    - mwifiex: correct aid value during tdls setup
+    - mwifiex: fix failed to reconnect after interface disabled/enabled
+    - ath10k: Add WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT wmi service
+    - ath10k: fix sending frame in management path in push txq logic
+    - ath10k: fix reporting channel survey data
+    - ath10k: fix throughput regression in multi client mode
+    - [armel/marvell,armhf] crypto: marvell - Don't overwrite default
+      creq->state during initialization
+    - crypto: gcm - Fix IV buffer size in crypto_gcm_setkey
+    - [armel/marvell,armhf] crypto: marvell - Update transformation context for
+      each dequeued req
+    - [x86] crypto: ccp - Fix return value check in ccp_dmaengine_register()
+    - [armhf] hwrng: omap - Only fail if pm_runtime_get_sync returns < 0
+    - ASoC: topology: Fix error return code in soc_tplg_dapm_widget_create()
+    - ASoC: dapm: Fix possible uninitialized variable in
+      snd_soc_dapm_get_volsw()
+    - ASoC: dapm: Fix value setting for _ENUM_DOUBLE MUX's second channel
+    - ASoC: dapm: Fix kcontrol creation for output driver widget
+    - staging: r8188eu: Fix scheduling while atomic splat
+    - IB/qib: Remove qpt_mask global
+    - IB/mlx5: Fix steering resource leak
+    - mm/hugetlb: check for reserved hugepages during memory offline
+    - mm/hugetlb: improve locking in dissolve_free_huge_pages()
+    - [x86] drm/vmwgfx: Avoid validating views on view destruction
+    - [s390x] cio: fix accidental interrupt enabling during resume
+    - [s390x] con3270: fix use of uninitialised data
+    - [s390x] con3270: fix insufficient space padding
+    - [armhf,arm64] clk: bcm2835: Skip PLLC clocks when deciding on a new
+      clock parent
+    - [arm64] clk: gcc-msm8996: Fix pcie 2 pipe register offset
+    - [arm64] clk: qcom: select GDSC for msm8996 gcc and mmcc
+    - clk: Return errors from clk providers in __of_clk_get_from_provider()
+    - clk: core: Force setting the phase delay when no change
+    - clk: divider: Fix clk_divider_round_rate() to use clk_readl()
+    - perf hists browser: Fix event group display
+    - perf ui/tui: Reset output width for hierarchy
+    - perf ui/stdio: Always reset output width for hierarchy
+    - perf symbols: Check symbol_conf.allow_aliases for kallsyms loading too
+    - perf symbols: Fixup symbol sizes before picking best ones
+    - iwlwifi: check for valid ethernet address provided by OEM
+    - iwlwifi: mvm: fix pending frames tracking on tx resp
+    - iwlwifi: mvm: call a different txq_enable function
+    - iwlwifi: mvm: free reserved queue on STA removal
+    - iwlwifi: mvm: support BAR in reorder buffer
+    - iwlwifi: mvm: disable P2P queue on mac context release
+    - iwlwifi: mvm: bail out if CTDP start operation fails
+    - [armhf,arm64] pinctrl: qcom: fix masking of pinmux functions
+    - mpt3sas: Don't spam logs if logging level is 0
+    - [powerpc*] Always restore FPU/VEC/VSX if hardware transactional memory
+      in use
+    - [powerpc*] Add check_if_tm_restore_required() to giveup_all()
+    - [powerpc*] nvram: Fix an incorrect partition merge
+    - [powerpc*] Fix usage of _PAGE_RO in hugepage
+    - [armhf] dts: omap3: overo: add missing unit name for lcd35 display
+    - PCI: generic: Fix pci_remap_iospace() failure path
+    - [armhf] PCI: tegra: Fix pci_remap_iospace() failure path
+    - libnvdimm: clear the internal poison_list when clearing badblocks
+
+  [ Ben Hutchings ]
   * debian/control: Fix build-dependency on openssl to work with new
     versions that have M-A: allowed (Closes: #839145)
 
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/series b/debian/patches/series
index a1f66d4..968e787 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -95,7 +95,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