diff --git a/fs/proc/base.c b/fs/proc/base.c index 2d00fdde9345..8051324d187a 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -1013,7 +1013,7 @@ static int oom_adjust_permission(struct inode *inode, int mask) p = get_proc_task(inode); if(p) { - uid = task_uid(p); + uid = __kuid_val(task_uid(p)); put_task_struct(p); } @@ -1021,7 +1021,7 @@ static int oom_adjust_permission(struct inode *inode, int mask) * System Server (uid == 1000) is granted access to oom_adj of all * android applications (uid > 10000) as and services (uid >= 1000) */ - if (p && (current_fsuid() == 1000) && (uid >= 1000)) { + if (p && (__kuid_val(current_fsuid()) == 1000) && (uid >= 1000)) { if (inode->i_mode >> 6 & mask) { return 0; } diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 1d32f02413ac..b9c70b4807f4 100755 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -7763,7 +7763,7 @@ cpu_cgroup_allow_attach(struct cgroup *cgrp, struct cgroup_taskset *tset) tcred = __task_cred(task); if ((current != task) && !capable(CAP_SYS_NICE) && - cred->euid != tcred->uid && cred->euid != tcred->suid) + !uid_eq(cred->euid, tcred->uid) && !uid_eq(cred->euid, tcred->suid)) return -EACCES; } diff --git a/net/netfilter/xt_qtaguid.c b/net/netfilter/xt_qtaguid.c index e476b88f9d68..e4cf1b454f0c 100644 --- a/net/netfilter/xt_qtaguid.c +++ b/net/netfilter/xt_qtaguid.c @@ -145,22 +145,22 @@ static bool can_manipulate_uids(void) { /* root pwnd */ return in_egroup_p(xt_qtaguid_ctrl_file->gid) - || unlikely(!current_fsuid()) || unlikely(!proc_ctrl_write_limited) - || unlikely(current_fsuid() == xt_qtaguid_ctrl_file->uid); + || unlikely(!__kuid_val(current_fsuid())) || unlikely(!proc_ctrl_write_limited) + || unlikely(__kuid_val(current_fsuid()) == __kuid_val(xt_qtaguid_ctrl_file->uid)); } static bool can_impersonate_uid(uid_t uid) { - return uid == current_fsuid() || can_manipulate_uids(); + return uid == __kuid_val(current_fsuid()) || can_manipulate_uids(); } static bool can_read_other_uid_stats(uid_t uid) { /* root pwnd */ return in_egroup_p(xt_qtaguid_stats_file->gid) - || unlikely(!current_fsuid()) || uid == current_fsuid() + || unlikely(!__kuid_val(current_fsuid())) || uid == __kuid_val(current_fsuid()) || unlikely(!proc_stats_readall_limited) - || unlikely(current_fsuid() == xt_qtaguid_ctrl_file->uid); + || unlikely(__kuid_val(current_fsuid()) == __kuid_val(xt_qtaguid_ctrl_file->uid)); } static inline void dc_add_byte_packets(struct data_counters *counters, int set, @@ -542,7 +542,7 @@ static void put_utd_entry(struct uid_tag_data *utd_entry) "erase utd_entry=%p uid=%u " "by pid=%u tgid=%u uid=%u\n", __func__, utd_entry, utd_entry->uid, - current->pid, current->tgid, current_fsuid()); + current->pid, current->tgid, __kuid_val(current_fsuid())); BUG_ON(utd_entry->num_active_tags); rb_erase(&utd_entry->node, &uid_tag_data_tree); kfree(utd_entry); @@ -744,7 +744,7 @@ static int iface_stat_fmt_proc_show(struct seq_file *m, void *v) CT_DEBUG("qtaguid:proc iface_stat_fmt pid=%u tgid=%u uid=%u\n", - current->pid, current->tgid, current_fsuid()); + current->pid, current->tgid, __kuid_val(current_fsuid())); iface_entry = list_entry(v, struct iface_stat, list); @@ -1719,8 +1719,7 @@ static bool qtaguid_mt(const struct sk_buff *skb, struct xt_action_param *par) par->hooknum, sk, sk->sk_socket, sk->sk_socket ? sk->sk_socket->file : (void *)-1LL); filp = sk->sk_socket ? sk->sk_socket->file : NULL; - MT_DEBUG("qtaguid[%d]: filp...uid=%u\n", - par->hooknum, filp ? filp->f_cred->fsuid : -1); + } if (sk == NULL || sk->sk_socket == NULL) { @@ -1755,7 +1754,7 @@ static bool qtaguid_mt(const struct sk_buff *skb, struct xt_action_param *par) atomic64_inc(&qtu_events.match_no_sk_file); goto put_sock_ret_res; } - sock_uid = filp->f_cred->fsuid; + sock_uid = __kuid_val(filp->f_cred->fsuid); /* * TODO: unhack how to force just accounting. * For now we only do iface stats when the uid-owner is not requested @@ -1770,8 +1769,8 @@ static bool qtaguid_mt(const struct sk_buff *skb, struct xt_action_param *par) * Thus (!a && b) || (a && !b) == a ^ b */ if (info->match & XT_QTAGUID_UID) - if ((filp->f_cred->fsuid >= info->uid_min && - filp->f_cred->fsuid <= info->uid_max) ^ + if ((__kuid_val(filp->f_cred->fsuid) >= info->uid_min && + __kuid_val(filp->f_cred->fsuid) <= info->uid_max) ^ !(info->invert & XT_QTAGUID_UID)) { MT_DEBUG("qtaguid[%d]: leaving uid not matching\n", par->hooknum); @@ -1779,8 +1778,8 @@ static bool qtaguid_mt(const struct sk_buff *skb, struct xt_action_param *par) goto put_sock_ret_res; } if (info->match & XT_QTAGUID_GID) - if ((filp->f_cred->fsgid >= info->gid_min && - filp->f_cred->fsgid <= info->gid_max) ^ + if ((__kgid_val(filp->f_cred->fsgid) >= info->gid_min && + __kgid_val(filp->f_cred->fsgid) <= info->gid_max) ^ !(info->invert & XT_QTAGUID_GID)) { MT_DEBUG("qtaguid[%d]: leaving gid not matching\n", par->hooknum); @@ -1919,7 +1918,7 @@ static int qtaguid_ctrl_proc_show(struct seq_file *m, void *v) long f_count; CT_DEBUG("qtaguid: proc ctrl pid=%u tgid=%u uid=%u\n", - current->pid, current->tgid, current_fsuid()); + current->pid, current->tgid, __kuid_val(current_fsuid())); if (sock_tag_entry != SEQ_START_TOKEN) { uid = get_uid_from_tag(sock_tag_entry->tag); @@ -2005,11 +2004,11 @@ static int ctrl_cmd_delete(const char *input) goto err; } if (argc < 3) { - uid = current_fsuid(); + uid = __kuid_val(current_fsuid()); } else if (!can_impersonate_uid(uid)) { pr_info("qtaguid: ctrl_delete(%s): " "insufficient priv from pid=%u tgid=%u uid=%u\n", - input, current->pid, current->tgid, current_fsuid()); + input, current->pid, current->tgid, __kuid_val(current_fsuid())); res = -EPERM; goto err; } @@ -2160,7 +2159,7 @@ static int ctrl_cmd_counter_set(const char *input) if (!can_manipulate_uids()) { pr_info("qtaguid: ctrl_counterset(%s): " "insufficient priv from pid=%u tgid=%u uid=%u\n", - input, current->pid, current->tgid, current_fsuid()); + input, current->pid, current->tgid, __kuid_val(current_fsuid())); res = -EPERM; goto err; } @@ -2221,7 +2220,7 @@ static int ctrl_cmd_tag(const char *input) pr_info("qtaguid: ctrl_tag(%s): failed to lookup" " sock_fd=%d err=%d pid=%u tgid=%u uid=%u\n", input, sock_fd, res, current->pid, current->tgid, - current_fsuid()); + __kuid_val(current_fsuid())); goto err; } CT_DEBUG("qtaguid: ctrl_tag(%s): socket->...->f_count=%ld ->sk=%p\n", @@ -2237,17 +2236,17 @@ static int ctrl_cmd_tag(const char *input) CT_DEBUG("qtaguid: ctrl_tag(%s): " "pid=%u tgid=%u uid=%u euid=%u fsuid=%u " "ctrl.gid=%u in_group()=%d in_egroup()=%d\n", - input, current->pid, current->tgid, current_uid(), - current_euid(), current_fsuid(), - xt_qtaguid_ctrl_file->gid, + input, current->pid, current->tgid, __kuid_val(current_uid()), + __kuid_val(current_euid()), __kuid_val(current_fsuid()), + __kgid_val(xt_qtaguid_ctrl_file->gid), in_group_p(xt_qtaguid_ctrl_file->gid), in_egroup_p(xt_qtaguid_ctrl_file->gid)); if (argc < 4) { - uid = current_fsuid(); + uid = __kuid_val(current_fsuid()); } else if (!can_impersonate_uid(uid)) { pr_info("qtaguid: ctrl_tag(%s): " "insufficient priv from pid=%u tgid=%u uid=%u\n", - input, current->pid, current->tgid, current_fsuid()); + input, current->pid, current->tgid, __kuid_val(current_fsuid())); res = -EPERM; goto err_put; } @@ -2314,7 +2313,7 @@ static int ctrl_cmd_tag(const char *input) "User space forgot to open /dev/xt_qtaguid? " "pid=%u tgid=%u uid=%u\n", __func__, current->pid, current->tgid, - current_fsuid()); + __kuid_val(current_fsuid())); else list_add(&sock_tag_entry->list, &pqd_entry->sock_tag_list); @@ -2369,7 +2368,7 @@ static int ctrl_cmd_untag(const char *input) pr_info("qtaguid: ctrl_untag(%s): failed to lookup" " sock_fd=%d err=%d pid=%u tgid=%u uid=%u\n", input, sock_fd, res, current->pid, current->tgid, - current_fsuid()); + __kuid_val(current_fsuid())); goto err; } CT_DEBUG("qtaguid: ctrl_untag(%s): socket->...->f_count=%ld ->sk=%p\n", @@ -2403,7 +2402,7 @@ static int ctrl_cmd_untag(const char *input) pr_warn_once("qtaguid: %s(): " "User space forgot to open /dev/xt_qtaguid? " "pid=%u tgid=%u uid=%u\n", __func__, - current->pid, current->tgid, current_fsuid()); + current->pid, current->tgid, __kuid_val(current_fsuid())); else list_del(&sock_tag_entry->list); spin_unlock_bh(&uid_tag_data_tree_lock); @@ -2446,7 +2445,7 @@ static int qtaguid_ctrl_parse(const char *input, int count) int res; CT_DEBUG("qtaguid: ctrl(%s): pid=%u tgid=%u uid=%u\n", - input, current->pid, current->tgid, current_fsuid()); + input, current->pid, current->tgid, __kuid_val(current_fsuid())); cmd = input[0]; /* Collect params for commands */ @@ -2534,8 +2533,8 @@ static int pp_stats_line(struct seq_file *m, struct tag_stat *ts_entry, "from pid=%u tgid=%u uid=%u stats.gid=%u\n", ppi->iface_entry->ifname, get_atag_from_tag(tag), stat_uid, - current->pid, current->tgid, current_fsuid(), - xt_qtaguid_stats_file->gid); + current->pid, current->tgid, __kuid_val(current_fsuid()), + __kgid_val(xt_qtaguid_stats_file->gid)); return 0; } ppi->item_index++; @@ -2737,12 +2736,12 @@ static int qtudev_open(struct inode *inode, struct file *file) return 0; DR_DEBUG("qtaguid: qtudev_open(): pid=%u tgid=%u uid=%u\n", - current->pid, current->tgid, current_fsuid()); + current->pid, current->tgid, __kuid_val(current_fsuid())); spin_lock_bh(&uid_tag_data_tree_lock); /* Look for existing uid data, or alloc one. */ - utd_entry = get_uid_data(current_fsuid(), &utd_entry_found); + utd_entry = get_uid_data(__kuid_val(current_fsuid()), &utd_entry_found); if (IS_ERR_OR_NULL(utd_entry)) { res = PTR_ERR(utd_entry); goto err_unlock; @@ -2754,7 +2753,7 @@ static int qtudev_open(struct inode *inode, struct file *file) if (pqd_entry) { pr_err("qtaguid: qtudev_open(): %u/%u %u " "%s already opened\n", - current->pid, current->tgid, current_fsuid(), + current->pid, current->tgid, __kuid_val(current_fsuid()), QTU_DEV_NAME); res = -EBUSY; goto err_unlock_free_utd; @@ -2764,7 +2763,7 @@ static int qtudev_open(struct inode *inode, struct file *file) if (!new_pqd_entry) { pr_err("qtaguid: qtudev_open(): %u/%u %u: " "proc data alloc failed\n", - current->pid, current->tgid, current_fsuid()); + current->pid, current->tgid, __kuid_val(current_fsuid())); res = -ENOMEM; goto err_unlock_free_utd; } @@ -2778,7 +2777,7 @@ static int qtudev_open(struct inode *inode, struct file *file) spin_unlock_bh(&uid_tag_data_tree_lock); DR_DEBUG("qtaguid: tracking data for uid=%u in pqd=%p\n", - current_fsuid(), new_pqd_entry); + __kuid_val(current_fsuid()), new_pqd_entry); file->private_data = new_pqd_entry; return 0; diff --git a/net/netfilter/xt_quota2.c b/net/netfilter/xt_quota2.c index 44ebdcc75965..01af845eecca 100644 --- a/net/netfilter/xt_quota2.c +++ b/net/netfilter/xt_quota2.c @@ -231,7 +231,7 @@ q2_get_counter(const struct xt_quota_mtinfo2 *q) spin_unlock_bh(&counter_list_lock); goto out; } - proc_set_user(p, quota_list_uid, quota_list_gid); + proc_set_user(p, __kuid_val(quota_list_uid), __kgid_val(quota_list_gid)); return e; out: