@@ -333,7 +333,7 @@ void posix_state_to_acl(struct posix_acl_state *state,
333333 pace -> e_perm = state -> other .allow ;
334334}
335335
336- int init_acl_state (struct posix_acl_state * state , int cnt )
336+ int init_acl_state (struct posix_acl_state * state , u16 cnt )
337337{
338338 int alloc ;
339339
@@ -368,7 +368,7 @@ static void parse_dacl(struct mnt_idmap *idmap,
368368 struct smb_fattr * fattr )
369369{
370370 int i , ret ;
371- int num_aces = 0 ;
371+ u16 num_aces = 0 ;
372372 unsigned int acl_size ;
373373 char * acl_base ;
374374 struct smb_ace * * ppace ;
@@ -389,12 +389,12 @@ static void parse_dacl(struct mnt_idmap *idmap,
389389
390390 ksmbd_debug (SMB , "DACL revision %d size %d num aces %d\n" ,
391391 le16_to_cpu (pdacl -> revision ), le16_to_cpu (pdacl -> size ),
392- le32_to_cpu (pdacl -> num_aces ));
392+ le16_to_cpu (pdacl -> num_aces ));
393393
394394 acl_base = (char * )pdacl ;
395395 acl_size = sizeof (struct smb_acl );
396396
397- num_aces = le32_to_cpu (pdacl -> num_aces );
397+ num_aces = le16_to_cpu (pdacl -> num_aces );
398398 if (num_aces <= 0 )
399399 return ;
400400
@@ -580,7 +580,7 @@ static void parse_dacl(struct mnt_idmap *idmap,
580580
581581static void set_posix_acl_entries_dacl (struct mnt_idmap * idmap ,
582582 struct smb_ace * pndace ,
583- struct smb_fattr * fattr , u32 * num_aces ,
583+ struct smb_fattr * fattr , u16 * num_aces ,
584584 u16 * size , u32 nt_aces_num )
585585{
586586 struct posix_acl_entry * pace ;
@@ -701,7 +701,7 @@ static void set_ntacl_dacl(struct mnt_idmap *idmap,
701701 struct smb_fattr * fattr )
702702{
703703 struct smb_ace * ntace , * pndace ;
704- int nt_num_aces = le32_to_cpu (nt_dacl -> num_aces ), num_aces = 0 ;
704+ u16 nt_num_aces = le16_to_cpu (nt_dacl -> num_aces ), num_aces = 0 ;
705705 unsigned short size = 0 ;
706706 int i ;
707707
@@ -728,15 +728,15 @@ static void set_ntacl_dacl(struct mnt_idmap *idmap,
728728
729729 set_posix_acl_entries_dacl (idmap , pndace , fattr ,
730730 & num_aces , & size , nt_num_aces );
731- pndacl -> num_aces = cpu_to_le32 (num_aces );
731+ pndacl -> num_aces = cpu_to_le16 (num_aces );
732732 pndacl -> size = cpu_to_le16 (le16_to_cpu (pndacl -> size ) + size );
733733}
734734
735735static void set_mode_dacl (struct mnt_idmap * idmap ,
736736 struct smb_acl * pndacl , struct smb_fattr * fattr )
737737{
738738 struct smb_ace * pace , * pndace ;
739- u32 num_aces = 0 ;
739+ u16 num_aces = 0 ;
740740 u16 size = 0 , ace_size = 0 ;
741741 uid_t uid ;
742742 const struct smb_sid * sid ;
@@ -792,7 +792,7 @@ static void set_mode_dacl(struct mnt_idmap *idmap,
792792 fattr -> cf_mode , 0007 );
793793
794794out :
795- pndacl -> num_aces = cpu_to_le32 (num_aces );
795+ pndacl -> num_aces = cpu_to_le16 (num_aces );
796796 pndacl -> size = cpu_to_le16 (le16_to_cpu (pndacl -> size ) + size );
797797}
798798
@@ -1022,8 +1022,9 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
10221022 struct smb_sid owner_sid , group_sid ;
10231023 struct dentry * parent = path -> dentry -> d_parent ;
10241024 struct mnt_idmap * idmap = mnt_idmap (path -> mnt );
1025- int inherited_flags = 0 , flags = 0 , i , ace_cnt = 0 , nt_size = 0 , pdacl_size ;
1026- int rc = 0 , num_aces , dacloffset , pntsd_type , pntsd_size , acl_len , aces_size ;
1025+ int inherited_flags = 0 , flags = 0 , i , nt_size = 0 , pdacl_size ;
1026+ int rc = 0 , dacloffset , pntsd_type , pntsd_size , acl_len , aces_size ;
1027+ u16 num_aces , ace_cnt = 0 ;
10271028 char * aces_base ;
10281029 bool is_dir = S_ISDIR (d_inode (path -> dentry )-> i_mode );
10291030
@@ -1039,7 +1040,7 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
10391040
10401041 parent_pdacl = (struct smb_acl * )((char * )parent_pntsd + dacloffset );
10411042 acl_len = pntsd_size - dacloffset ;
1042- num_aces = le32_to_cpu (parent_pdacl -> num_aces );
1043+ num_aces = le16_to_cpu (parent_pdacl -> num_aces );
10431044 pntsd_type = le16_to_cpu (parent_pntsd -> type );
10441045 pdacl_size = le16_to_cpu (parent_pdacl -> size );
10451046
@@ -1199,7 +1200,7 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
11991200 pdacl = (struct smb_acl * )((char * )pntsd + le32_to_cpu (pntsd -> dacloffset ));
12001201 pdacl -> revision = cpu_to_le16 (2 );
12011202 pdacl -> size = cpu_to_le16 (sizeof (struct smb_acl ) + nt_size );
1202- pdacl -> num_aces = cpu_to_le32 (ace_cnt );
1203+ pdacl -> num_aces = cpu_to_le16 (ace_cnt );
12031204 pace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
12041205 memcpy (pace , aces_base , nt_size );
12051206 pntsd_size += sizeof (struct smb_acl ) + nt_size ;
@@ -1280,7 +1281,7 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
12801281
12811282 ace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
12821283 aces_size = acl_size - sizeof (struct smb_acl );
1283- for (i = 0 ; i < le32_to_cpu (pdacl -> num_aces ); i ++ ) {
1284+ for (i = 0 ; i < le16_to_cpu (pdacl -> num_aces ); i ++ ) {
12841285 if (offsetof(struct smb_ace , access_req ) > aces_size )
12851286 break ;
12861287 ace_size = le16_to_cpu (ace -> size );
@@ -1301,7 +1302,7 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
13011302
13021303 ace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
13031304 aces_size = acl_size - sizeof (struct smb_acl );
1304- for (i = 0 ; i < le32_to_cpu (pdacl -> num_aces ); i ++ ) {
1305+ for (i = 0 ; i < le16_to_cpu (pdacl -> num_aces ); i ++ ) {
13051306 if (offsetof(struct smb_ace , access_req ) > aces_size )
13061307 break ;
13071308 ace_size = le16_to_cpu (ace -> size );
0 commit comments