Skip to contentSkip to conversation

cifs: check MaxPathNameComponentLength != 0 before using it

PATCH Applied Ronnie Sahlberg 2 participants 2 messages Oct 30, 2017 1 message not in the archive

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cifs: check MaxPathNameComponentLength != 0 before using it

And fix tcon leak in error path.

---
 fs/cifs/dir.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
fs/cifs/dir.c +3 -2
index e702d48bd023..81ba6e0d88d8 100644
@@ -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;
 
Signature · 1 line
2.13.3

A message that is not in the archive (sent off-list or not yet received): 20171030022803.31066-1-lsahlber-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org

Applied
#2 lore raw

merged into cifs-2.6.git for-next

Quoted 33 lines · Ronnie Sahlberg

And fix tcon leak in error path.

---
 fs/cifs/dir.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
fs/cifs/dir.c +3 -3
index e702d48bd023..81ba6e0d88d8 100644
@@ -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;
 
--

2.13.3

Signature · 3 lines
Thanks,

Steve