diff options
| author | Eric W. Biederman <ebiederm@xmission.com> | 2012-05-24 12:55:00 -0600 | 
|---|---|---|
| committer | Eric W. Biederman <ebiederm@xmission.com> | 2012-08-14 21:49:42 -0700 | 
| commit | d13fda8564a67341aad257465cf319bdb2327e33 (patch) | |
| tree | b67146926931195117b1401b03097933c857b4cf /net/ax25 | |
| parent | 523a6a945f3cf5f1d337e50634687a577a732a5f (diff) | |
| download | linux-d13fda8564a67341aad257465cf319bdb2327e33.tar.bz2 | |
userns: Convert net/ax25 to use kuid_t where appropriate
Cc: Ralf Baechle <ralf@linux-mips.org>
Acked-by: David S. Miller <davem@davemloft.net>
Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Diffstat (limited to 'net/ax25')
| -rw-r--r-- | net/ax25/ax25_uid.c | 21 | 
1 files changed, 14 insertions, 7 deletions
| diff --git a/net/ax25/ax25_uid.c b/net/ax25/ax25_uid.c index e3c579ba6325..957999e43ff7 100644 --- a/net/ax25/ax25_uid.c +++ b/net/ax25/ax25_uid.c @@ -51,14 +51,14 @@ int ax25_uid_policy;  EXPORT_SYMBOL(ax25_uid_policy); -ax25_uid_assoc *ax25_findbyuid(uid_t uid) +ax25_uid_assoc *ax25_findbyuid(kuid_t uid)  {  	ax25_uid_assoc *ax25_uid, *res = NULL;  	struct hlist_node *node;  	read_lock(&ax25_uid_lock);  	ax25_uid_for_each(ax25_uid, node, &ax25_uid_list) { -		if (ax25_uid->uid == uid) { +		if (uid_eq(ax25_uid->uid, uid)) {  			ax25_uid_hold(ax25_uid);  			res = ax25_uid;  			break; @@ -84,7 +84,7 @@ int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax)  		read_lock(&ax25_uid_lock);  		ax25_uid_for_each(ax25_uid, node, &ax25_uid_list) {  			if (ax25cmp(&sax->sax25_call, &ax25_uid->call) == 0) { -				res = ax25_uid->uid; +				res = from_kuid_munged(current_user_ns(), ax25_uid->uid);  				break;  			}  		} @@ -93,9 +93,14 @@ int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax)  		return res;  	case SIOCAX25ADDUID: +	{ +		kuid_t sax25_kuid;  		if (!capable(CAP_NET_ADMIN))  			return -EPERM; -		user = ax25_findbyuid(sax->sax25_uid); +		sax25_kuid = make_kuid(current_user_ns(), sax->sax25_uid); +		if (!uid_valid(sax25_kuid)) +			return -EINVAL; +		user = ax25_findbyuid(sax25_kuid);  		if (user) {  			ax25_uid_put(user);  			return -EEXIST; @@ -106,7 +111,7 @@ int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax)  			return -ENOMEM;  		atomic_set(&ax25_uid->refcount, 1); -		ax25_uid->uid  = sax->sax25_uid; +		ax25_uid->uid  = sax25_kuid;  		ax25_uid->call = sax->sax25_call;  		write_lock(&ax25_uid_lock); @@ -114,7 +119,7 @@ int ax25_uid_ioctl(int cmd, struct sockaddr_ax25 *sax)  		write_unlock(&ax25_uid_lock);  		return 0; - +	}  	case SIOCAX25DELUID:  		if (!capable(CAP_NET_ADMIN))  			return -EPERM; @@ -172,7 +177,9 @@ static int ax25_uid_seq_show(struct seq_file *seq, void *v)  		struct ax25_uid_assoc *pt;  		pt = hlist_entry(v, struct ax25_uid_assoc, uid_node); -		seq_printf(seq, "%6d %s\n", pt->uid, ax2asc(buf, &pt->call)); +		seq_printf(seq, "%6d %s\n", +			from_kuid_munged(seq_user_ns(seq), pt->uid), +			ax2asc(buf, &pt->call));  	}  	return 0;  } |