]> git.proxmox.com Git - mirror_spl-debian.git/blobdiff - module/spl/spl-cred.c
Imported Upstream version 0.6.2
[mirror_spl-debian.git] / module / spl / spl-cred.c
index e669cbf5d8167d602760daff9bb6405bcdce55a9..0ed65725eb53a9dcab10e77dc47b0bf49c6051a0 100644 (file)
 #else
 /* Implementation from 2.6.30 kernel */
 static int
+#ifdef HAVE_KUIDGID_T
+cr_groups_search(const struct group_info *group_info, kgid_t grp)
+#else
 cr_groups_search(const struct group_info *group_info, gid_t grp)
+#endif
 {
        unsigned int left, right;
 
@@ -49,7 +53,7 @@ cr_groups_search(const struct group_info *group_info, gid_t grp)
        right = group_info->ngroups;
        while (left < right) {
                unsigned int mid = (left+right)/2;
-               int cmp = grp - GROUP_AT(group_info, mid);
+               int cmp = KGID_TO_SGID(grp) - KGID_TO_SGID(GROUP_AT(group_info, mid));
                if (cmp > 0)
                        left = mid + 1;
                else if (cmp < 0)
@@ -110,7 +114,7 @@ crgetgroups(const cred_t *cr)
        gid_t *gids;
 
        gi = get_group_info(cr->group_info);
-       gids = gi->blocks[0];
+       gids = KGIDP_TO_SGIDP(gi->blocks[0]);
        put_group_info(gi);
 
        return gids;
@@ -124,7 +128,7 @@ groupmember(gid_t gid, const cred_t *cr)
        int rc;
 
        gi = get_group_info(cr->group_info);
-       rc = cr_groups_search(cr->group_info, gid);
+       rc = cr_groups_search(cr->group_info, SGID_TO_KGID(gid));
        put_group_info(gi);
 
        return rc;
@@ -180,7 +184,7 @@ crgetgroups(const cred_t *cr)
                task_lock((struct task_struct *)cr);
 
        get_group_info(cr->group_info);
-       gids = cr->group_info->blocks[0];
+       gids = KGID_TO_SGID(cr->group_info->blocks[0]);
        put_group_info(cr->group_info);
 
        if (lock)
@@ -215,56 +219,56 @@ groupmember(gid_t gid, const cred_t *cr)
 uid_t
 crgetuid(const cred_t *cr)
 {
-       return cr->euid;
+       return KUID_TO_SUID(cr->euid);
 }
 
 /* Return the real user id */
 uid_t
 crgetruid(const cred_t *cr)
 {
-       return cr->uid;
+       return KUID_TO_SUID(cr->uid);
 }
 
 /* Return the saved user id */
 uid_t
 crgetsuid(const cred_t *cr)
 {
-       return cr->suid;
+       return KUID_TO_SUID(cr->suid);
 }
 
 /* Return the filesystem user id */
 uid_t
 crgetfsuid(const cred_t *cr)
 {
-       return cr->fsuid;
+       return KUID_TO_SUID(cr->fsuid);
 }
 
 /* Return the effective group id */
 gid_t
 crgetgid(const cred_t *cr)
 {
-       return cr->egid;
+       return KGID_TO_SGID(cr->egid);
 }
 
 /* Return the real group id */
 gid_t
 crgetrgid(const cred_t *cr)
 {
-       return cr->gid;
+       return KGID_TO_SGID(cr->gid);
 }
 
 /* Return the saved group id */
 gid_t
 crgetsgid(const cred_t *cr)
 {
-       return cr->sgid;
+       return KGID_TO_SGID(cr->sgid);
 }
 
 /* Return the filesystem group id */
 gid_t
 crgetfsgid(const cred_t *cr)
 {
-       return cr->fsgid;
+       return KGID_TO_SGID(cr->fsgid);
 }
 
 EXPORT_SYMBOL(crhold);