From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
stable@vger.kernel.org, Steve French <smfrench@gmail.com>,
Shirish Pargaonkar <spargaonkar@suse.com>
Subject: [PATCH 3.13 09/99] retrieving CIFS ACLs when mounted with SMB2 fails dropping session
Date: Thu, 20 Feb 2014 15:52:04 -0800 [thread overview]
Message-ID: <20140220235118.478665343@linuxfoundation.org> (raw)
In-Reply-To: <20140220235118.191692546@linuxfoundation.org>
3.13-stable review patch. If anyone has any objections, please let me know.
------------------
From: Steve French <smfrench@gmail.com>
commit 83e3bc23ef9ce7c03b7b4e5d3d790246ea59db3e upstream.
The get/set ACL xattr support for CIFS ACLs attempts to send old
cifs dialect protocol requests even when mounted with SMB2 or later
dialects. Sending cifs requests on an smb2 session causes problems -
the server drops the session due to the illegal request.
This patch makes CIFS ACL operations protocol specific to fix that.
Attempting to query/set CIFS ACLs for SMB2 will now return
EOPNOTSUPP (until we add worker routines for sending query
ACL requests via SMB2) instead of sending invalid (cifs)
requests.
A separate followon patch will be needed to fix cifs_acl_to_fattr
(which takes a cifs specific u16 fid so can't be abstracted
to work with SMB2 until that is changed) and will be needed
to fix mount problems when "cifsacl" is specified on mount
with e.g. vers=2.1
Signed-off-by: Steve French <smfrench@gmail.com>
Reviewed-by: Shirish Pargaonkar <spargaonkar@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/cifs/cifsacl.c | 28 ++++++++++++++++++++++++----
fs/cifs/cifsglob.h | 4 ++++
fs/cifs/smb1ops.c | 4 ++++
fs/cifs/xattr.c | 15 +++++++++++----
4 files changed, 43 insertions(+), 8 deletions(-)
--- a/fs/cifs/cifsacl.c
+++ b/fs/cifs/cifsacl.c
@@ -1027,15 +1027,30 @@ id_mode_to_cifs_acl(struct inode *inode,
__u32 secdesclen = 0;
struct cifs_ntsd *pntsd = NULL; /* acl obtained from server */
struct cifs_ntsd *pnntsd = NULL; /* modified acl to be sent to server */
+ struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb);
+ struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);
+ struct cifs_tcon *tcon;
+
+ if (IS_ERR(tlink))
+ return PTR_ERR(tlink);
+ tcon = tlink_tcon(tlink);
cifs_dbg(NOISY, "set ACL from mode for %s\n", path);
/* Get the security descriptor */
- pntsd = get_cifs_acl(CIFS_SB(inode->i_sb), inode, path, &secdesclen);
+
+ if (tcon->ses->server->ops->get_acl == NULL) {
+ cifs_put_tlink(tlink);
+ return -EOPNOTSUPP;
+ }
+
+ pntsd = tcon->ses->server->ops->get_acl(cifs_sb, inode, path,
+ &secdesclen);
if (IS_ERR(pntsd)) {
rc = PTR_ERR(pntsd);
cifs_dbg(VFS, "%s: error %d getting sec desc\n", __func__, rc);
- goto out;
+ cifs_put_tlink(tlink);
+ return rc;
}
/*
@@ -1048,6 +1063,7 @@ id_mode_to_cifs_acl(struct inode *inode,
pnntsd = kmalloc(secdesclen, GFP_KERNEL);
if (!pnntsd) {
kfree(pntsd);
+ cifs_put_tlink(tlink);
return -ENOMEM;
}
@@ -1056,14 +1072,18 @@ id_mode_to_cifs_acl(struct inode *inode,
cifs_dbg(NOISY, "build_sec_desc rc: %d\n", rc);
+ if (tcon->ses->server->ops->set_acl == NULL)
+ rc = -EOPNOTSUPP;
+
if (!rc) {
/* Set the security descriptor */
- rc = set_cifs_acl(pnntsd, secdesclen, inode, path, aclflag);
+ rc = tcon->ses->server->ops->set_acl(pnntsd, secdesclen, inode,
+ path, aclflag);
cifs_dbg(NOISY, "set_cifs_acl rc: %d\n", rc);
}
+ cifs_put_tlink(tlink);
kfree(pnntsd);
kfree(pntsd);
-out:
return rc;
}
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -391,6 +391,10 @@ struct smb_version_operations {
int (*set_EA)(const unsigned int, struct cifs_tcon *, const char *,
const char *, const void *, const __u16,
const struct nls_table *, int);
+ struct cifs_ntsd * (*get_acl)(struct cifs_sb_info *, struct inode *,
+ const char *, u32 *);
+ int (*set_acl)(struct cifs_ntsd *, __u32, struct inode *, const char *,
+ int);
};
struct smb_version_values {
--- a/fs/cifs/smb1ops.c
+++ b/fs/cifs/smb1ops.c
@@ -1015,6 +1015,10 @@ struct smb_version_operations smb1_opera
.query_all_EAs = CIFSSMBQAllEAs,
.set_EA = CIFSSMBSetEA,
#endif /* CIFS_XATTR */
+#ifdef CONFIG_CIFS_ACL
+ .get_acl = get_cifs_acl,
+ .set_acl = set_cifs_acl,
+#endif /* CIFS_ACL */
};
struct smb_version_values smb1_values = {
--- a/fs/cifs/xattr.c
+++ b/fs/cifs/xattr.c
@@ -176,8 +176,12 @@ int cifs_setxattr(struct dentry *direntr
rc = -ENOMEM;
} else {
memcpy(pacl, ea_value, value_size);
- rc = set_cifs_acl(pacl, value_size,
- direntry->d_inode, full_path, CIFS_ACL_DACL);
+ if (pTcon->ses->server->ops->set_acl)
+ rc = pTcon->ses->server->ops->set_acl(pacl,
+ value_size, direntry->d_inode,
+ full_path, CIFS_ACL_DACL);
+ else
+ rc = -EOPNOTSUPP;
if (rc == 0) /* force revalidate of the inode */
CIFS_I(direntry->d_inode)->time = 0;
kfree(pacl);
@@ -323,8 +327,11 @@ ssize_t cifs_getxattr(struct dentry *dir
u32 acllen;
struct cifs_ntsd *pacl;
- pacl = get_cifs_acl(cifs_sb, direntry->d_inode,
- full_path, &acllen);
+ if (pTcon->ses->server->ops->get_acl == NULL)
+ goto get_ea_exit; /* rc already EOPNOTSUPP */
+
+ pacl = pTcon->ses->server->ops->get_acl(cifs_sb,
+ direntry->d_inode, full_path, &acllen);
if (IS_ERR(pacl)) {
rc = PTR_ERR(pacl);
cifs_dbg(VFS, "%s: error %zd getting sec desc\n",
next prev parent reply other threads:[~2014-02-20 23:53 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-20 23:51 [PATCH 3.13 00/99] 3.13.5-stable review Greg Kroah-Hartman
2014-02-20 23:51 ` [PATCH 3.13 01/99] xen: properly account for _PAGE_NUMA during xen pte translations Greg Kroah-Hartman
2014-02-20 23:51 ` [PATCH 3.13 02/99] xen-blkfront: handle backend CLOSED without CLOSING Greg Kroah-Hartman
2014-02-20 23:51 ` [PATCH 3.13 03/99] fs/file.c:fdtable: avoid triggering OOMs from alloc_fdmem Greg Kroah-Hartman
2014-02-20 23:51 ` [PATCH 3.13 04/99] mm: fix page leak at nfs_symlink() Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 05/99] mm/memory-failure.c: move refcount only in !MF_COUNT_INCREASED Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 07/99] CIFS: Fix SMB2 mounts so they dont try to set or get xattrs via cifs Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 08/99] Add protocol specific operation for CIFS xattrs Greg Kroah-Hartman
2014-02-20 23:52 ` Greg Kroah-Hartman [this message]
2014-02-20 23:52 ` [PATCH 3.13 10/99] mac80211: move roc cookie assignment earlier Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 11/99] mac80211: release the channel in error path in start_ap Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 12/99] mac80211: Fix IBSS disconnect Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 13/99] mac80211: fix fragmentation code, particularly for encryption Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 14/99] ath9k_htc: make ->sta_rc_update atomic for most calls Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 15/99] ath9k_htc: Do not support PowerSave by default Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 16/99] ath9k: " Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 17/99] ar5523: fix usb id for Gigaset Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 18/99] s390/dump: Fix dump memory detection Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 19/99] s390: fix kernel crash due to linkage stack instructions Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 20/99] nl80211: Reset split_start when netlink skb is exhausted Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 21/99] spi: Fix crash with double message finalisation on error handling Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 22/99] iwlwifi: mvm: dont allow A band if SKU forbids it Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 23/99] iwlwifi: mvm: disable scheduled scan Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 24/99] iwlwifi: mvm: print the version of the firmware when it asserts Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 25/99] iwlwifi: add more 7265 HW IDs Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 26/99] iwlwifi: mvm: BT Coex - disable BT when TXing probe request in scan Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 27/99] powerpc: Fix endian issues in kexec and crash dump code Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 28/99] of: fix PCI bus match for PCIe slots Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 29/99] spi: nuc900: Set SPI_LSB_FIRST for master->mode_bits if hw->pdata->lsb is true Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 30/99] serial: sirf: fix kernel panic caused by unpaired spinlock Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 31/99] raw: test against runtime value of max_raw_minors Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 32/99] hwmon: (ntc_thermistor) Avoid math overflow Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 33/99] lockd: send correct lock when granting a delayed lock Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 34/99] tty: n_gsm: Fix for modems with brk in modem status control Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 35/99] tty: Set correct tty name in active sysfs attribute Greg Kroah-Hartman
2014-02-21 14:48 ` Josh Boyer
2014-02-21 14:52 ` Hannes Reinecke
2014-02-21 14:56 ` Josh Boyer
2014-02-21 16:01 ` Kay Sievers
2014-02-21 22:53 ` Ray Strode
2014-02-22 13:25 ` David Herrmann
2014-02-22 13:40 ` Peter Hurley
2014-02-21 14:56 ` Peter Hurley
2014-02-21 16:01 ` Greg Kroah-Hartman
2014-02-21 20:21 ` Greg Kroah-Hartman
2014-02-21 22:18 ` Ray Strode
2014-02-22 15:16 ` Hannes Reinecke
2014-02-22 14:27 ` David Herrmann
2014-02-23 0:23 ` Ray Strode
[not found] ` <CAA_UwzKrqBw3o3z4LGkYfQ3H11ERKQCscdHNSjkVgHs9F117ow@mail.gmail.com>
2014-02-23 15:05 ` David Herrmann
2014-02-24 9:51 ` Hannes Reinecke
2014-02-23 14:41 ` Ray Strode
2014-02-20 23:52 ` [PATCH 3.13 36/99] n_tty: Fix stale echo output Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 37/99] drm/radeon: fix UVD IRQ support on 7xx Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 41/99] drm/i915: Pair va_copy with va_end in i915_error_vprintf Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 42/99] drm/radeon: consolidate sdma hdp flushing code for CIK Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 43/99] drm/radeon/cik: use POLL_REG_MEM special op for sDMA HDP flush Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 49/99] staging: r8188eu: Fix typo in USB_DEVICE list Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 50/99] staging: comedi: adv_pci1710: fix analog output readback value Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 51/99] staging:iio:impedance:ad5933: correct error check Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 52/99] staging:iio:ad799x fix error_free_irq which was freeing an irq that may not have been requested Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 53/99] staging:iio:ad799x fix typo in ad799x_events[] Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 54/99] iio: max1363: Use devm_regulator_get_optional for optional regulator Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 55/99] iio: adis16400: Set timestamp as the last element in chan_spec Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 56/99] iio: ak8975: Fix calculation formula for convert micro tesla to gauss unit Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 57/99] x86, smap: Dont enable SMAP if CONFIG_X86_SMAP is disabled Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 58/99] x86, smap: smap_violation() is bogus if CONFIG_X86_SMAP is off Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 59/99] ftrace/x86: Use breakpoints for converting function graph caller Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 60/99] ALSA: hda - Add a headset quirk for Dell XPS 13 Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 61/99] ALSA: hda - Fix mic capture on Sony VAIO Pro 11 Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 62/99] mei: clear write cb from waiting list on reset Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 63/99] mei: dont unset read cb ptr " Greg Kroah-Hartman
2014-02-20 23:52 ` [PATCH 3.13 64/99] VME: Correct read/write alignment algorithm Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 65/99] Drivers: hv: vmbus: Specify the target CPU that should receive notification Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 66/99] Drivers: hv: vmbus: Dont timeout during the initial connection with host Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 68/99] USB: ftdi_sio: add Tagsys RFID Reader IDs Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 69/99] usb-storage: add unusual-devs entry for BlackBerry 9000 Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 70/99] usb-storage: restrict bcdDevice range for Super Top in Cypress ATACB Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 71/99] usb-storage: enable multi-LUN scanning when needed Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 72/99] usb: option: blacklist ZTE MF667 net interface Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 75/99] Revert "xhci: Set scatter-gather limit to avoid failed block writes." Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 76/99] Revert "xhci: Avoid infinite loop when sg urb requires too many trbs" Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 77/99] Revert "usb: xhci: Link TRB must not occur within a USB payload burst" Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 78/99] Revert "usbcore: set lpm_capable field for LPM capable root hubs" Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 79/99] Modpost: fixed USB alias generation for ranges including 0x9 and 0xA Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 80/99] block: __elv_next_request() shouldnt call into the elevator if bypassing Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 81/99] block: Fix nr_vecs for inline integrity vectors Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 82/99] block: add cond_resched() to potentially long running ioctl discard loop Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 83/99] ACPI / hotplug / PCI: Relax the checking of _STA return values Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 84/99] compiler/gcc4: Make quirk for asm_volatile_goto() unconditional Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 85/99] misc: mic: fix possible signed underflow (undefined behavior) in userspace API Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 86/99] IB/qib: Add missing serdes init sequence Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 87/99] KVM: return an error code in kvm_vm_ioctl_register_coalesced_mmio() Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 88/99] tick: Clear broadcast pending bit when switching to oneshot Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 89/99] md/raid1: restore ability for check and repair to fix read errors Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 90/99] md/raid5: Fix CPU hotplug callback registration Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 91/99] i2c: mv64xxx: refactor message start to ensure proper initialization Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 92/99] time: Fix overflow when HZ is smaller than 60 Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 93/99] power: max17040: Fix NULL pointer dereference when there is no platform_data Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 94/99] ring-buffer: Fix first commit on sub-buffer having non-zero delta Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 95/99] target: Fix free-after-use regression in PR unregister Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 96/99] genirq: Add missing irq_to_desc export for CONFIG_SPARSE_IRQ=n Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 97/99] drivers/edac/edac_mc_sysfs.c: poll timeout cannot be zero Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 98/99] EDAC: Poll timeout cannot be zero, p2 Greg Kroah-Hartman
2014-02-20 23:53 ` [PATCH 3.13 99/99] EDAC: Correct workqueue setup path Greg Kroah-Hartman
2014-02-21 5:03 ` [PATCH 3.13 00/99] 3.13.5-stable review Guenter Roeck
2014-02-21 23:42 ` Shuah Khan
2014-02-22 1:50 ` Satoru Takeuchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140220235118.478665343@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=smfrench@gmail.com \
--cc=spargaonkar@suse.com \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).