@@ -338,7 +338,7 @@ void posix_state_to_acl(struct posix_acl_state *state,
338338 pace -> e_perm = state -> other .allow ;
339339}
340340
341- int init_acl_state (struct posix_acl_state * state , int cnt )
341+ int init_acl_state (struct posix_acl_state * state , u16 cnt )
342342{
343343 int alloc ;
344344
@@ -373,7 +373,7 @@ static void parse_dacl(struct mnt_idmap *idmap,
373373 struct smb_fattr * fattr )
374374{
375375 int i , ret ;
376- int num_aces = 0 ;
376+ u16 num_aces = 0 ;
377377 unsigned int acl_size ;
378378 char * acl_base ;
379379 struct smb_ace * * ppace ;
@@ -394,12 +394,12 @@ static void parse_dacl(struct mnt_idmap *idmap,
394394
395395 ksmbd_debug (SMB , "DACL revision %d size %d num aces %d\n" ,
396396 le16_to_cpu (pdacl -> revision ), le16_to_cpu (pdacl -> size ),
397- le32_to_cpu (pdacl -> num_aces ));
397+ le16_to_cpu (pdacl -> num_aces ));
398398
399399 acl_base = (char * )pdacl ;
400400 acl_size = sizeof (struct smb_acl );
401401
402- num_aces = le32_to_cpu (pdacl -> num_aces );
402+ num_aces = le16_to_cpu (pdacl -> num_aces );
403403 if (num_aces <= 0 )
404404 return ;
405405
@@ -589,7 +589,7 @@ static void parse_dacl(struct mnt_idmap *idmap,
589589
590590static void set_posix_acl_entries_dacl (struct mnt_idmap * idmap ,
591591 struct smb_ace * pndace ,
592- struct smb_fattr * fattr , u32 * num_aces ,
592+ struct smb_fattr * fattr , u16 * num_aces ,
593593 u16 * size , u32 nt_aces_num )
594594{
595595 struct posix_acl_entry * pace ;
@@ -717,7 +717,7 @@ static void set_ntacl_dacl(struct mnt_idmap *idmap,
717717 struct smb_fattr * fattr )
718718{
719719 struct smb_ace * ntace , * pndace ;
720- int nt_num_aces = le32_to_cpu (nt_dacl -> num_aces ), num_aces = 0 ;
720+ u16 nt_num_aces = le16_to_cpu (nt_dacl -> num_aces ), num_aces = 0 ;
721721 unsigned short size = 0 ;
722722 int i ;
723723
@@ -745,15 +745,15 @@ static void set_ntacl_dacl(struct mnt_idmap *idmap,
745745
746746 set_posix_acl_entries_dacl (idmap , pndace , fattr ,
747747 & num_aces , & size , nt_num_aces );
748- pndacl -> num_aces = cpu_to_le32 (num_aces );
748+ pndacl -> num_aces = cpu_to_le16 (num_aces );
749749 pndacl -> size = cpu_to_le16 (le16_to_cpu (pndacl -> size ) + size );
750750}
751751
752752static void set_mode_dacl (struct mnt_idmap * idmap ,
753753 struct smb_acl * pndacl , struct smb_fattr * fattr )
754754{
755755 struct smb_ace * pace , * pndace ;
756- u32 num_aces = 0 ;
756+ u16 num_aces = 0 ;
757757 u16 size = 0 , ace_size = 0 ;
758758 uid_t uid ;
759759 const struct smb_sid * sid ;
@@ -809,7 +809,7 @@ static void set_mode_dacl(struct mnt_idmap *idmap,
809809 fattr -> cf_mode , 0007 );
810810
811811out :
812- pndacl -> num_aces = cpu_to_le32 (num_aces );
812+ pndacl -> num_aces = cpu_to_le16 (num_aces );
813813 pndacl -> size = cpu_to_le16 (le16_to_cpu (pndacl -> size ) + size );
814814}
815815
@@ -1039,8 +1039,9 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
10391039 struct smb_sid owner_sid , group_sid ;
10401040 struct dentry * parent = path -> dentry -> d_parent ;
10411041 struct mnt_idmap * idmap = mnt_idmap (path -> mnt );
1042- int inherited_flags = 0 , flags = 0 , i , ace_cnt = 0 , nt_size = 0 , pdacl_size ;
1043- int rc = 0 , num_aces , dacloffset , pntsd_type , pntsd_size , acl_len , aces_size ;
1042+ int inherited_flags = 0 , flags = 0 , i , nt_size = 0 , pdacl_size ;
1043+ int rc = 0 , dacloffset , pntsd_type , pntsd_size , acl_len , aces_size ;
1044+ u16 num_aces , ace_cnt = 0 ;
10441045 char * aces_base ;
10451046 bool is_dir = S_ISDIR (d_inode (path -> dentry )-> i_mode );
10461047
@@ -1056,7 +1057,7 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
10561057
10571058 parent_pdacl = (struct smb_acl * )((char * )parent_pntsd + dacloffset );
10581059 acl_len = pntsd_size - dacloffset ;
1059- num_aces = le32_to_cpu (parent_pdacl -> num_aces );
1060+ num_aces = le16_to_cpu (parent_pdacl -> num_aces );
10601061 pntsd_type = le16_to_cpu (parent_pntsd -> type );
10611062 pdacl_size = le16_to_cpu (parent_pdacl -> size );
10621063
@@ -1215,7 +1216,7 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
12151216 pdacl = (struct smb_acl * )((char * )pntsd + le32_to_cpu (pntsd -> dacloffset ));
12161217 pdacl -> revision = cpu_to_le16 (2 );
12171218 pdacl -> size = cpu_to_le16 (sizeof (struct smb_acl ) + nt_size );
1218- pdacl -> num_aces = cpu_to_le32 (ace_cnt );
1219+ pdacl -> num_aces = cpu_to_le16 (ace_cnt );
12191220 pace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
12201221 memcpy (pace , aces_base , nt_size );
12211222 pntsd_size += sizeof (struct smb_acl ) + nt_size ;
@@ -1296,7 +1297,7 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
12961297
12971298 ace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
12981299 aces_size = acl_size - sizeof (struct smb_acl );
1299- for (i = 0 ; i < le32_to_cpu (pdacl -> num_aces ); i ++ ) {
1300+ for (i = 0 ; i < le16_to_cpu (pdacl -> num_aces ); i ++ ) {
13001301 if (offsetof(struct smb_ace , access_req ) > aces_size )
13011302 break ;
13021303 ace_size = le16_to_cpu (ace -> size );
@@ -1317,7 +1318,7 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
13171318
13181319 ace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
13191320 aces_size = acl_size - sizeof (struct smb_acl );
1320- for (i = 0 ; i < le32_to_cpu (pdacl -> num_aces ); i ++ ) {
1321+ for (i = 0 ; i < le16_to_cpu (pdacl -> num_aces ); i ++ ) {
13211322 if (offsetof(struct smb_ace , access_req ) > aces_size )
13221323 break ;
13231324 ace_size = le16_to_cpu (ace -> size );
0 commit comments