From patchwork Fri Oct 21 06:14:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?6auY5bOw?= X-Patchwork-Id: 684909 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3t0b5m4cypz9rxv for ; Fri, 21 Oct 2016 17:15:56 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753751AbcJUGPv (ORCPT ); Fri, 21 Oct 2016 02:15:51 -0400 Received: from SMTPBG352.QQ.COM ([183.57.50.167]:41079 "EHLO smtpbg352.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750856AbcJUGPt (ORCPT ); Fri, 21 Oct 2016 02:15:49 -0400 X-QQ-mid: bizesmtp2t1477030460t981mga3n Received: from localhost.localdomain (unknown [123.56.230.35]) by esmtp4.qq.com (ESMTP) with id ; Fri, 21 Oct 2016 14:14:13 +0800 (CST) X-QQ-SSF: 01400000002000F0FG40000A0000000 X-QQ-FEAT: oP8qruwI8aV6mHlAdp4OYLbIJmZ4FSHQR0Wc449Dc9wuc731D1XWQ3J0lJEWa QwCEtB+kgGuJdLt11eV+lVP/AUU4kr/M/BFA9fyXMzzpDXdowjLpMazVPeIYAzZ4irtpKe7 9JK2/QhQmwftUTGx6Y3cSbhyTvkmgx0LlxuRbJZ4TtMF3CArj5fVB3KcljBhDSvsvzdImB1 s7N63yJV3Go45zuiKBTcFRZK5ooRPPuzn5ZTHgS5ZhDF/8UqFjhG/afkXwFZnCxXWDDItCZ 1OEQ== X-QQ-GoodBg: 2 From: fgao@ikuai8.com To: davem@davemloft.net, jasowang@redhat.com, edumazet@google.com, pabeni@redhat.com, netdev@vger.kernel.org Cc: gfree.wind@gmail.com, Gao Feng Subject: [PATCH net-next 1/1] driver: tun: Forbid to set IFF_TUN and IFF_TAP at the same time Date: Fri, 21 Oct 2016 14:14:12 +0800 Message-Id: <1477030452-1765-1-git-send-email-fgao@ikuai8.com> X-Mailer: git-send-email 1.9.1 X-QQ-SENDSIZE: 520 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Gao Feng 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 --- 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; + } + /* Set dev type */ if (ifr->ifr_flags & IFF_TUN) { /* TUN device */