Function report | 
Source Code:mm\mprotect.c | 
Create Date:2022-07-28 14:52:14 | 
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick | 
| home page | Tree | 
| Annotation kernel can get tool activity | Download SCCT | Chinese | 
Name:mprotect_fixup
Proto:int mprotect_fixup(struct vm_area_struct *vma, struct vm_area_struct **pprev, unsigned long start, unsigned long end, unsigned long newflags)
Type:int
Parameter:
| Type | Parameter | Name | 
|---|---|---|
| struct vm_area_struct * | vma | |
| struct vm_area_struct ** | pprev | |
| unsigned long | start | |
| unsigned long | end | |
| unsigned long | newflags | 
| 377 | oldflags = Flags, see mm.h. | 
| 378 | nrpages = end - start >> PAGE_SHIFT determines the page size | 
| 379 | charged = 0 | 
| 382 | dirty_accountable = 0 | 
| 394 | If arch_has_pfn_modify_check() && Flags, see mm.h. & (Page-ranges managed without "struct page", just pure PFN | Can contain "struct page" and pure PFN pages ) && (newflags & ( currently active flags | VM_WRITE | VM_EXEC)) == 0 Then | 
| 397 | new_pgprot = vm_get_page_prot(newflags) | 
| 416 | If Not (oldflags & ( Is a VM accounted object | VM_WRITE | Huge TLB Page VM | VM_SHARED | should the VM suppress accounting )) Then | 
| 419 | If security_vm_enough_memory_mm(mm, charged) Then Return -ENOMEM | 
| 421 | newflags |= Is a VM accounted object | 
| 428 | pgoff = Offset (within vm_file) in PAGE_SIZEunits + ( start - Our start address within vm_mm. >> PAGE_SHIFT determines the page size ) | 
| 429 | pprev = Given a mapping request (addr,end,vm_flags,file,pgoff), figure out* whether that can be merged with its predecessor or its successor | 
| 432 | If pprev Then | 
| 440 | If start != Our start address within vm_mm. Then | 
| 446 | If end != The first byte after our end addresswithin vm_mm. Then | 
| 452 | success : | 
| 457 | Flags, see mm.h. = newflags | 
| 473 | vm_stat_account(mm, oldflags, - nrpages) | 
| 474 | vm_stat_account(mm, newflags, nrpages) | 
| 475 | perf_event_mmap(vma) | 
| 476 | Return 0 | 
| 478 | fail : | 
| 479 | vm_unacct_memory(charged) | 
| 480 | Return error | 
| Name | Describe | 
|---|---|
| do_mprotect_pkey | pkey==-1 when doing a legacy mprotect() | 
| Source code conversion tool public plug-in interface  | X | 
|---|---|
| Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion  |