From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hangbin Liu Subject: [PATCH net] bridge: check iface upper dev when setting master via ioctl Date: Thu, 26 Apr 2018 21:56:26 +0800 Message-ID: <1524750986-23904-1-git-send-email-liuhangbin@gmail.com> Cc: Dmitry Vyukov , syzbot , David Miller , Hangbin Liu To: netdev@vger.kernel.org Return-path: Received: from mail-pf0-f196.google.com ([209.85.192.196]:45723 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755872AbeDZN4r (ORCPT ); Thu, 26 Apr 2018 09:56:47 -0400 Received: by mail-pf0-f196.google.com with SMTP id l27so18436206pfk.12 for ; Thu, 26 Apr 2018 06:56:47 -0700 (PDT) Sender: netdev-owner@vger.kernel.org List-ID: When we set a bond slave's master to bridge via ioctl, we only check the IFF_BRIDGE_PORT flag. Although we will find the slave's real master at netdev_master_upper_dev_link() later, it already does some settings and allocates some resources. So it would be better to return as early as possible. Reported-by: syzbot+de73361ee4971b6e6f75@syzkaller.appspotmail.com Signed-off-by: Hangbin Liu --- net/bridge/br_if.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c index 82c1a6f..176de8a9 100644 --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c @@ -518,8 +518,8 @@ int br_add_if(struct net_bridge *br, struct net_device *dev, return -ELOOP; } - /* Device is already being bridged */ - if (br_port_exists(dev)) + /* Device has master upper dev */ + if (netdev_has_any_upper_dev(dev)) return -EBUSY; /* No bridging devices that dislike that (e.g. wireless) */ -- 2.5.5