Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp6025242ybc; Wed, 27 Nov 2019 13:37:03 -0800 (PST) X-Google-Smtp-Source: APXvYqx7B/WZr0hWLiMQyHmQX0QDvVMdiXGJCjyYNFVae5Y0UKb+UUlBoZs18ANXuH685EkZB9aS X-Received: by 2002:aa7:ca4a:: with SMTP id j10mr34655243edt.54.1574890623726; Wed, 27 Nov 2019 13:37:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574890623; cv=none; d=google.com; s=arc-20160816; b=BYStiR/CK1yN2yXGvCcvnRVjbKSzusdf7/fMhoc8wseysAmIS1OX7KW9RuHO7ia+bd UP1AIizYDcoQrvHSH34NmZOd/6gkGxpcVNpoozDVXwGQN6QQCW+5cANdyAt1LkduFaDK KjnALm8HcOe3h3HtNWkha/5aWj6LYzvll70oybEruSsYhY4UxoDpnTyQLG72u+++t9MX 3sFOsOVd9flmiTiwl16jDqR4PGfOpVHgN/zvbmpQxaF8Hgd/gMkjEVO+1EUAoArudVbY s+6gtetCisDqgtMKPHGkCnXfwShGZ0BBmFglrhA6Qxkt0OE2lP6Lglwq6BMS7CIM5oWP nPHg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hd6GgBIHrYtHJjv3qdiOd00NOeiqLoqPVzCH/K2A4Rc=; b=Z0gHgCSziqgaQSDNDl6SmiS7DplGkTeK+6Vzk2yxymoeG3KhQN3czizAQ2NVROWEM/ WhjslzPOSIiqz3sW+7XIgwMd8x878JUh50vIMCaHLdLSOOUTeYM6AymPgQMWglW4qVfM lQJ6AOi6ygu8G2NmHpmYYPo7aRUrX3j1l7uY3J9lPWXhB68M5OJZceLlKzD5k+khNw4k fiH98MuX3VCBF/tHmeB8h6NT5qRT1zyM0HgAzKw0x7q5uCOcq+DpqP/P2r662/K/Vo5d fht36mw6tQtX55tj0lsW6C4BFA8lVFySxwekJoo+8M63g4nMS3mbCWfq47pcCcpcu8xF P89A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UlwNsnbi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 27si12439837eji.207.2019.11.27.13.36.39; Wed, 27 Nov 2019 13:37:03 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=UlwNsnbi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730012AbfK0UvD (ORCPT + 99 others); Wed, 27 Nov 2019 15:51:03 -0500 Received: from mail.kernel.org ([198.145.29.99]:37404 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729388AbfK0UvA (ORCPT ); Wed, 27 Nov 2019 15:51:00 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3DF3D2195D; Wed, 27 Nov 2019 20:50:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574887859; bh=iEFg2OgAmaWRd0RDYXvJ8JsJ2QGa+NeD4y94Xt9Om80=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UlwNsnbiR9OHT2LnR6jsOP/jUHPLE7JSADo67vbJT7L1WUxCPDNAuSeKKc7lbXgV7 bHIatz9H4UJOTTp4lUBk4j8jSEGw+SSTM5/DKXV2L8gWupUwF8e+NQQ0I68vSf46sh 42F6V1tDP5Pm7Pn0Hu43x1PuLmT1mYPKeraWJfL8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Radu Rendec , Patrick Talbert , Sabrina Dubroca , "David S. Miller" , Sasha Levin Subject: [PATCH 4.14 095/211] macsec: update operstate when lower device changes Date: Wed, 27 Nov 2019 21:30:28 +0100 Message-Id: <20191127203102.680589559@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191127203049.431810767@linuxfoundation.org> References: <20191127203049.431810767@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sabrina Dubroca [ Upstream commit e6ac075882b2afcdf2d5ab328ce4ab42a1eb9593 ] Like all other virtual devices (macvlan, vlan), the operstate of a macsec device should match the state of its lower device. This is done by calling netif_stacked_transfer_operstate from its netdevice notifier. We also need to call netif_stacked_transfer_operstate when a new macsec device is created, so that its operstate is set properly. This is only relevant when we try to bring the device up directly when we create it. Radu Rendec proposed a similar patch, inspired from the 802.1q driver, that included changing the administrative state of the macsec device, instead of just the operstate. This version is similar to what the macvlan driver does, and updates only the operstate. Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver") Reported-by: Radu Rendec Reported-by: Patrick Talbert Signed-off-by: Sabrina Dubroca Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/macsec.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c index 9bcb7c3e879f3..40e8f11f20cbf 100644 --- a/drivers/net/macsec.c +++ b/drivers/net/macsec.c @@ -3273,6 +3273,9 @@ static int macsec_newlink(struct net *net, struct net_device *dev, if (err < 0) goto del_dev; + netif_stacked_transfer_operstate(real_dev, dev); + linkwatch_fire_event(dev); + macsec_generation++; return 0; @@ -3444,6 +3447,20 @@ static int macsec_notify(struct notifier_block *this, unsigned long event, return NOTIFY_DONE; switch (event) { + case NETDEV_DOWN: + case NETDEV_UP: + case NETDEV_CHANGE: { + struct macsec_dev *m, *n; + struct macsec_rxh_data *rxd; + + rxd = macsec_data_rtnl(real_dev); + list_for_each_entry_safe(m, n, &rxd->secys, secys) { + struct net_device *dev = m->secy.netdev; + + netif_stacked_transfer_operstate(real_dev, dev); + } + break; + } case NETDEV_UNREGISTER: { struct macsec_dev *m, *n; struct macsec_rxh_data *rxd; -- 2.20.1