gid_t
gid_t gid);
uid_t uid, gid_t gid)
BUILD_BUG_ON(sizeof(u32) != sizeof(gid_t));
nla_total_size(sizeof(gid_t)) + /* GROUP */
gid_t ns_grp = (gid_t)-1;
memcpy(&ns_grp, connection_data, sizeof(gid_t));
gid_t gid;
inode->i_gid = make_kgid(&init_user_ns, (gid_t) attr->va_gid);
i_gid_write(inode, (gid_t)be16_to_cpu(efs_inode->di_gid));
gid_t i_gid;
i_gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
gid_t gid = i_gid_read(inode);
gid_t i_gid;
gid_t i_gid;
i_gid = (gid_t)le16_to_cpu(raw_inode->i_gid_low);
gid_t i_gid = le32_to_cpu(raw->i_gid);
i_gid_write(inode, (gid_t)vip->vii_gid);
req->in.h.gid == ((gid_t)-1))) {
gid_t parent_gid = from_kgid(fc->user_ns, kgid);
if (parent_gid == (gid_t) -1 || vfsgid_eq_kgid(vfsgid, current_fsgid()) ||
gid_t ia_gid;
int __init init_chown(const char *filename, uid_t user, gid_t group, int flags)
int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
int chown_common(const struct path *path, uid_t user, gid_t group);
gid_t gid;
if (gid == (gid_t)-1)
gid_t gid;
if (gid == (gid_t)-1)
if (!gid_eq(anong, make_kgid(userns, (gid_t)-2)) &&
__field(gid_t, ia_gid)
gid_t ns_resgid;
i_gid_write(inode, (gid_t)le32_to_cpu(value[1]));
int chown_common(const struct path *path, uid_t user, gid_t group)
if ((group != (gid_t)-1) && !setattr_vfsgid(&newattrs, gid))
int do_fchownat(int dfd, const char __user *filename, uid_t user, gid_t group,
gid_t, group, int, flag)
SYSCALL_DEFINE3(chown, const char __user *, filename, uid_t, user, gid_t, group)
SYSCALL_DEFINE3(lchown, const char __user *, filename, uid_t, user, gid_t, group)
int vfs_fchown(struct file *file, uid_t user, gid_t group)
int ksys_fchown(unsigned int fd, uid_t user, gid_t group)
SYSCALL_DEFINE3(fchown, unsigned int, fd, uid_t, user, gid_t, group)
i_gid_write(inode, (gid_t)le16_to_cpu(raw_inode->di_gid));
i_gid_write(inode, (gid_t)fs32_to_cpu(sbi, raw_inode->di_gid));
gid_t id;
gid_t id;
id = (gid_t)unix_id;
BUILD_BUG_ON(sizeof(uid_t) != sizeof(gid_t));
gid_t id;
memcpy(&id, &sidkey->payload.data[0], sizeof(gid_t));
if (id < ((gid_t)-1)) {
resp_ext->ngroups * sizeof(gid_t),
gid_t *sgid;
gid_t id;
gid_t gid;
gid_t gid;
gid_t gid;
static inline gid_t posix_acl_gid_translate(struct mnt_idmap *idmap,
resp->ngroups * sizeof(gid_t);
gid_t gid;
gid_t i_gid;
gid_t eof_gid;
extern void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode);
static inline void audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode)
gid_t gid, umode_t mode)
static inline gid_t i_gid_read(const struct inode *inode)
static inline void i_gid_write(struct inode *inode, gid_t gid)
int vfs_fchown(struct file *file, uid_t user, gid_t group);
#define low2highgid(gid) ((gid) == (old_gid_t)-1 ? (gid_t)-1 : (gid_t)(gid))
int __init init_chown(const char *filename, uid_t user, gid_t group, int flags);
return from_kgid(userns, AS_KGIDT(vfsgid)) != (gid_t)-1;
gid_t val;
static inline gid_t __vfsgid_val(vfsgid_t gid)
static inline gid_t __vfsgid_val(vfsgid_t gid)
return __vfsgid_val(gid) != (gid_t)-1;
uid_t user, gid_t group);
uid_t user, gid_t group);
int ksys_fchown(unsigned int fd, uid_t user, gid_t group);
gid_t group, int flag);
gid_t group)
gid_t group)
gid_t group, int flag);
asmlinkage long sys_fchown(unsigned int fd, uid_t user, gid_t group);
asmlinkage long sys_setregid(gid_t rgid, gid_t egid);
asmlinkage long sys_setgid(gid_t gid);
asmlinkage long sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid);
asmlinkage long sys_getresgid(gid_t __user *rgid, gid_t __user *egid, gid_t __user *sgid);
asmlinkage long sys_setfsgid(gid_t gid);
asmlinkage long sys_getgroups(int gidsetsize, gid_t __user *grouplist);
asmlinkage long sys_setgroups(int gidsetsize, gid_t __user *grouplist);
return __kgid_val(gid) != (gid_t) -1;
extern kgid_t make_kgid(struct user_namespace *from, gid_t gid);
extern gid_t from_kgid(struct user_namespace *to, kgid_t gid);
extern gid_t from_kgid_munged(struct user_namespace *to, kgid_t gid);
return from_kgid(ns, gid) != (gid_t) -1;
static inline kgid_t make_kgid(struct user_namespace *from, gid_t gid)
static inline gid_t from_kgid(struct user_namespace *to, kgid_t kgid)
static inline gid_t from_kgid_munged(struct user_namespace *to, kgid_t kgid)
gid_t gid = from_kgid(to, kgid);
if (gid == (gid_t)-1)
static inline gid_t __kgid_val(kgid_t gid)
static inline gid_t __kgid_val(kgid_t gid)
gid_t val;
#define GID_T_MAX (((gid_t)~0U) - 1)
__field( gid_t, gid )
__field( gid_t, gid )
static __initdata gid_t gid;
.maxlen = sizeof(gid_t),
gid_t perm_gid;
void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode)
SYSCALL_DEFINE2(getgroups, int, gidsetsize, gid_t __user *, grouplist)
SYSCALL_DEFINE2(setgroups, int, gidsetsize, gid_t __user *, grouplist)
static int groups_to_user(gid_t __user *grouplist,
gid_t gid;
gid_t __user *grouplist)
gid_t gid;
long __sys_setregid(gid_t rgid, gid_t egid)
if ((rgid != (gid_t) -1) && !gid_valid(krgid))
if ((egid != (gid_t) -1) && !gid_valid(kegid))
if (rgid != (gid_t) -1) {
if (egid != (gid_t) -1) {
if (rgid != (gid_t) -1 ||
(egid != (gid_t) -1 && !gid_eq(kegid, old->gid)))
SYSCALL_DEFINE2(setregid, gid_t, rgid, gid_t, egid)
long __sys_setgid(gid_t gid)
SYSCALL_DEFINE1(setgid, gid_t, gid)
long __sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid)
if ((rgid != (gid_t) -1) && !gid_valid(krgid))
if ((egid != (gid_t) -1) && !gid_valid(kegid))
if ((sgid != (gid_t) -1) && !gid_valid(ksgid))
if ((rgid == (gid_t) -1 || gid_eq(krgid, old->gid)) &&
(egid == (gid_t) -1 || (gid_eq(kegid, old->egid) &&
(sgid == (gid_t) -1 || gid_eq(ksgid, old->sgid)))
rgid_new = rgid != (gid_t) -1 && !gid_eq(krgid, old->gid) &&
egid_new = egid != (gid_t) -1 && !gid_eq(kegid, old->gid) &&
sgid_new = sgid != (gid_t) -1 && !gid_eq(ksgid, old->gid) &&
if (rgid != (gid_t) -1)
if (egid != (gid_t) -1)
if (sgid != (gid_t) -1)
SYSCALL_DEFINE3(setresgid, gid_t, rgid, gid_t, egid, gid_t, sgid)
SYSCALL_DEFINE3(getresgid, gid_t __user *, rgidp, gid_t __user *, egidp, gid_t __user *, sgidp)
gid_t rgid, egid, sgid;
long __sys_setfsgid(gid_t gid)
gid_t old_fsgid;
SYSCALL_DEFINE1(setfsgid, gid_t, gid)
long __sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid);
long __sys_setfsgid(gid_t gid);
long __sys_setgid(gid_t gid);
long __sys_setregid(gid_t rgid, gid_t egid);
kgid_t make_kgid(struct user_namespace *ns, gid_t gid)
gid_t from_kgid(struct user_namespace *targ, kgid_t kgid)
gid_t from_kgid_munged(struct user_namespace *targ, kgid_t kgid)
gid_t gid;
if (gid == (gid_t) -1)
gid_t lower;
.maxlen = sizeof(gid_t),
gid_t gid = from_kgid_munged(user_ns, src->gid[i]);
if (len < n * sizeof(gid_t)) {
len = n * sizeof(gid_t);
len = n * sizeof(gid_t);
.maxlen = sizeof(gid_t)*2,
gid_t gid;
(gid_t)lnum);
(((gid_t)lnum) != lnum))
(gid_t)lnum);
(((gid_t)lnum) != lnum))
extern long keyctl_chown_key(key_serial_t, uid_t, gid_t);
if (group != (gid_t) -1)
(gid_t) arg4);
long keyctl_chown_key(key_serial_t id, uid_t user, gid_t group)
if ((group != (gid_t) -1) && !gid_valid(gid))
if (user == (uid_t) -1 && group == (gid_t) -1)
if (group != (gid_t) -1 && !gid_eq(gid, key->gid) && !in_group_p(gid))
int sys_chown(const char *path, uid_t owner, gid_t group)
int chown(const char *path, uid_t owner, gid_t group)
gid_t st_gid; /* group ID of owner */
gid_t gid;
gid_t gid;
gid_t outer_gid;
gid_t gid = getgid();
gid_t gid = getgid();
bool switch_ids(uid_t uid, gid_t gid)
gid_t gid = getgid();
gid_t gid = getgid();
extern bool switch_ids(uid_t uid, gid_t gid);
static inline bool switch_userns(int fd, uid_t uid, gid_t gid, bool drop_caps)
gid_t gid = getgid();
gid_t gid;
uid_t expected_uid, gid_t expected_gid)
gid_t gid;
gid_t gid;
gid_t target_gid = (setgid_count % 10);
static void ensure_group_exists(gid_t gid)
static void test_setgid(gid_t child_gid, bool expect_success)
static void test_setgroups(gid_t* child_groups, size_t len, bool expect_success)
gid_t groupset[len];
gid_t allowed_supp_groups[2] = {ALLOWED_CHILD1_UGID, ALLOWED_CHILD2_UGID};
gid_t disallowed_supp_groups[2] = {ROOT_UGID, NO_POLICY_UGID};
unsigned int mode, uid_t uid, gid_t gid)
uid_t uid, gid_t gid)
uid_t uid, gid_t gid, char dev_type,
unsigned int mode, uid_t uid, gid_t gid,