aboutsummaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorDaniel Rosenberg <drosen@google.com>2017-03-13 15:34:03 -0700
committerAmit Pundir <amit.pundir@linaro.org>2017-04-10 13:12:16 +0530
commit1d2509402f0531a082c81e963372d5d8e3368190 (patch)
tree56073168764108ddf63b70646b1d483f5cb7b5f8 /fs
parent77de52e631bbb767d22c872a454b08727394032f (diff)
ANDROID: sdcardfs: Fix gid issue
We were already calculating most of these values, and erroring out because the check was confused by this. Instead of recalculating, adjust it as needed. Signed-off-by: Daniel Rosenberg <drosen@google.com> Bug: 36160015 Change-Id: I9caf3e2fd32ca2e37ff8ed71b1d392f1761bc9a9
Diffstat (limited to 'fs')
-rw-r--r--fs/sdcardfs/derived_perm.c4
-rw-r--r--fs/sdcardfs/multiuser.h21
2 files changed, 10 insertions, 15 deletions
diff --git a/fs/sdcardfs/derived_perm.c b/fs/sdcardfs/derived_perm.c
index 763f10340487..28e9b8d42f9e 100644
--- a/fs/sdcardfs/derived_perm.c
+++ b/fs/sdcardfs/derived_perm.c
@@ -205,13 +205,13 @@ void fixup_lower_ownership(struct dentry* dentry, const char *name) {
break;
case PERM_ANDROID_PACKAGE:
if (info->d_uid != 0)
- gid = multiuser_get_ext_gid(info->userid, info->d_uid);
+ gid = multiuser_get_ext_gid(info->d_uid);
else
gid = multiuser_get_uid(info->userid, uid);
break;
case PERM_ANDROID_PACKAGE_CACHE:
if (info->d_uid != 0)
- gid = multiuser_get_cache_gid(info->userid, info->d_uid);
+ gid = multiuser_get_cache_gid(info->d_uid);
else
gid = multiuser_get_uid(info->userid, uid);
break;
diff --git a/fs/sdcardfs/multiuser.h b/fs/sdcardfs/multiuser.h
index ca141ff40b49..2e89b5872314 100644
--- a/fs/sdcardfs/multiuser.h
+++ b/fs/sdcardfs/multiuser.h
@@ -28,22 +28,17 @@
typedef uid_t userid_t;
typedef uid_t appid_t;
-static inline uid_t multiuser_get_uid(userid_t user_id, appid_t app_id) {
+static inline uid_t multiuser_get_uid(userid_t user_id, appid_t app_id)
+{
return (user_id * AID_USER_OFFSET) + (app_id % AID_USER_OFFSET);
}
-static inline gid_t multiuser_get_cache_gid(userid_t user_id, appid_t app_id) {
- if (app_id >= AID_APP_START && app_id <= AID_APP_END) {
- return multiuser_get_uid(user_id, (app_id - AID_APP_START) + AID_CACHE_GID_START);
- } else {
- return -1;
- }
+static inline gid_t multiuser_get_cache_gid(uid_t uid)
+{
+ return uid - AID_APP_START + AID_CACHE_GID_START;
}
-static inline gid_t multiuser_get_ext_gid(userid_t user_id, appid_t app_id) {
- if (app_id >= AID_APP_START && app_id <= AID_APP_END) {
- return multiuser_get_uid(user_id, (app_id - AID_APP_START) + AID_EXT_GID_START);
- } else {
- return -1;
- }
+static inline gid_t multiuser_get_ext_gid(uid_t uid)
+{
+ return uid - AID_APP_START + AID_EXT_GID_START;
}