[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