--- a/drivers/android/Kconfig +++ b/drivers/android/Kconfig @@ -2,7 +2,7 @@ menu "Android" config ANDROID_BINDER_IPC - bool "Android Binder IPC Driver" + tristate "Android Binder IPC Driver" depends on MMU default n help --- a/drivers/android/Makefile +++ b/drivers/android/Makefile @@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0-only ccflags-y += -I$(src) # needed for trace events -obj-$(CONFIG_ANDROID_BINDERFS) += binderfs.o -obj-$(CONFIG_ANDROID_BINDER_IPC) += binder.o binder_alloc.o -obj-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o +obj-$(CONFIG_ANDROID_BINDER_IPC) += binder_linux.o +binder_linux-y := binder.o binder_alloc.o +binder_linux-$(CONFIG_ANDROID_BINDERFS) += binderfs.o +binder_linux-$(CONFIG_ANDROID_BINDER_IPC_SELFTEST) += binder_alloc_selftest.o --- a/drivers/android/binder_alloc.c +++ b/drivers/android/binder_alloc.c @@ -38,7 +38,7 @@ enum { }; static uint32_t binder_alloc_debug_mask = BINDER_DEBUG_USER_ERROR; -module_param_named(debug_mask, binder_alloc_debug_mask, +module_param_named(alloc_debug_mask, binder_alloc_debug_mask, uint, 0644); #define binder_alloc_debug(mask, x...) \ --- a/fs/file.c +++ b/fs/file.c @@ -813,6 +813,7 @@ struct file *file_close_fd(unsigned return file; } +EXPORT_SYMBOL_GPL(file_close_fd); void do_close_on_exec(struct files_struct *files) { --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7052,6 +7052,7 @@ static bool is_nice_reduction(const stru return (nice_rlim <= task_rlimit(p, RLIMIT_NICE)); } +EXPORT_SYMBOL_GPL(can_nice); /* * can_nice - check if a task can reduce its nice value --- a/kernel/task_work.c +++ b/kernel/task_work.c @@ -73,6 +73,7 @@ int task_work_add(struct task_struct *ta return 0; } +EXPORT_SYMBOL_GPL(task_work_add); /** * task_work_cancel_match - cancel a pending work added by task_work_add() --- a/security/security.c +++ b/security/security.c @@ -798,6 +798,7 @@ int security_binder_set_context_mgr(cons { return call_int_hook(binder_set_context_mgr, 0, mgr); } +EXPORT_SYMBOL_GPL(security_binder_set_context_mgr); /** * security_binder_transaction() - Check if a binder transaction is allowed @@ -813,6 +814,7 @@ int security_binder_transaction(const st { return call_int_hook(binder_transaction, 0, from, to); } +EXPORT_SYMBOL_GPL(security_binder_transaction); /** * security_binder_transfer_binder() - Check if a binder transfer is allowed @@ -828,6 +830,7 @@ int security_binder_transfer_binder(cons { return call_int_hook(binder_transfer_binder, 0, from, to); } +EXPORT_SYMBOL_GPL(security_binder_transfer_binder); /** * security_binder_transfer_file() - Check if a binder file xfer is allowed @@ -844,6 +847,7 @@ int security_binder_transfer_file(const { return call_int_hook(binder_transfer_file, 0, from, to, file); } +EXPORT_SYMBOL_GPL(security_binder_transfer_file); /** * security_ptrace_access_check() - Check if tracing is allowed --- a/ipc/namespace.c~ 2022-12-11 23:15:18.000000000 +0100 +++ b/ipc/namespace.c 2022-12-29 16:10:27.771070995 +0100 @@ -188,6 +188,7 @@ schedule_work(&free_ipc_work); } } +EXPORT_SYMBOL_GPL(put_ipc_ns); static inline struct ipc_namespace *to_ipc_ns(struct ns_common *ns) { --- a/kernel/sched/wait.c~ 2022-12-11 23:15:18.000000000 +0100 +++ b/kernel/sched/wait.c 2022-12-29 16:11:51.746470281 +0100 @@ -243,6 +243,7 @@ /* POLLFREE must have cleared the queue. */ WARN_ON_ONCE(waitqueue_active(wq_head)); } +EXPORT_SYMBOL_GPL(__wake_up_pollfree); /* * Note: we use "set_current_state()" _after_ the wait-queue add, --- a/ipc/msgutil.c~ 2022-12-11 23:15:18.000000000 +0100 +++ b/ipc/msgutil.c 2022-12-29 16:22:49.139136583 +0100 @@ -33,6 +33,7 @@ .ns.ops = &ipcns_operations, #endif }; +EXPORT_SYMBOL_GPL(init_ipc_ns); struct msg_msgseg { struct msg_msgseg *next; --- linux-6.3/mm/memory.c.orig 2023-04-23 21:02:52.000000000 +0200 +++ linux-6.3/mm/memory.c 2023-04-26 10:57:23.873394940 +0200 @@ -1728,6 +1728,7 @@ tlb_finish_mmu(&tlb); hugetlb_zap_end(vma, details); } +EXPORT_SYMBOL_GPL(zap_page_range_single); /** * zap_vma_ptes - remove ptes mapping the vma