X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Fnet%2Ftun.c;h=666c1d98cdaf1d695aece39e195eac212d42e264;hb=33edcf133ba93ecba2e4b6472e97b689895d805c;hp=fd0b11ea5562fe12cd7b2e517470010bae77f0bd;hpb=354ade9058687fdef8a612c7b298d4c51dae3da7;p=linux-2.6-omap-h63xx.git diff --git a/drivers/net/tun.c b/drivers/net/tun.c index fd0b11ea556..666c1d98cda 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -715,6 +715,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) struct tun_net *tn; struct tun_struct *tun; struct net_device *dev; + const struct cred *cred = current_cred(); int err; tn = net_generic(net, tun_net_id); @@ -725,11 +726,12 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) /* Check permissions */ if (((tun->owner != -1 && - current->euid != tun->owner) || + cred->euid != tun->owner) || (tun->group != -1 && - current->egid != tun->group)) && - !capable(CAP_NET_ADMIN)) + cred->egid != tun->group)) && + !capable(CAP_NET_ADMIN)) { return -EPERM; + } } else if (__dev_get_by_name(net, ifr->ifr_name)) return -EINVAL;