]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
smb: server: handle readdir_info_level_struct_sz() error
authorMarios Makassikis <mmakassikis@freebox.fr>
Wed, 22 Apr 2026 10:49:00 +0000 (12:49 +0200)
committerSteve French <stfrench@microsoft.com>
Wed, 29 Apr 2026 15:25:37 +0000 (10:25 -0500)
early exit in smb2_populate_readdir_entry() if the requested info_level
is unknown.

Signed-off-by: Marios Makassikis <mmakassikis@freebox.fr>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/server/smb2pdu.c

index 21825a69c29a7e635bea001b3e677e8a4b79489b..47b7af631f7b356d7ad480d90881ce16ef3d1e25 100644 (file)
@@ -3946,7 +3946,13 @@ static int smb2_populate_readdir_entry(struct ksmbd_conn *conn, int info_level,
                goto free_conv_name;
        }
 
-       struct_sz = readdir_info_level_struct_sz(info_level) + conv_len;
+       struct_sz = readdir_info_level_struct_sz(info_level);
+       if (struct_sz == -EOPNOTSUPP) {
+               rc = -EINVAL;
+               goto free_conv_name;
+       }
+
+       struct_sz += conv_len;
        next_entry_offset = ALIGN(struct_sz, KSMBD_DIR_INFO_ALIGNMENT);
        d_info->last_entry_off_align = next_entry_offset - struct_sz;