From: Ben Hutchings Date: Tue, 8 Jul 2025 11:32:21 +0000 (+0200) Subject: Export symbols needed by binder X-Git-Tag: archive/raspbian/6.17.13-1+rpi1~2^2~57 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=975bfdb7b1ad6b3db01ffa0862602a95a0f26094;p=linux.git Export symbols needed by binder Bug-Debian: https://bugs.debian.org/901492 We want to enable use of the Android binder driver to support Waydroid, but it should not be built-in as that would waste resources and increase security attack surface on systems that don't need it. Export the currently un-exported symbols it depends on. Gbp-Pq: Topic debian Gbp-Pq: Name export-symbols-needed-by-binder.patch --- diff --git a/fs/file.c b/fs/file.c index 28743b742e3..d030787add3 100644 --- a/fs/file.c +++ b/fs/file.c @@ -858,6 +858,7 @@ struct file *file_close_fd(unsigned int fd) return file; } +EXPORT_SYMBOL_GPL(file_close_fd); void do_close_on_exec(struct files_struct *files) { diff --git a/ipc/msgutil.c b/ipc/msgutil.c index c7be0c79264..6306109822e 100644 --- a/ipc/msgutil.c +++ b/ipc/msgutil.c @@ -33,6 +33,7 @@ struct ipc_namespace init_ipc_ns = { .ns.ops = &ipcns_operations, #endif }; +EXPORT_SYMBOL_GPL(init_ipc_ns); struct msg_msgseg { struct msg_msgseg *next; diff --git a/ipc/namespace.c b/ipc/namespace.c index 4df91ceeeaf..c075e7b8d52 100644 --- a/ipc/namespace.c +++ b/ipc/namespace.c @@ -207,6 +207,7 @@ void put_ipc_ns(struct ipc_namespace *ns) schedule_work(&free_ipc_work); } } +EXPORT_SYMBOL_GPL(put_ipc_ns); static inline struct ipc_namespace *to_ipc_ns(struct ns_common *ns) { diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c index 77ae87f36e8..90f65d9bbd0 100644 --- a/kernel/sched/syscalls.c +++ b/kernel/sched/syscalls.c @@ -140,6 +140,7 @@ int can_nice(const struct task_struct *p, const int nice) { return is_nice_reduction(p, nice) || capable(CAP_SYS_NICE); } +EXPORT_SYMBOL_GPL(can_nice); #ifdef __ARCH_WANT_SYS_NICE diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c index 20f27e2cf7a..8b1338c2834 100644 --- a/kernel/sched/wait.c +++ b/kernel/sched/wait.c @@ -231,6 +231,7 @@ void __wake_up_pollfree(struct wait_queue_head *wq_head) /* 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, diff --git a/kernel/task_work.c b/kernel/task_work.c index 0f7519f8e7c..45fd146b85d 100644 --- a/kernel/task_work.c +++ b/kernel/task_work.c @@ -102,6 +102,7 @@ int task_work_add(struct task_struct *task, struct callback_head *work, return 0; } +EXPORT_SYMBOL_GPL(task_work_add); /** * task_work_cancel_match - cancel a pending work added by task_work_add() diff --git a/mm/list_lru.c b/mm/list_lru.c index ec48b5dadf5..bf95d73c981 100644 --- a/mm/list_lru.c +++ b/mm/list_lru.c @@ -179,6 +179,7 @@ bool list_lru_add(struct list_lru *lru, struct list_head *item, int nid, unlock_list_lru(l, false); return false; } +EXPORT_SYMBOL_GPL(list_lru_add); bool list_lru_add_obj(struct list_lru *lru, struct list_head *item) { @@ -216,6 +217,7 @@ bool list_lru_del(struct list_lru *lru, struct list_head *item, int nid, unlock_list_lru(l, false); return false; } +EXPORT_SYMBOL_GPL(list_lru_del); bool list_lru_del_obj(struct list_lru *lru, struct list_head *item) { diff --git a/mm/memory.c b/mm/memory.c index 75f3b66be1d..d8ee36e78f0 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2042,6 +2042,7 @@ void zap_page_range_single(struct vm_area_struct *vma, unsigned long address, zap_page_range_single_batched(&tlb, vma, address, size, details); tlb_finish_mmu(&tlb); } +EXPORT_SYMBOL_GPL(zap_page_range_single); /** * zap_vma_ptes - remove ptes mapping the vma diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index b006cec8e6f..b9c16662db6 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -267,6 +267,7 @@ fallback: return vma; } +EXPORT_SYMBOL_GPL(lock_vma_under_rcu); #endif /* CONFIG_PER_VMA_LOCK */ #ifdef CONFIG_LOCK_MM_AND_FIND_VMA diff --git a/security/security.c b/security/security.c index ad163f06bf7..6d784386dec 100644 --- a/security/security.c +++ b/security/security.c @@ -996,6 +996,7 @@ int security_binder_set_context_mgr(const struct cred *mgr) { return call_int_hook(binder_set_context_mgr, mgr); } +EXPORT_SYMBOL_GPL(security_binder_set_context_mgr); /** * security_binder_transaction() - Check if a binder transaction is allowed @@ -1011,6 +1012,7 @@ int security_binder_transaction(const struct cred *from, { return call_int_hook(binder_transaction, from, to); } +EXPORT_SYMBOL_GPL(security_binder_transaction); /** * security_binder_transfer_binder() - Check if a binder transfer is allowed @@ -1026,6 +1028,7 @@ int security_binder_transfer_binder(const struct cred *from, { return call_int_hook(binder_transfer_binder, from, to); } +EXPORT_SYMBOL_GPL(security_binder_transfer_binder); /** * security_binder_transfer_file() - Check if a binder file xfer is allowed @@ -1042,6 +1045,7 @@ int security_binder_transfer_file(const struct cred *from, { return call_int_hook(binder_transfer_file, from, to, file); } +EXPORT_SYMBOL_GPL(security_binder_transfer_file); /** * security_ptrace_access_check() - Check if tracing is allowed