From patchwork Thu May 8 09:15:37 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Christensen X-Patchwork-Id: 346954 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 F3F3214008F for ; Thu, 8 May 2014 19:24:56 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753509AbaEHJYw (ORCPT ); Thu, 8 May 2014 05:24:52 -0400 Received: from mail.ordbogen.com ([86.58.170.13]:52004 "EHLO mail.ordbogen.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752850AbaEHJYh (ORCPT ); Thu, 8 May 2014 05:24:37 -0400 X-Greylist: delayed 471 seconds by postgrey-1.27 at vger.kernel.org; Thu, 08 May 2014 05:24:37 EDT Received: from pch.odense.ordbogen.com (odense.ordbogen.com [91.240.88.100]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.ordbogen.com (Postfix) with ESMTPSA id 8ACA3B30BC; Thu, 8 May 2014 11:16:45 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=ordbogen.com; s=20130821; t=1399540605; bh=j8xMohtsNQfzsZN3mSXjXqTkO+arsJhoTO5uIYxI9Ow=; h=From:To:Cc:Subject:Date:From; b=Bx8uDLGJVgZRQy5Rlobcp965Fh1bUiWAERG2fDSXwlJ2PxNVOAY6ZIxXLDfJiEONN 37LuQvFsywikgBHiZwDjqC/3mIX1MTCiCLQyMgg/isviaqUpqeAoBbtG93tazWJsk6 IaqU8PKl4y8BChP2DrBnB2LsPf7R+ZfAbKmSq/EU= From: Peter Christensen To: Patrick McHardy Cc: netdev@vger.kernel.org, Peter Christensen Subject: [PATCH] macvlan: Don't propagate IFF_ALLMULTI changes on down interfaces. Date: Thu, 8 May 2014 11:15:37 +0200 Message-Id: <1399540537-19262-1-git-send-email-pch@ordbogen.com> X-Mailer: git-send-email 1.7.10.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Clearing the IFF_ALLMULTI flag on a down interface could cause an allmulti overflow on the underlying interface. Attempting the set IFF_ALLMULTI on the underlying interface would cause an error and the log message: "allmulti touches root, set allmulti failed." Signed-off-by: Peter Christensen --- drivers/net/macvlan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index b0e2865..c5fb9cf 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -458,8 +458,10 @@ static void macvlan_change_rx_flags(struct net_device *dev, int change) struct macvlan_dev *vlan = netdev_priv(dev); struct net_device *lowerdev = vlan->lowerdev; - if (change & IFF_ALLMULTI) - dev_set_allmulti(lowerdev, dev->flags & IFF_ALLMULTI ? 1 : -1); + if (dev->flags & IFF_UP) { + if (change & IFF_ALLMULTI) + dev_set_allmulti(lowerdev, dev->flags & IFF_ALLMULTI ? 1 : -1); + } } static void macvlan_set_mac_lists(struct net_device *dev)