goto free_conv_name;
        }
 
-       struct_sz = readdir_info_level_struct_sz(info_level) - 1 + conv_len;
+       struct_sz = readdir_info_level_struct_sz(info_level) + conv_len;
        next_entry_offset = ALIGN(struct_sz, KSMBD_DIR_INFO_ALIGNMENT);
        d_info->last_entry_off_align = next_entry_offset - struct_sz;
 
                return -EOPNOTSUPP;
 
        conv_len = (d_info->name_len + 1) * 2;
-       next_entry_offset = ALIGN(struct_sz - 1 + conv_len,
+       next_entry_offset = ALIGN(struct_sz + conv_len,
                                  KSMBD_DIR_INFO_ALIGNMENT);
 
        if (next_entry_offset > d_info->out_buf_len) {
 
        __le64 AllocationSize;
        __le32 ExtFileAttributes;
        __le32 FileNameLength;
-       char FileName[1];
+       char FileName[];
 } __packed;   /* level 0x101 FF resp data */
 
 struct file_names_info {
        __le32 NextEntryOffset;
        __u32 FileIndex;
        __le32 FileNameLength;
-       char FileName[1];
+       char FileName[];
 } __packed;   /* level 0xc FF resp data */
 
 struct file_full_directory_info {
        __le32 ExtFileAttributes;
        __le32 FileNameLength;
        __le32 EaSize;
-       char FileName[1];
+       char FileName[];
 } __packed; /* level 0x102 FF resp */
 
 struct file_both_directory_info {
        __u8   ShortNameLength;
        __u8   Reserved;
        __u8   ShortName[24];
-       char FileName[1];
+       char FileName[];
 } __packed; /* level 0x104 FFrsp data */
 
 struct file_id_both_directory_info {
        __u8   ShortName[24];
        __le16 Reserved2;
        __le64 UniqueId;
-       char FileName[1];
+       char FileName[];
 } __packed;
 
 struct file_id_full_dir_info {
        __le32 EaSize; /* EA size */
        __le32 Reserved;
        __le64 UniqueId; /* inode num - le since Samba puts ino in low 32 bit*/
-       char FileName[1];
+       char FileName[];
 } __packed; /* level 0x105 FF rsp data */
 
 struct smb_version_values {