From: "Eric W. Biederman" <ebied...@xmission.com>

Cc: Arve Hjønnevåg <a...@android.com>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Acked-by: Serge Hallyn <serge.hal...@canonical.com>
Signed-off-by: Eric W. Biederman <ebied...@xmission.com>
---
 drivers/staging/android/binder.c |   14 +++++++-------
 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
-- 
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to