summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-11-01 15:59:39 +0100
committerLinus Torvalds <torvalds@linux-foundation.org>2017-11-01 15:59:39 +0100
commit89db69d670a11274c323af48479841d3d765bd49 (patch)
treea465784ffca27512ead77508d62639554a767433
parentMerge tag 'pm-reverts-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/... (diff)
parentcifs: check MaxPathNameComponentLength != 0 before using it (diff)
downloadlinux-89db69d670a11274c323af48479841d3d765bd49.tar.xz
linux-89db69d670a11274c323af48479841d3d765bd49.zip
Merge tag 'smb3-file-name-too-long-fix' of git://git.samba.org/sfrench/cifs-2.6
Pull cifs fix from Steve French: "smb3 file name too long fix" * tag 'smb3-file-name-too-long-fix' of git://git.samba.org/sfrench/cifs-2.6: cifs: check MaxPathNameComponentLength != 0 before using it
-rw-r--r--fs/cifs/dir.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c
index e702d48bd023..81ba6e0d88d8 100644
--- a/fs/cifs/dir.c
+++ b/fs/cifs/dir.c
@@ -204,7 +204,8 @@ check_name(struct dentry *direntry, struct cifs_tcon *tcon)
struct cifs_sb_info *cifs_sb = CIFS_SB(direntry->d_sb);
int i;
- if (unlikely(direntry->d_name.len >
+ if (unlikely(tcon->fsAttrInfo.MaxPathNameComponentLength &&
+ direntry->d_name.len >
le32_to_cpu(tcon->fsAttrInfo.MaxPathNameComponentLength)))
return -ENAMETOOLONG;
@@ -520,7 +521,7 @@ cifs_atomic_open(struct inode *inode, struct dentry *direntry,
rc = check_name(direntry, tcon);
if (rc)
- goto out_free_xid;
+ goto out;
server = tcon->ses->server;