@@ -333,7 +333,7 @@ void posix_state_to_acl(struct posix_acl_state *state,
333
333
pace -> e_perm = state -> other .allow ;
334
334
}
335
335
336
- int init_acl_state (struct posix_acl_state * state , int cnt )
336
+ int init_acl_state (struct posix_acl_state * state , u16 cnt )
337
337
{
338
338
int alloc ;
339
339
@@ -368,7 +368,7 @@ static void parse_dacl(struct mnt_idmap *idmap,
368
368
struct smb_fattr * fattr )
369
369
{
370
370
int i , ret ;
371
- int num_aces = 0 ;
371
+ u16 num_aces = 0 ;
372
372
unsigned int acl_size ;
373
373
char * acl_base ;
374
374
struct smb_ace * * ppace ;
@@ -389,12 +389,12 @@ static void parse_dacl(struct mnt_idmap *idmap,
389
389
390
390
ksmbd_debug (SMB , "DACL revision %d size %d num aces %d\n" ,
391
391
le16_to_cpu (pdacl -> revision ), le16_to_cpu (pdacl -> size ),
392
- le32_to_cpu (pdacl -> num_aces ));
392
+ le16_to_cpu (pdacl -> num_aces ));
393
393
394
394
acl_base = (char * )pdacl ;
395
395
acl_size = sizeof (struct smb_acl );
396
396
397
- num_aces = le32_to_cpu (pdacl -> num_aces );
397
+ num_aces = le16_to_cpu (pdacl -> num_aces );
398
398
if (num_aces <= 0 )
399
399
return ;
400
400
@@ -580,7 +580,7 @@ static void parse_dacl(struct mnt_idmap *idmap,
580
580
581
581
static void set_posix_acl_entries_dacl (struct mnt_idmap * idmap ,
582
582
struct smb_ace * pndace ,
583
- struct smb_fattr * fattr , u32 * num_aces ,
583
+ struct smb_fattr * fattr , u16 * num_aces ,
584
584
u16 * size , u32 nt_aces_num )
585
585
{
586
586
struct posix_acl_entry * pace ;
@@ -701,7 +701,7 @@ static void set_ntacl_dacl(struct mnt_idmap *idmap,
701
701
struct smb_fattr * fattr )
702
702
{
703
703
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 ;
705
705
unsigned short size = 0 ;
706
706
int i ;
707
707
@@ -728,15 +728,15 @@ static void set_ntacl_dacl(struct mnt_idmap *idmap,
728
728
729
729
set_posix_acl_entries_dacl (idmap , pndace , fattr ,
730
730
& num_aces , & size , nt_num_aces );
731
- pndacl -> num_aces = cpu_to_le32 (num_aces );
731
+ pndacl -> num_aces = cpu_to_le16 (num_aces );
732
732
pndacl -> size = cpu_to_le16 (le16_to_cpu (pndacl -> size ) + size );
733
733
}
734
734
735
735
static void set_mode_dacl (struct mnt_idmap * idmap ,
736
736
struct smb_acl * pndacl , struct smb_fattr * fattr )
737
737
{
738
738
struct smb_ace * pace , * pndace ;
739
- u32 num_aces = 0 ;
739
+ u16 num_aces = 0 ;
740
740
u16 size = 0 , ace_size = 0 ;
741
741
uid_t uid ;
742
742
const struct smb_sid * sid ;
@@ -792,7 +792,7 @@ static void set_mode_dacl(struct mnt_idmap *idmap,
792
792
fattr -> cf_mode , 0007 );
793
793
794
794
out :
795
- pndacl -> num_aces = cpu_to_le32 (num_aces );
795
+ pndacl -> num_aces = cpu_to_le16 (num_aces );
796
796
pndacl -> size = cpu_to_le16 (le16_to_cpu (pndacl -> size ) + size );
797
797
}
798
798
@@ -1022,8 +1022,9 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
1022
1022
struct smb_sid owner_sid , group_sid ;
1023
1023
struct dentry * parent = path -> dentry -> d_parent ;
1024
1024
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 ;
1027
1028
char * aces_base ;
1028
1029
bool is_dir = S_ISDIR (d_inode (path -> dentry )-> i_mode );
1029
1030
@@ -1039,7 +1040,7 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
1039
1040
1040
1041
parent_pdacl = (struct smb_acl * )((char * )parent_pntsd + dacloffset );
1041
1042
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 );
1043
1044
pntsd_type = le16_to_cpu (parent_pntsd -> type );
1044
1045
pdacl_size = le16_to_cpu (parent_pdacl -> size );
1045
1046
@@ -1199,7 +1200,7 @@ int smb_inherit_dacl(struct ksmbd_conn *conn,
1199
1200
pdacl = (struct smb_acl * )((char * )pntsd + le32_to_cpu (pntsd -> dacloffset ));
1200
1201
pdacl -> revision = cpu_to_le16 (2 );
1201
1202
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 );
1203
1204
pace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
1204
1205
memcpy (pace , aces_base , nt_size );
1205
1206
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,
1280
1281
1281
1282
ace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
1282
1283
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 ++ ) {
1284
1285
if (offsetof(struct smb_ace , access_req ) > aces_size )
1285
1286
break ;
1286
1287
ace_size = le16_to_cpu (ace -> size );
@@ -1301,7 +1302,7 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
1301
1302
1302
1303
ace = (struct smb_ace * )((char * )pdacl + sizeof (struct smb_acl ));
1303
1304
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 ++ ) {
1305
1306
if (offsetof(struct smb_ace , access_req ) > aces_size )
1306
1307
break ;
1307
1308
ace_size = le16_to_cpu (ace -> size );
0 commit comments