mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:24:45 +01:00
smb/client: check whether smb2_error_map_table is sorted in ascending order
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>
This commit is contained in:
parent
c527e13a7a
commit
453382f15b
3 changed files with 23 additions and 0 deletions
|
|
@ -1904,6 +1904,11 @@ static int __init
|
|||
init_cifs(void)
|
||||
{
|
||||
int rc = 0;
|
||||
|
||||
rc = smb2_init_maperror();
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
cifs_proc_init();
|
||||
INIT_LIST_HEAD(&cifs_tcp_ses_list);
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -75,3 +75,20 @@ map_smb2_to_linux_error(char *buf, bool log_err)
|
|||
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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ struct smb_rqst;
|
|||
*****************************************************************
|
||||
*/
|
||||
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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue