Message ID | 1477030452-1765-1-git-send-email-fgao@ikuai8.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
Hello. On 10/21/2016 9:14 AM, fgao@ikuai8.com wrote: > From: Gao Feng <fgao@ikuai8.com> > > Current tun driver permits the ifr_flags is set with IFF_TUN and > IFF_TAP at the same time. But actually there is only IFF_TUN flag > works. And it does not make sense these two flags are set, so add > this check. > > Signed-off-by: Gao Feng <fgao@ikuai8.com> > --- > drivers/net/tun.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/tun.c b/drivers/net/tun.c > index 8093e39..c1f89c1 100644 > --- a/drivers/net/tun.c > +++ b/drivers/net/tun.c > @@ -1752,6 +1752,10 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) > if (err < 0) > return err; > > + if ((ifr->ifr_flags & (IFF_TUN | IFF_TAP)) == (IFF_TUN | IFF_TAP)) { > + return -EINVAL; > + } {} not needed here. MBR, Sergei
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 8093e39..c1f89c1 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1752,6 +1752,10 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) if (err < 0) return err; + if ((ifr->ifr_flags & (IFF_TUN | IFF_TAP)) == (IFF_TUN | IFF_TAP)) { + return -EINVAL; + } + /* Set dev type */ if (ifr->ifr_flags & IFF_TUN) { /* TUN device */