From 492823e1d6f922811ba9481c9b1afd2c80ef0c1e Mon Sep 17 00:00:00 2001 From: Xi_Yuhao Date: Fri, 14 Jan 2022 16:27:42 +0800 Subject: [PATCH 1/4] fixed 41df232 from https://gitee.com/Xi_Yuhao/kernel_linux_5.10/pulls/38 add accesstokenid to binder driver Signed-off-by: Xi_Yuhao --- drivers/android/binder.c | 12 ++++++++++++ include/uapi/linux/android/binder.h | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index d9977ce0be76..a8f6411ac967 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -582,6 +582,10 @@ struct binder_transaction { long priority; long saved_priority; kuid_t sender_euid; +#ifdef CONFIG_ACCESS_TOKENID + u64 sender_tokenid; + u64 first_tokenid; +#endif /* CONFIG_ACCESS_TOKENID */ struct list_head fd_fixups; binder_uintptr_t security_ctx; /** @@ -3088,6 +3092,10 @@ static void binder_transaction(struct binder_proc *proc, else t->from = NULL; t->sender_euid = task_euid(proc->tsk); +#ifdef CONFIG_ACCESS_TOKENID + t->sender_tokenid = current->token; + t->first_tokenid = current->token; +#endif /* CONFIG_ACCESS_TOKENID */ t->to_proc = target_proc; t->to_thread = target_thread; t->code = tr->code; @@ -4447,6 +4455,10 @@ static int binder_thread_read(struct binder_proc *proc, trd->code = t->code; trd->flags = t->flags; trd->sender_euid = from_kuid(current_user_ns(), t->sender_euid); +#ifdef CONFIG_ACCESS_TOKENID + trd->sender_tokenid = t->sender_tokenid; + trd->first_tokenid = t->first_tokenid; +#endif /* CONFIG_ACCESS_TOKENID */ t_from = binder_get_txn_from(t); if (t_from) { diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h index ec84ad106568..42b680448f5c 100644 --- a/include/uapi/linux/android/binder.h +++ b/include/uapi/linux/android/binder.h @@ -268,6 +268,10 @@ struct binder_transaction_data { __u32 flags; pid_t sender_pid; uid_t sender_euid; +#ifdef CONFIG_ACCESS_TOKENID + __u64 sender_tokenid; + __u64 first_tokenid; +#endif /* CONFIG_ACCESS_TOKENID */ binder_size_t data_size; /* number of bytes of data */ binder_size_t offsets_size; /* number of bytes of offsets */ -- Gitee From 48ec3980bb3f59f05e31997bee7db8eadb9aa114 Mon Sep 17 00:00:00 2001 From: XiYuhao Date: Fri, 14 Jan 2022 14:58:53 +0000 Subject: [PATCH 2/4] update drivers/android/binder.c. Signed-off-by: XiYuhao --- drivers/android/binder.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index a8f6411ac967..44e1a8bc7d2f 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -3094,7 +3094,7 @@ static void binder_transaction(struct binder_proc *proc, t->sender_euid = task_euid(proc->tsk); #ifdef CONFIG_ACCESS_TOKENID t->sender_tokenid = current->token; - t->first_tokenid = current->token; + t->first_tokenid = current->ftoken; #endif /* CONFIG_ACCESS_TOKENID */ t->to_proc = target_proc; t->to_thread = target_thread; -- Gitee From fdfebf932a7ccc44bb2f32f5d23888158e3936e9 Mon Sep 17 00:00:00 2001 From: XiYuhao Date: Mon, 17 Jan 2022 08:48:08 +0000 Subject: [PATCH 3/4] update include/uapi/linux/android/binder.h. Signed-off-by: Xi_Yuhao --- include/uapi/linux/android/binder.h | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/include/uapi/linux/android/binder.h b/include/uapi/linux/android/binder.h index 42b680448f5c..1b75626269a3 100644 --- a/include/uapi/linux/android/binder.h +++ b/include/uapi/linux/android/binder.h @@ -195,6 +195,15 @@ struct binder_version { #define BINDER_CURRENT_PROTOCOL_VERSION 8 #endif +#ifdef CONFIG_ACCESS_TOKENID +#define ENABLE_ACCESS_TOKENID 1 +#else +#define ENABLE_ACCESS_TOKENID 0 +#endif /* CONFIG_ACCESS_TOKENID */ + +#define BINDER_SUB_VERSION_SHIFT_BASE 16 +#define BINDER_SUB_VERSION (ENABLE_ACCESS_TOKENID << BINDER_SUB_VERSION_SHIFT_BASE) + /* * Use with BINDER_GET_NODE_DEBUG_INFO, driver reads ptr, writes to all fields. * Set ptr to NULL for the first call to get the info for the first node, and @@ -268,10 +277,6 @@ struct binder_transaction_data { __u32 flags; pid_t sender_pid; uid_t sender_euid; -#ifdef CONFIG_ACCESS_TOKENID - __u64 sender_tokenid; - __u64 first_tokenid; -#endif /* CONFIG_ACCESS_TOKENID */ binder_size_t data_size; /* number of bytes of data */ binder_size_t offsets_size; /* number of bytes of offsets */ @@ -288,6 +293,10 @@ struct binder_transaction_data { } ptr; __u8 buf[8]; } data; +#ifdef CONFIG_ACCESS_TOKENID + __u64 sender_tokenid; + __u64 first_tokenid; +#endif /* CONFIG_ACCESS_TOKENID */ }; struct binder_transaction_data_secctx { -- Gitee From f50b97df83c591020dc82b0a8b2926e17703e51e Mon Sep 17 00:00:00 2001 From: XiYuhao Date: Mon, 17 Jan 2022 09:11:08 +0000 Subject: [PATCH 4/4] update drivers/android/binder.c. Signed-off-by: Xi_Yuhao --- drivers/android/binder.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 44e1a8bc7d2f..e58dd44eee3d 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -582,10 +582,6 @@ struct binder_transaction { long priority; long saved_priority; kuid_t sender_euid; -#ifdef CONFIG_ACCESS_TOKENID - u64 sender_tokenid; - u64 first_tokenid; -#endif /* CONFIG_ACCESS_TOKENID */ struct list_head fd_fixups; binder_uintptr_t security_ctx; /** @@ -595,6 +591,10 @@ struct binder_transaction { * during thread teardown */ spinlock_t lock; +#ifdef CONFIG_ACCESS_TOKENID + u64 sender_tokenid; + u64 first_tokenid; +#endif /* CONFIG_ACCESS_TOKENID */ }; /** @@ -5093,7 +5093,7 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ret = -EINVAL; goto err; } - if (put_user(BINDER_CURRENT_PROTOCOL_VERSION, + if (put_user(BINDER_CURRENT_PROTOCOL_VERSION + BINDER_SUB_VERSION, &ver->protocol_version)) { ret = -EINVAL; goto err; -- Gitee