* [d-kernel] [7.3] binder: turn into module
@ 2026-10-23 7:42 lakostis
2026-10-23 7:42 ` [d-kernel] [PATCH 1/4] " lakostis
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: lakostis @ 2026-10-23 7:42 UTC (permalink / raw)
To: devel-kernel
Привет!
Как следует из названия, это серия патчей для превращения android binder
в ядре в модуль. Всяко лучше некрофилии anbox. Я раньше смотрел на эти
патчи, но тогда anbox не сильно расходился с кодом в ядре и бэкпортить
было несложно. Теперь же разница заметна, много архитектурных изменений
(есть даже экспериментальная версия на rust), поэтому данные патчи
сейчас имеют неоспоримые плюсы:
- апстримный код в ядре практически не меняется (в смысле эти патчи практически
его не меняют), легче поддерживать и делать бэкпорты
- модуль можно вынести в отдельный пакет (из соображений безопасности)
Пачти были взяты из ядра 7.2 xanmod[1], оригинальная версия из убунты.
Быстрая проверка показала, что в 7.3 с этими модулями waydroid работает.
Автозагрузку модуля binder_linux можно либо оставить в пакете
anbox-kernel-conf или переменовать его например в waydroid-kernel-conf.
1. https://gitlab.com/xanmod/linux-patches/-/tree/master/linux-7.2.y-xanmod/binder?ref_type=heads
Andrea Righi (1):
wait: allow to use __wake_up_pollfree() from GPL modules
Christian Brauner (2):
binder: turn into module
binder: give binder_alloc its own debug mask file
Paolo Pisati (1):
file: export file_close_fd() instead of close_fd_get_file()
drivers/android/Kconfig | 6 +++---
drivers/android/Makefile | 9 +++++----
drivers/android/binder.c | 15 ++++++++++++++-
drivers/android/binder_alloc.c | 3 +--
drivers/android/binder_alloc.h | 1 +
drivers/android/binder_internal.h | 5 +++--
drivers/android/binderfs.c | 6 +++---
fs/file.c | 1 +
include/linux/ipc_namespace.h | 3 +++
ipc/namespace.c | 17 +++++++++++++++++
kernel/sched/syscalls.c | 1 +
kernel/sched/wait.c | 1 +
kernel/task_work.c | 1 +
mm/list_lru.c | 1 +
mm/memory.c | 1 +
mm/mmap_lock.c | 1 +
mm/vmalloc.c | 1 +
security/security.c | 4 ++++
18 files changed, 62 insertions(+), 15 deletions(-)
--
2.50.1
^ permalink raw reply [flat|nested] 7+ messages in thread* [d-kernel] [PATCH 1/4] binder: turn into module 2026-10-23 7:42 [d-kernel] [7.3] binder: turn into module lakostis @ 2026-10-23 7:42 ` lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 2/4] binder: give binder_alloc its own debug mask file lakostis ` (3 subsequent siblings) 4 siblings, 0 replies; 7+ messages in thread From: lakostis @ 2026-10-23 7:42 UTC (permalink / raw) To: devel-kernel From: Christian Brauner <christian@brauner.io> The Android binder driver needs to become a module for the sake of shipping Anbox. To do this we need to export the following functions since binder is currently still using them: - security_binder_set_context_mgr() - security_binder_transaction() - security_binder_transfer_binder() - security_binder_transfer_file() - can_nice() - __close_fd_get_file() - mmput_async() - task_work_add() - map_kernel_range_noflush() - get_vm_area() - zap_vma_range() - put_ipc_ns() - get_ipc_ns_exported() - show_init_ipc_ns() Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> [ saf: fix additional reference to init_ipc_ns from 5.0-rc6 ] Signed-off-by: Seth Forshee <seth.forshee@canonical.com> [ arighi: fix EXPORT_SYMBOL vs EXPORT_SYMBOL_GPL change from 6.0-rc5 ] [ arighi: zap_page_range() has been dropped, export zap_page_range_single() in 6.3 ] Signed-off-by: Andrea Righi <andrea.righi@canonical.com> [ ppisati: export list_lru_add, list_lru_del, lock_vma_under_rcu] Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com> [ tjaalton: selftests got converted to KUnit ] [ tjaalton: 7.1: rename zap_page_range_simple to zap_vma_range] Signed-off-by: Timo Aaltonen <timo.aaltonen@canonical.com> Signed-off-by: Alexandre Frade <kernel@xanmod.org> Signed-off-by: Konstantin A. Lepikhov <lakostis@altlinux.ru> --- drivers/android/Kconfig | 6 +++--- drivers/android/Makefile | 9 +++++---- drivers/android/binder.c | 15 ++++++++++++++- drivers/android/binder_alloc.h | 1 + drivers/android/binder_internal.h | 5 +++-- drivers/android/binderfs.c | 6 +++--- fs/file.c | 1 + include/linux/ipc_namespace.h | 3 +++ ipc/namespace.c | 17 +++++++++++++++++ kernel/sched/syscalls.c | 1 + kernel/task_work.c | 1 + mm/list_lru.c | 1 + mm/memory.c | 1 + mm/mmap_lock.c | 1 + mm/vmalloc.c | 1 + security/security.c | 4 ++++ 16 files changed, 60 insertions(+), 13 deletions(-) diff --git a/drivers/android/Kconfig b/drivers/android/Kconfig index 606a9d07f774..b5feebbead21 100644 --- 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 depends on NET default n @@ -28,8 +28,8 @@ config ANDROID_BINDER_IPC_RUST between said processes. config ANDROID_BINDERFS - bool "Android Binderfs filesystem" - depends on ANDROID_BINDER_IPC + tristate "Android Binderfs filesystem" + depends on (ANDROID_BINDER_IPC=y) || (ANDROID_BINDER_IPC=m && m) default n help Binderfs is a pseudo-filesystem for the Android Binder IPC driver diff --git a/drivers/android/Makefile b/drivers/android/Makefile index e0c650d3898e..81ac0681fa1b 100644 --- a/drivers/android/Makefile +++ b/drivers/android/Makefile @@ -1,7 +1,8 @@ # 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 binder_netlink.o -obj-$(CONFIG_ANDROID_BINDER_ALLOC_KUNIT_TEST) += tests/ -obj-$(CONFIG_ANDROID_BINDER_IPC_RUST) += binder/ +binder_linux-y := binder.o binder_alloc.o binder_netlink.o +obj-$(CONFIG_ANDROID_BINDER_IPC) += binder_linux.o +binder_linux-$(CONFIG_ANDROID_BINDERFS) += binderfs.o +binder_linux-$(CONFIG_ANDROID_BINDER_ALLOC_KUNIT_TEST) += binder_alloc_selftest.o +binder_linux-$(CONFIG_ANDROID_BINDER_IPC_RUST) += binder/ diff --git a/drivers/android/binder.c b/drivers/android/binder.c index bc8bc9ee43a5..9422030f170b 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -7181,7 +7181,20 @@ static int __init binder_init(void) return ret; } -device_initcall(binder_init); +module_init(binder_init); +/* + * binder will have no exit function since binderfs instances can be mounted + * multiple times and also in user namespaces finding and destroying them all + * is not feasible without introducing insane locking. Just ignoring existing + * instances on module unload also wouldn't work since we would loose track of + * what major numer was dynamically allocated and also what minor numbers are + * already given out. So this would get us into all kinds of issues with device + * number reuse. So simply don't allow unloading unless we are forced to do so. + */ + +MODULE_AUTHOR("Google, Inc."); +MODULE_DESCRIPTION("Driver for Android binder device"); +MODULE_LICENSE("GPL v2"); #define CREATE_TRACE_POINTS #include "binder_trace.h" diff --git a/drivers/android/binder_alloc.h b/drivers/android/binder_alloc.h index d6f1f6f2d00e..7edae3eb50f5 100644 --- a/drivers/android/binder_alloc.h +++ b/drivers/android/binder_alloc.h @@ -6,6 +6,7 @@ #ifndef _LINUX_BINDER_ALLOC_H #define _LINUX_BINDER_ALLOC_H +#include <linux/kconfig.h> #include <linux/rbtree.h> #include <linux/list.h> #include <linux/mm.h> diff --git a/drivers/android/binder_internal.h b/drivers/android/binder_internal.h index 342574bfd28a..a723f845bd6a 100644 --- a/drivers/android/binder_internal.h +++ b/drivers/android/binder_internal.h @@ -4,6 +4,7 @@ #define _LINUX_BINDER_INTERNAL_H #include <linux/fs.h> +#include <linux/kconfig.h> #include <linux/list.h> #include <linux/miscdevice.h> #include <linux/mutex.h> @@ -76,7 +77,7 @@ extern const struct file_operations binder_fops; extern char *binder_devices_param; -#ifdef CONFIG_ANDROID_BINDERFS +#if IS_ENABLED(CONFIG_ANDROID_BINDERFS) extern bool is_binderfs_device(const struct inode *inode); extern struct dentry *binderfs_create_file(struct dentry *dir, const char *name, const struct file_operations *fops, @@ -95,7 +96,7 @@ static inline struct dentry *binderfs_create_file(struct dentry *dir, } #endif -#ifdef CONFIG_ANDROID_BINDERFS +#if IS_ENABLED(CONFIG_ANDROID_BINDERFS) extern int __init init_binderfs(void); #else static inline int __init init_binderfs(void) diff --git a/drivers/android/binderfs.c b/drivers/android/binderfs.c index 1ca31b9a0583..748e96cddc59 100644 --- a/drivers/android/binderfs.c +++ b/drivers/android/binderfs.c @@ -123,7 +123,7 @@ static int binderfs_binder_device_create(struct inode *ref_inode, struct super_block *sb = ref_inode->i_sb; struct binderfs_info *info = sb->s_fs_info; #if defined(CONFIG_IPC_NS) - bool use_reserve = (info->ipc_ns == &init_ipc_ns); + bool use_reserve = (info->ipc_ns == show_init_ipc_ns()); #else bool use_reserve = true; #endif @@ -390,7 +390,7 @@ static int binderfs_binder_ctl_create(struct super_block *sb) struct dentry *root = sb->s_root; struct binderfs_info *info = sb->s_fs_info; #if defined(CONFIG_IPC_NS) - bool use_reserve = (info->ipc_ns == &init_ipc_ns); + bool use_reserve = (info->ipc_ns == show_init_ipc_ns()); #else bool use_reserve = true; #endif @@ -642,7 +642,7 @@ static int binderfs_fill_super(struct super_block *sb, struct fs_context *fc) return -ENOMEM; info = sb->s_fs_info; - info->ipc_ns = get_ipc_ns(current->nsproxy->ipc_ns); + info->ipc_ns = get_ipc_ns_exported(current->nsproxy->ipc_ns); info->root_gid = make_kgid(sb->s_user_ns, 0); if (!gid_valid(info->root_gid)) diff --git a/fs/file.c b/fs/file.c index 628ca07dc4b1..d18a19c2e6af 100644 --- a/fs/file.c +++ b/fs/file.c @@ -886,6 +886,7 @@ struct file *file_close_fd(unsigned int fd) return file; } +EXPORT_SYMBOL(close_fd_get_file); void do_close_on_exec(struct files_struct *files) { diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h index 12faca29bbb9..5bf174df249e 100644 --- a/include/linux/ipc_namespace.h +++ b/include/linux/ipc_namespace.h @@ -128,6 +128,9 @@ extern int mq_init_ns(struct ipc_namespace *ns); static inline int mq_init_ns(struct ipc_namespace *ns) { return 0; } #endif +extern struct ipc_namespace *get_ipc_ns_exported(struct ipc_namespace *ns); +extern struct ipc_namespace *show_init_ipc_ns(void); + #if defined(CONFIG_IPC_NS) static inline struct ipc_namespace *to_ipc_ns(struct ns_common *ns) { diff --git a/ipc/namespace.c b/ipc/namespace.c index 75aa7b469348..3559938a6ba0 100644 --- a/ipc/namespace.c +++ b/ipc/namespace.c @@ -210,6 +210,23 @@ void put_ipc_ns(struct ipc_namespace *ns) schedule_work(&free_ipc_work); } } +EXPORT_SYMBOL(put_ipc_ns); + +struct ipc_namespace *get_ipc_ns_exported(struct ipc_namespace *ns) +{ + return get_ipc_ns(ns); +} +EXPORT_SYMBOL(get_ipc_ns_exported); + +struct ipc_namespace *show_init_ipc_ns(void) +{ +#if defined(CONFIG_IPC_NS) + return &init_ipc_ns; +#else + return NULL; +#endif +} +EXPORT_SYMBOL(show_init_ipc_ns); static struct ns_common *ipcns_get(struct task_struct *task) { diff --git a/kernel/sched/syscalls.c b/kernel/sched/syscalls.c index b215b0ead9a6..a9fc5414292c 100644 --- a/kernel/sched/syscalls.c +++ b/kernel/sched/syscalls.c @@ -119,6 +119,7 @@ int can_nice(const struct task_struct *p, const int nice) { return is_nice_reduction(p, nice) || capable(CAP_SYS_NICE); } +EXPORT_SYMBOL(can_nice); #ifdef __ARCH_WANT_SYS_NICE diff --git a/kernel/task_work.c b/kernel/task_work.c index 0f7519f8e7c9..08eb29abaea6 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(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 36662d02ff96..b7ea86ae6d66 100644 --- a/mm/list_lru.c +++ b/mm/list_lru.c @@ -273,6 +273,7 @@ bool list_lru_del(struct list_lru *lru, struct list_head *item, int nid, list_lru_unlock(l); return ret; } +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 8b0c2c735d3d..f07c56290222 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -2378,6 +2378,7 @@ void zap_vma_range(struct vm_area_struct *vma, unsigned long address, zap_vma_range_batched(&tlb, vma, address, size, NULL); tlb_finish_mmu(&tlb); } +EXPORT_SYMBOL(zap_vma_range); /** * zap_special_vma_range - zap all page table entries in a special vma range diff --git a/mm/mmap_lock.c b/mm/mmap_lock.c index 898c2ef1e958..4f5e3badb8ea 100644 --- a/mm/mmap_lock.c +++ b/mm/mmap_lock.c @@ -340,6 +340,7 @@ struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm, count_vm_vma_lock_event(VMA_LOCK_ABORT); return NULL; } +EXPORT_SYMBOL_GPL(lock_vma_under_rcu); static struct vm_area_struct *lock_next_vma_under_mmap_lock(struct mm_struct *mm, struct vma_iterator *vmi, diff --git a/mm/vmalloc.c b/mm/vmalloc.c index bea9f76ed7e7..4b51fbc83040 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -3292,6 +3292,7 @@ struct vm_struct *get_vm_area(unsigned long size, unsigned long flags) NUMA_NO_NODE, GFP_KERNEL, __builtin_return_address(0)); } +EXPORT_SYMBOL(get_vm_area); struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags, const void *caller) diff --git a/security/security.c b/security/security.c index 2ee276ab15c5..bad282ef9154 100644 --- a/security/security.c +++ b/security/security.c @@ -514,6 +514,7 @@ int security_binder_set_context_mgr(const struct cred *mgr) { return call_int_hook(binder_set_context_mgr, mgr); } +EXPORT_SYMBOL(security_binder_set_context_mgr); /** * security_binder_transaction() - Check if a binder transaction is allowed @@ -529,6 +530,7 @@ int security_binder_transaction(const struct cred *from, { return call_int_hook(binder_transaction, from, to); } +EXPORT_SYMBOL(security_binder_transaction); /** * security_binder_transfer_binder() - Check if a binder transfer is allowed @@ -544,6 +546,7 @@ int security_binder_transfer_binder(const struct cred *from, { return call_int_hook(binder_transfer_binder, from, to); } +EXPORT_SYMBOL(security_binder_transfer_binder); /** * security_binder_transfer_file() - Check if a binder file xfer is allowed @@ -560,6 +563,7 @@ int security_binder_transfer_file(const struct cred *from, { return call_int_hook(binder_transfer_file, from, to, file); } +EXPORT_SYMBOL(security_binder_transfer_file); /** * security_ptrace_access_check() - Check if tracing is allowed -- 2.50.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [d-kernel] [PATCH 2/4] binder: give binder_alloc its own debug mask file 2026-10-23 7:42 [d-kernel] [7.3] binder: turn into module lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 1/4] " lakostis @ 2026-10-23 7:42 ` lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 3/4] wait: allow to use __wake_up_pollfree() from GPL modules lakostis ` (2 subsequent siblings) 4 siblings, 0 replies; 7+ messages in thread From: lakostis @ 2026-10-23 7:42 UTC (permalink / raw) To: devel-kernel From: Christian Brauner <christian@brauner.io> Currently both binder.c and binder_alloc.c both register the /sys/module/binder_linux/paramters/debug_mask file which leads to conflicts in sysfs. This commit gives binder_alloc.c its own /sys/module/binder_linux/paramters/alloc_debug_mask file. Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com> Signed-off-by: Seth Forshee <seth.forshee@canonical.com> Signed-off-by: Alexandre Frade <kernel@xanmod.org> Signed-off-by: Konstantin A. Lepikhov <lakostis@altlinux.ru> --- drivers/android/binder_alloc.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c index e4488ad86a65..2675b4e4446d 100644 --- a/drivers/android/binder_alloc.c +++ b/drivers/android/binder_alloc.c @@ -39,8 +39,7 @@ enum { }; static uint32_t binder_alloc_debug_mask = BINDER_DEBUG_USER_ERROR; -module_param_named(debug_mask, binder_alloc_debug_mask, - uint, 0644); +module_param_named(alloc_debug_mask, binder_alloc_debug_mask, uint, 0644); #define binder_alloc_debug(mask, x...) \ do { \ -- 2.50.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [d-kernel] [PATCH 3/4] wait: allow to use __wake_up_pollfree() from GPL modules 2026-10-23 7:42 [d-kernel] [7.3] binder: turn into module lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 1/4] " lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 2/4] binder: give binder_alloc its own debug mask file lakostis @ 2026-10-23 7:42 ` lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 4/4] file: export file_close_fd() instead of close_fd_get_file() lakostis 2026-10-23 9:05 ` [d-kernel] [7.3] binder: turn into module Ivan A. Melnikov 4 siblings, 0 replies; 7+ messages in thread From: lakostis @ 2026-10-23 7:42 UTC (permalink / raw) To: devel-kernel From: Andrea Righi <andrea.righi@canonical.com> commit ebafbcf7f32d ("UBUNTU: SAUCE: binder: turn into module") is changing binder to be a module, but __wake_up_pollfree() can only be used internally by the kernel. Make __wake_up_pollfree an EXPORT_SYMBOL_GPL so that it can be used by the binder module. Signed-off-by: Andrea Righi <andrea.righi@canonical.com> Signed-off-by: Alexandre Frade <kernel@xanmod.org> Signed-off-by: Konstantin A. Lepikhov <lakostis@altlinux.ru> --- kernel/sched/wait.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sched/wait.c b/kernel/sched/wait.c index d033f600f48c..54b1a1b7ae4e 100644 --- a/kernel/sched/wait.c +++ b/kernel/sched/wait.c @@ -232,6 +232,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, -- 2.50.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [d-kernel] [PATCH 4/4] file: export file_close_fd() instead of close_fd_get_file() 2026-10-23 7:42 [d-kernel] [7.3] binder: turn into module lakostis ` (2 preceding siblings ...) 2026-10-23 7:42 ` [d-kernel] [PATCH 3/4] wait: allow to use __wake_up_pollfree() from GPL modules lakostis @ 2026-10-23 7:42 ` lakostis 2026-10-23 9:05 ` [d-kernel] [7.3] binder: turn into module Ivan A. Melnikov 4 siblings, 0 replies; 7+ messages in thread From: lakostis @ 2026-10-23 7:42 UTC (permalink / raw) To: devel-kernel From: Paolo Pisati <paolo.pisati@canonical.com> Following the refactor done in: commit a88c955fcfb49727d0ed86b47410f6555a8e69e4 Author: Christian Brauner <brauner@kernel.org> Date: Thu Nov 30 13:49:07 2023 +0100 file: s/close_fd_get_file()/file_close_fd()/g update the export directive we added in: commit 17f7fa4baad268cc4a93205747222be931699788 Author: Christian Brauner <brauner@kernel.org> Date: Wed Jan 16 23:13:25 2019 +0100 UBUNTU: SAUCE: binder: turn into module Anbox probably needs a review too. Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com> Signed-off-by: Alexandre Frade <kernel@xanmod.org> Signed-off-by: Konstantin A. Lepikhov <lakostis@altlinux.ru> --- fs/file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/file.c b/fs/file.c index d18a19c2e6af..cd6ac9e9e43f 100644 --- a/fs/file.c +++ b/fs/file.c @@ -886,7 +886,7 @@ struct file *file_close_fd(unsigned int fd) return file; } -EXPORT_SYMBOL(close_fd_get_file); +EXPORT_SYMBOL(file_close_fd); void do_close_on_exec(struct files_struct *files) { -- 2.50.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [d-kernel] [7.3] binder: turn into module 2026-10-23 7:42 [d-kernel] [7.3] binder: turn into module lakostis ` (3 preceding siblings ...) 2026-10-23 7:42 ` [d-kernel] [PATCH 4/4] file: export file_close_fd() instead of close_fd_get_file() lakostis @ 2026-10-23 9:05 ` Ivan A. Melnikov 2026-10-23 11:35 ` Konstantin Lepikhov 4 siblings, 1 reply; 7+ messages in thread From: Ivan A. Melnikov @ 2026-10-23 9:05 UTC (permalink / raw) To: lakostis; +Cc: devel-kernel [-- Attachment #1: Type: text/plain, Size: 1694 bytes --] On Fri, Oct 23, 2026 at 09:42:36AM +0200, lakostis@altlinux.org wrote: > Привет! > > Как следует из названия, это серия патчей для превращения android binder > в ядре в модуль. Всяко лучше некрофилии anbox. [...] Согласен, так действительно лучше. Однако если мы хотим это тащить в будущие ядра как альт-специфичные патчи (а мы наверняка хотим), я бы предпочёл дебиановский вариант, который аккуратнее, минималистичнее и экспортирует все символы как EXPORT_SYMBOL_GPL, не вызывая вопрсов почему одно так, а друге иначе. https://salsa.debian.org/kernel-team/linux/-/blob/ab4d926d5bfd610964c6f35edf7d6df3aeeeebea/debian/patches/debian/android-enable-building-binder-as-module.patch https://salsa.debian.org/kernel-team/linux/-/blob/ab4d926d5bfd610964c6f35edf7d6df3aeeeebea/debian/patches/debian/export-symbols-needed-by-binder.patch Будет здорово если Вы их также проверите и зашлёте сюда. Причём вместе с патчем на config, а то выбор ANDROID_BINDER_DEVICES для меня неочевиден. А если Вы ещё и добавите патч на спек, выносящий модуль в отдельный пакет, это резко повыcит шансы того, что я очень очень быстро применю. -- wbr, iv m. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 870 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [d-kernel] [7.3] binder: turn into module 2026-10-23 9:05 ` [d-kernel] [7.3] binder: turn into module Ivan A. Melnikov @ 2026-10-23 11:35 ` Konstantin Lepikhov 0 siblings, 0 replies; 7+ messages in thread From: Konstantin Lepikhov @ 2026-10-23 11:35 UTC (permalink / raw) To: devel-kernel Hi Ivan! On 10/23/2026, at 01:05:58 PM you wrote: > On Fri, Oct 23, 2026 at 09:42:36AM +0200, lakostis@altlinux.org wrote: > > Привет! > > > > Как следует из названия, это серия патчей для превращения android binder > > в ядре в модуль. Всяко лучше некрофилии anbox. > [...] > > Согласен, так действительно лучше. > > Однако если мы хотим это тащить в будущие ядра как альт-специфичные > патчи (а мы наверняка хотим), я бы предпочёл дебиановский вариант, > который аккуратнее, минималистичнее и экспортирует все символы > как EXPORT_SYMBOL_GPL, не вызывая вопрсов почему одно так, а друге иначе. > > https://salsa.debian.org/kernel-team/linux/-/blob/ab4d926d5bfd610964c6f35edf7d6df3aeeeebea/debian/patches/debian/android-enable-building-binder-as-module.patch > https://salsa.debian.org/kernel-team/linux/-/blob/ab4d926d5bfd610964c6f35edf7d6df3aeeeebea/debian/patches/debian/export-symbols-needed-by-binder.patch > > Будет здорово если Вы их также проверите и зашлёте сюда. Причём > вместе с патчем на config, а то выбор ANDROID_BINDER_DEVICES > для меня неочевиден. > > А если Вы ещё и добавите патч на спек, выносящий модуль в отдельный > пакет, это резко повыcит шансы того, что я очень очень быстро применю. В версии от debian binderfs собирается в ядро, а в убунте binderfs является частью модуля binder_linux. Мне нравится вариант от убунты, т.к. зачем нам лишний attack vector в ядре? Можно, конечно, посмотреть, как уменьшить патч от убунты, чтобы он не был таким большим. ANDROID_BINDER_DEVICES Это строка по-умолчанию, см. drivers/android/Kconfig и там depends on ANDROID_BINDER_IPC || ANDROID_BINDER_IPC_RUST -- WBR et al. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-10-23 11:35 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2026-10-23 7:42 [d-kernel] [7.3] binder: turn into module lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 1/4] " lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 2/4] binder: give binder_alloc its own debug mask file lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 3/4] wait: allow to use __wake_up_pollfree() from GPL modules lakostis 2026-10-23 7:42 ` [d-kernel] [PATCH 4/4] file: export file_close_fd() instead of close_fd_get_file() lakostis 2026-10-23 9:05 ` [d-kernel] [7.3] binder: turn into module Ivan A. Melnikov 2026-10-23 11:35 ` Konstantin Lepikhov
ALT Linux kernel packages development This inbox may be cloned and mirrored by anyone: git clone --mirror http://lore.altlinux.org/devel-kernel/0 devel-kernel/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 devel-kernel devel-kernel/ http://lore.altlinux.org/devel-kernel \ devel-kernel@altlinux.org devel-kernel@altlinux.ru devel-kernel@altlinux.com public-inbox-index devel-kernel Example config snippet for mirrors. Newsgroup available over NNTP: nntp://lore.altlinux.org/org.altlinux.lists.devel-kernel AGPL code for this site: git clone https://public-inbox.org/public-inbox.git