diff --git a/Makefile b/Makefile index 839d8d6120f7949e32b1e88647d7ff3c37e7cbe7..b6d490ab9054419b5c4abd9e79511d9acc507aaf 100644 --- a/Makefile +++ b/Makefile @@ -46,6 +46,7 @@ KDIR := $(KPATH)/$(shell ls $(KPATH)) EXTRA_CFLAGS += -isystem /usr/lib/gcc/aarch64-linux-gnu/10.3.1/include EXTRA_CFLAGS += -isystem /usr/lib/gcc/aarch64-openEuler-linux-gnu/12/include +EXTRA_CFLAGS += -isystem /usr/lib/gcc/aarch64-openEuler-linux/12/include EXTRA_CFLAGS += -fstack-protector-strong -DCONFIG_TEELOG -DCONFIG_TZDRIVER_MODULE -DCONFIG_TEECD_AUTH -DCONFIG_PAGES_MEM=y -DCONFIG_CLOUDSERVER_TEECD_AUTH EXTRA_CFLAGS += -I$(PWD)/libboundscheck/include/ -I$(PWD) -I$(PWD)/auth -I$(PWD)/core -I$(PWD)/tzdriver_internal/tee_trace_event EXTRA_CFLAGS += -I$(PWD)/tlogger -I$(PWD)/tzdriver_internal/kthread_affinity -I$(PWD)/tzdriver_internal/include diff --git a/auth/auth_base_impl.c b/auth/auth_base_impl.c index 5b366fcd1e76190410f1e205ddf2d983301b14bd..62b01ab5edb9acf7526303febc511a8b06fc6929 100644 --- a/auth/auth_base_impl.c +++ b/auth/auth_base_impl.c @@ -130,7 +130,11 @@ static int prepare_desc(struct sdesc **desc) static int get_proc_user_pages(struct mm_struct *mm, unsigned long start_code, struct page **ptr_page, struct task_struct *cur_struct) { -#if (KERNEL_VERSION(5, 10, 0) <= LINUX_VERSION_CODE) +#if (KERNEL_VERSION(6, 6, 0) <= LINUX_VERSION_CODE) + (void)cur_struct; + return get_user_pages_remote(mm, start_code, + (unsigned long)PINED_PAGE_NUMBER, FOLL_FORCE, ptr_page, NULL); +#elif (KERNEL_VERSION(5, 10, 0) <= LINUX_VERSION_CODE) (void)cur_struct; return get_user_pages_remote(mm, start_code, (unsigned long)PINED_PAGE_NUMBER, FOLL_FORCE, ptr_page, NULL, NULL); diff --git a/core/agent.c b/core/agent.c index 5918a8d82939630b5b154ce885fc56eca2838ef0..c8ef108f3ee207684809f1ea0a174795cf499855 100644 --- a/core/agent.c +++ b/core/agent.c @@ -140,7 +140,9 @@ char *get_proc_dpath(char *path, int path_len) path_get(&base_path); dpath = d_path(&base_path, path, MAX_PATH_SIZE); path_put(&base_path); +#if (KERNEL_VERSION(6, 1, 0) > LINUX_VERSION_CODE) fput(exe_file); +#endif mmput(mm); return dpath; diff --git a/core/shared_mem.c b/core/shared_mem.c index fa50e7f292643224147c0bdcfa494ade1d9e7c7d..f87cbc8a911ed6d4f8dd3efcd52cca89e5d42b22 100644 --- a/core/shared_mem.c +++ b/core/shared_mem.c @@ -62,7 +62,11 @@ int fill_shared_mem_info(uint64_t start_vaddr, uint32_t pages_no, return -EFAULT; down_read(&mm_sem_lock(current->mm)); +#if (KERNEL_VERSION(6, 6, 0) <= LINUX_VERSION_CODE) + page_num = get_user_pages((uintptr_t)start_vaddr, pages_no, FOLL_WRITE, pages); +#else page_num = get_user_pages((uintptr_t)start_vaddr, pages_no, FOLL_WRITE, pages, NULL); +#endif up_read(&mm_sem_lock(current->mm)); if (page_num != pages_no) { tloge("get page phy addr failed\n");