Although the array is sorted at build time, verify the ordering again
when cifs.ko is loaded to avoid potential regressions introduced by
future script changes.
Suggested-by: David Howells <dhowells@redhat.com>
Signed-off-by: ChenXiaoSong <chenxiaosong@kylinos.cn>
Reviewed-by: David Howells <dhowells@redhat.com>
Link: https://lore.kernel.org/linux-cifs/20260106071507.1420900-4-chenxiaosong.chenxiaosong@linux.dev/
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
init_cifs(void)
{
int rc = 0;
+
+ rc = smb2_init_maperror();
+ if (rc)
+ return rc;
+
cifs_proc_init();
INIT_LIST_HEAD(&cifs_tcp_ses_list);
/*
smb_EIO1(smb_eio_trace_smb2_received_error, le32_to_cpu(smb2err));
return rc;
}
+
+int __init smb2_init_maperror(void)
+{
+ unsigned int i;
+
+ /* Check whether the array is sorted in ascending order */
+ for (i = 1; i < ARRAY_SIZE(smb2_error_map_table); i++) {
+ if (smb2_error_map_table[i].smb2_status >=
+ smb2_error_map_table[i - 1].smb2_status)
+ continue;
+
+ pr_err("smb2_error_map_table array order is incorrect\n");
+ return -EINVAL;
+ }
+
+ return 0;
+}
*****************************************************************
*/
int map_smb2_to_linux_error(char *buf, bool log_err);
+int smb2_init_maperror(void);
int smb2_check_message(char *buf, unsigned int pdu_len, unsigned int len,
struct TCP_Server_Info *server);
unsigned int smb2_calc_size(void *buf);