@@ -371,7 +371,7 @@ impl MMapFile {
371
371
372
372
#[ derive( Clone ) ]
373
373
pub struct Mapping {
374
- vm_flags : VmFlag ,
374
+ flags : VmFlag ,
375
375
376
376
pub start_addr : VirtAddr ,
377
377
pub end_addr : VirtAddr ,
@@ -382,22 +382,21 @@ pub struct Mapping {
382
382
383
383
impl Mapping {
384
384
pub fn set_protection ( & mut self , protection : MMapProt ) -> aero_syscall:: Result < ( ) > {
385
- if ( protection. contains ( MMapProt :: PROT_READ ) && !self . vm_flags . contains ( VmFlag :: MAY_READ ) )
385
+ if ( protection. contains ( MMapProt :: PROT_READ ) && !self . flags . contains ( VmFlag :: MAY_READ ) )
386
386
|| ( protection. contains ( MMapProt :: PROT_WRITE )
387
- && !self . vm_flags . contains ( VmFlag :: MAY_WRITE ) )
388
- || ( protection. contains ( MMapProt :: PROT_EXEC )
389
- && !self . vm_flags . contains ( VmFlag :: MAY_EXEC ) )
387
+ && !self . flags . contains ( VmFlag :: MAY_WRITE ) )
388
+ || ( protection. contains ( MMapProt :: PROT_EXEC ) && !self . flags . contains ( VmFlag :: MAY_EXEC ) )
390
389
{
391
390
return Err ( aero_syscall:: SyscallError :: EACCES ) ;
392
391
}
393
392
394
- self . vm_flags = ( self . vm_flags & !VM_PROT_MASK ) | protection. into ( ) ;
393
+ self . flags = ( self . flags & !VM_PROT_MASK ) | protection. into ( ) ;
395
394
Ok ( ( ) )
396
395
}
397
396
398
397
#[ inline]
399
398
pub fn protection ( & self ) -> VmFlag {
400
- self . vm_flags & VM_PROT_MASK
399
+ self . flags & VM_PROT_MASK
401
400
}
402
401
403
402
/// Handler routine for private anonymous pages. Since its an anonymous page is not
@@ -421,9 +420,7 @@ impl Mapping {
421
420
// NOTE: We dont need to remove the writeable flag from this mapping, since
422
421
// the writeable flag will be removed from the parent and child on fork so,
423
422
// the mapping gets copied on write.
424
- PageTableFlags :: USER_ACCESSIBLE
425
- | PageTableFlags :: PRESENT
426
- | self . vm_flags . into ( ) ,
423
+ PageTableFlags :: USER_ACCESSIBLE | PageTableFlags :: PRESENT | self . flags . into ( ) ,
427
424
)
428
425
}
429
426
. expect ( "Failed to identity map userspace private mapping" )
@@ -446,7 +443,7 @@ impl Mapping {
446
443
page,
447
444
PageTableFlags :: USER_ACCESSIBLE
448
445
| PageTableFlags :: PRESENT
449
- | self . vm_flags . into ( ) ,
446
+ | self . flags . into ( ) ,
450
447
)
451
448
. unwrap ( )
452
449
. flush ( ) ;
@@ -475,7 +472,7 @@ impl Mapping {
475
472
let addr = addr. align_down ( Size4KiB :: SIZE ) ;
476
473
let size = Size4KiB :: SIZE . min ( file. size as u64 - ( addr - self . start_addr ) ) ;
477
474
478
- return if self . vm_flags . contains ( VmFlag :: SHARED ) {
475
+ return if self . flags . contains ( VmFlag :: SHARED ) {
479
476
self . handle_pf_shared_file ( offset_table, reason, addr, offset as _ , size as _ )
480
477
} else {
481
478
self . handle_pf_private_file ( offset_table, reason, addr, offset as _ , size as _ )
@@ -532,7 +529,7 @@ impl Mapping {
532
529
frame,
533
530
PageTableFlags :: PRESENT
534
531
| PageTableFlags :: USER_ACCESSIBLE
535
- | ( self . vm_flags & !VmFlag :: WRITE ) . into ( ) ,
532
+ | ( self . flags & !VmFlag :: WRITE ) . into ( ) ,
536
533
)
537
534
}
538
535
. expect ( "failed to map allocated frame for private file read" )
@@ -553,9 +550,7 @@ impl Mapping {
553
550
offset_table. map_to (
554
551
Page :: containing_address ( addr) ,
555
552
frame,
556
- PageTableFlags :: PRESENT
557
- | PageTableFlags :: USER_ACCESSIBLE
558
- | self . vm_flags . into ( ) ,
553
+ PageTableFlags :: PRESENT | PageTableFlags :: USER_ACCESSIBLE | self . flags . into ( ) ,
559
554
)
560
555
}
561
556
. expect ( "failed to map allocated frame for private file read" )
@@ -607,7 +602,7 @@ impl Mapping {
607
602
page_cache. page ( ) ,
608
603
PageTableFlags :: PRESENT
609
604
| PageTableFlags :: USER_ACCESSIBLE
610
- | self . vm_flags . into ( ) ,
605
+ | self . flags . into ( ) ,
611
606
)
612
607
}
613
608
. unwrap ( )
@@ -621,7 +616,7 @@ impl Mapping {
621
616
page_cache. page ( ) ,
622
617
PageTableFlags :: PRESENT
623
618
| PageTableFlags :: USER_ACCESSIBLE
624
- | ( self . vm_flags & !VmFlag :: WRITE ) . into ( ) ,
619
+ | ( self . flags & !VmFlag :: WRITE ) . into ( ) ,
625
620
)
626
621
}
627
622
. unwrap ( )
@@ -636,7 +631,7 @@ impl Mapping {
636
631
frame,
637
632
PageTableFlags :: PRESENT
638
633
| PageTableFlags :: USER_ACCESSIBLE
639
- | self . vm_flags . into ( ) ,
634
+ | self . flags . into ( ) ,
640
635
)
641
636
}
642
637
. unwrap ( )
@@ -710,15 +705,15 @@ impl Mapping {
710
705
if let Some ( vm_frame) = phys_addr. as_vm_frame ( ) {
711
706
if vm_frame. ref_count ( ) > 1 || copy {
712
707
// This page is used by more then one process, so make it a private copy.
713
- Self :: map_copied ( offset_table, page, self . vm_flags ) . unwrap ( ) ;
708
+ Self :: map_copied ( offset_table, page, self . flags ) . unwrap ( ) ;
714
709
} else {
715
710
// This page is used by only one process, so make it writable.
716
711
unsafe {
717
712
offset_table. update_flags (
718
713
page,
719
714
PageTableFlags :: PRESENT
720
715
| PageTableFlags :: USER_ACCESSIBLE
721
- | self . vm_flags . into ( ) ,
716
+ | self . flags . into ( ) ,
722
717
)
723
718
}
724
719
. unwrap ( )
@@ -769,7 +764,7 @@ impl Mapping {
769
764
end_addr : end + ( self . end_addr - end) ,
770
765
file : new_file,
771
766
refresh_flags : true ,
772
- vm_flags : self . vm_flags ,
767
+ flags : self . flags ,
773
768
} ;
774
769
775
770
self . end_addr = start;
@@ -857,21 +852,21 @@ impl VmProtected {
857
852
}
858
853
859
854
if reason. contains ( PageFaultErrorCode :: CAUSED_BY_WRITE )
860
- && !map. vm_flags . contains ( VmFlag :: WRITE )
855
+ && !map. flags . contains ( VmFlag :: WRITE )
861
856
{
862
857
return false ;
863
858
}
864
859
865
860
if reason. contains ( PageFaultErrorCode :: INSTRUCTION_FETCH )
866
- && !map. vm_flags . contains ( VmFlag :: EXEC )
861
+ && !map. flags . contains ( VmFlag :: EXEC )
867
862
{
868
863
return false ;
869
864
}
870
865
871
866
let mut address_space = AddressSpace :: this ( ) ;
872
867
let mut offset_table = address_space. offset_page_table ( ) ;
873
868
874
- match ( !map. vm_flags . contains ( VmFlag :: SHARED ) , map. file . is_none ( ) ) {
869
+ match ( !map. flags . contains ( VmFlag :: SHARED ) , map. file . is_none ( ) ) {
875
870
( true , true ) => {
876
871
map. handle_pf_private_anon ( & mut offset_table, reason, accessed_address)
877
872
}
@@ -1024,7 +1019,7 @@ impl VmProtected {
1024
1019
// Merge same mappings instead of creating a new one.
1025
1020
if let Some ( prev) = cursor. peek_prev ( ) {
1026
1021
if prev. end_addr == addr
1027
- && prev. vm_flags == vm_flags
1022
+ && prev. flags == vm_flags
1028
1023
&& prev. file . is_none ( )
1029
1024
&& file. is_none ( )
1030
1025
{
@@ -1039,7 +1034,7 @@ impl VmProtected {
1039
1034
1040
1035
file : file. map ( |f| MMapFile :: new ( f, offset, size) ) ,
1041
1036
refresh_flags : true ,
1042
- vm_flags,
1037
+ flags : vm_flags,
1043
1038
} ) ;
1044
1039
1045
1040
addr
@@ -1071,7 +1066,7 @@ impl VmProtected {
1071
1066
"{:?}..{:?} => {:?} (offset={:#x}, size={:#x})" ,
1072
1067
mmap. start_addr,
1073
1068
mmap. end_addr,
1074
- mmap. vm_flags ,
1069
+ mmap. flags ,
1075
1070
file. offset,
1076
1071
file. size,
1077
1072
) ;
@@ -1080,7 +1075,7 @@ impl VmProtected {
1080
1075
"{:?}..{:?} => {:?}" ,
1081
1076
mmap. start_addr,
1082
1077
mmap. end_addr,
1083
- mmap. vm_flags ,
1078
+ mmap. flags ,
1084
1079
) ;
1085
1080
}
1086
1081
}
@@ -1365,7 +1360,7 @@ impl VmProtected {
1365
1360
1366
1361
for map in self . mappings . iter ( ) . filter ( |map| {
1367
1362
// Do not copy page table entries where a page fault can map them correctly.
1368
- !map. vm_flags . contains ( VmFlag :: SHARED ) && map. vm_flags . contains ( VmFlag :: MAY_WRITE )
1363
+ !map. flags . contains ( VmFlag :: SHARED ) && map. flags . contains ( VmFlag :: MAY_WRITE )
1369
1364
} ) {
1370
1365
offset_table. copy_page_range ( & mut current, map. start_addr ..=map. end_addr ) ;
1371
1366
}
0 commit comments