]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - fs/cifs/dir.c
cifs: check MaxPathNameComponentLength != 0 before using it
[mirror_ubuntu-artful-kernel.git] / fs / cifs / dir.c
index 569d3fb736be070d2693f600f867bd836aeb1dc4..81ba6e0d88d8f3ec1d1c8b2e81e695819537c921 100644 (file)
@@ -204,8 +204,9 @@ 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 >
-                    tcon->fsAttrInfo.MaxPathNameComponentLength))
+       if (unlikely(tcon->fsAttrInfo.MaxPathNameComponentLength &&
+                    direntry->d_name.len >
+                    le32_to_cpu(tcon->fsAttrInfo.MaxPathNameComponentLength)))
                return -ENAMETOOLONG;
 
        if (!(cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS)) {
@@ -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;