diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2012-05-25 18:34:53 -0600 |
---|---|---|
committer | Eric W. Biederman <ebiederm@xmission.com> | 2012-09-21 03:13:26 -0700 |
commit | 4a2ebb93bf0ae67b4b49f1974a525523eb923da0 (patch) | |
tree | b3d55229f4e5fed0927ebcc5b7499b4fbb238155 | |
parent | d2b31ca644fdc8704de3367a6a56a5c958c77f53 (diff) | |
download | op-kernel-dev-4a2ebb93bf0ae67b4b49f1974a525523eb923da0.zip op-kernel-dev-4a2ebb93bf0ae67b4b49f1974a525523eb923da0.tar.gz |
userns: Convert binder ipc to use kuids
Cc: Arve Hjønnevåg <arve@android.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
-rw-r--r-- | drivers/staging/android/binder.c | 14 | ||||
-rw-r--r-- | init/Kconfig | 3 |
2 files changed, 7 insertions, 10 deletions
diff --git a/drivers/staging/android/binder.c b/drivers/staging/android/binder.c index 574e992..8e35d4b 100644 --- a/drivers/staging/android/binder.c +++ b/drivers/staging/android/binder.c @@ -47,7 +47,7 @@ static HLIST_HEAD(binder_dead_nodes); static struct dentry *binder_debugfs_dir_entry_root; static struct dentry *binder_debugfs_dir_entry_proc; static struct binder_node *binder_context_mgr_node; -static uid_t binder_context_mgr_uid = -1; +static kuid_t binder_context_mgr_uid = INVALID_UID; static int binder_last_id; static struct workqueue_struct *binder_deferred_workqueue; @@ -356,7 +356,7 @@ struct binder_transaction { unsigned int flags; long priority; long saved_priority; - uid_t sender_euid; + kuid_t sender_euid; }; static void @@ -2427,7 +2427,7 @@ retry: } tr.code = t->code; tr.flags = t->flags; - tr.sender_euid = t->sender_euid; + tr.sender_euid = from_kuid(current_user_ns(), t->sender_euid); if (t->from) { struct task_struct *sender = t->from->proc->tsk; @@ -2705,12 +2705,12 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ret = -EBUSY; goto err; } - if (binder_context_mgr_uid != -1) { - if (binder_context_mgr_uid != current->cred->euid) { + if (uid_valid(binder_context_mgr_uid)) { + if (!uid_eq(binder_context_mgr_uid, current->cred->euid)) { pr_err("binder: BINDER_SET_" "CONTEXT_MGR bad uid %d != %d\n", - current->cred->euid, - binder_context_mgr_uid); + from_kuid(&init_user_ns, current->cred->euid), + from_kuid(&init_user_ns, binder_context_mgr_uid)); ret = -EPERM; goto err; } diff --git a/init/Kconfig b/init/Kconfig index 570cd33..8691098 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -952,9 +952,6 @@ config UIDGID_CONVERTED depends on UFS_FS = n depends on XFS_FS = n - # The rare drivers that won't build - depends on ANDROID_BINDER_IPC = n - config UIDGID_STRICT_TYPE_CHECKS bool "Require conversions between uid/gids and their internal representation" depends on UIDGID_CONVERTED |