anolis: arm64: add the helper to set no-present page table
ANBZ: #6171 Add a helper set_memory_np to make the page table corresponding to the virtual address not present. Signed-off-by: Kaihao Bai <carlo.bai@linux.alibaba.com> Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Link: https://gitee.com/anolis/cloud-kernel/pulls/2057
This commit is contained in:
parent
077c483d3c
commit
9faaec4a7d
|
@ -172,6 +172,18 @@ int set_memory_valid(unsigned long addr, int numpages, int enable)
|
|||
__pgprot(PTE_VALID));
|
||||
}
|
||||
|
||||
int set_memory_np(unsigned long addr, int numpages)
|
||||
{
|
||||
/*
|
||||
* If the addr belongs to linear mapping range, split it to pte level
|
||||
* before changing the attribute of the page table.
|
||||
*/
|
||||
if (can_set_block_and_cont_map() && __is_lm_address(addr))
|
||||
split_linear_mapping_after_init(addr, PAGE_SIZE * numpages, PAGE_KERNEL);
|
||||
|
||||
return set_memory_valid(addr, numpages, 0);
|
||||
}
|
||||
|
||||
int set_direct_map_invalid_noflush(struct page *page)
|
||||
{
|
||||
struct page_change_data data = {
|
||||
|
|
|
@ -9,5 +9,5 @@ int set_memory_ro(unsigned long addr, int numpages);
|
|||
int set_memory_rw(unsigned long addr, int numpages);
|
||||
int set_memory_x(unsigned long addr, int numpages);
|
||||
int set_memory_nx(unsigned long addr, int numpages);
|
||||
|
||||
int set_memory_np(unsigned long addr, int numpages);
|
||||
#endif
|
||||
|
|
|
@ -12,6 +12,7 @@ static inline int set_memory_ro(unsigned long addr, int numpages) { return 0; }
|
|||
static inline int set_memory_rw(unsigned long addr, int numpages) { return 0; }
|
||||
static inline int set_memory_x(unsigned long addr, int numpages) { return 0; }
|
||||
static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
|
||||
static inline int set_memory_np(unsigned long addr, int numpages) { return 0; }
|
||||
#endif
|
||||
|
||||
#ifndef CONFIG_ARCH_HAS_SET_DIRECT_MAP
|
||||
|
|
Loading…
Reference in New Issue