{
        struct page *cpage = NULL;
        char *caddr, *paddr = NULL;
-       struct f2fs_str cstr;
+       struct f2fs_str cstr = FSTR_INIT(NULL, 0);
        struct f2fs_str pstr = FSTR_INIT(NULL, 0);
        struct inode *inode = d_inode(dentry);
        struct f2fs_encrypted_symlink_data *sd;
        /* Symlink is encrypted */
        sd = (struct f2fs_encrypted_symlink_data *)caddr;
        cstr.len = le16_to_cpu(sd->len);
+
+       /* this is broken symlink case */
+       if (unlikely(cstr.len == 0)) {
+               res = -ENOENT;
+               goto errout;
+       }
        cstr.name = kmalloc(cstr.len, GFP_NOFS);
        if (!cstr.name) {
                res = -ENOMEM;
        memcpy(cstr.name, sd->encrypted_path, cstr.len);
 
        /* this is broken symlink case */
-       if (cstr.name[0] == 0 && cstr.len == 0) {
+       if (unlikely(cstr.name[0] == 0)) {
                res = -ENOENT;
                goto errout;
        }