From patchwork Tue Sep 8 15:23:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Greg Kroah-Hartman X-Patchwork-Id: 249369 Delivered-To: patch@linaro.org Received: by 2002:a92:5b9c:0:0:0:0:0 with SMTP id c28csp4840147ilg; Tue, 8 Sep 2020 12:34:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJygPEM2kCs6vDarH1R0vWspBicZy/4aaZ3is4vq2u0jlI2sXGbGdXYj/9Z/COZuhc6r4PZm X-Received: by 2002:a50:d98d:: with SMTP id w13mr621558edj.37.1599593654916; Tue, 08 Sep 2020 12:34:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599593654; cv=none; d=google.com; s=arc-20160816; b=rUlzlLq3GQORJOYvfbueYNrzX6J5H9Dh3QdV47FM5k8hoabiGqvSc/lCnrAYkiWhW/ ZHK0RVSHEdtGm9El2eEbYNDGoXCp7Bo5/3mM2jy0qzlVHKa9lzaVwpBPjYrsOmcjthCO dVJslalZWgPbSqu+mxOv5tRWFT4SpkhqGtXCAI0uIBxpLzEM938J4mDUlE/4KcXWwnEq CMSTuud+askGdMYra2qxYYS9IYbTll3CDaRm4Dd746rNvWLtm6CSrKfaI7j0D+gbmvko f4DXh3MYSHqSGhJOioGJ//12J9b6Z+uA4WO/lSRTTG9/6kuvY33Nu4BiP1vm4Rbz7DQK jJDw== 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=LmNmzRZTx3d091xT5OSWFDRzZZDzSi3IBaILWvQXt2I=; b=jKVzzryDsDAM6tP32g1DtACSXt5JaBVXiZbyoTIhpji74k8xYGV8ir64GZpB3lr4VA rBYmz2X7cg9SZCHKcoPdeuhsK9epDfufbjXi+OL41TJ0v8fBpqBu+E8lHPQkGICRBWXG r6XgbOkO6VBGFB/XYVMEBgGdlgjHAjwvHA3zfuxABph9jIul0MuUi6MQ9KOFOWaKDbb1 gDJbD6lzmbH9c+6tRlZms3GkoFWzhk+fSzFDPyVi8YZvSjdQA64KXUc1imMXee02Bg3e /cv5npOFUukbn03u8HZ2sS91BHGUzPdrAbyYcLIWOJxgMHpcwrrc6kxpNnEqa0XMvMCz YwAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Vlls4VxW; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id x2si6861ejy.245.2020.09.08.12.34.14; Tue, 08 Sep 2020 12:34:14 -0700 (PDT) Received-SPF: pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Vlls4VxW; spf=pass (google.com: domain of stable-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=stable-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731788AbgIHTeM (ORCPT + 15 others); Tue, 8 Sep 2020 15:34:12 -0400 Received: from mail.kernel.org ([198.145.29.99]:48752 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731018AbgIHP6F (ORCPT ); Tue, 8 Sep 2020 11:58:05 -0400 Received: from localhost (83-86-74-64.cable.dynamic.v4.ziggo.nl [83.86.74.64]) (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 709DA2405E; Tue, 8 Sep 2020 15:38:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1599579504; bh=4l/U46XanlA4DH8H4B0VrxArJ8T6qxn2PzfMC1WuoQw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Vlls4VxWhXKYqRl13CjuNMVARoU4pImjO5smgp7704RYI10v05AHoYGzJRtB1J7m6 SuilgCUL8Xpmk046/KqUj116UzEcmn9xxKH1YlnZTcYpX7WDWhR/X0CBx5LeLWZ7LX 7c1shIL8fKsuNQ411h24nqr1Cx1KYx/FhSpL3OJE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Murali Karicheri , "David S. Miller" , Sasha Levin Subject: [PATCH 5.8 078/186] net: ethernet: ti: cpsw_new: fix error handling in cpsw_ndo_vlan_rx_kill_vid() Date: Tue, 8 Sep 2020 17:23:40 +0200 Message-Id: <20200908152245.429151911@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200908152241.646390211@linuxfoundation.org> References: <20200908152241.646390211@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Sender: stable-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: stable@vger.kernel.org From: Murali Karicheri [ Upstream commit af8ea111134624855710a0ef5543b871d49b0162 ] This patch fixes a bunch of issues in cpsw_ndo_vlan_rx_kill_vid() - pm_runtime_get_sync() returns non zero value. This results in non zero value return to caller which will be interpreted as error. So overwrite ret with zero. - If VID matches with port VLAN VID, then set error code. - Currently when VLAN interface is deleted, all of the VLAN mc addresses are removed from ALE table, however the return values from ale function calls are not checked. These functions can return error code -ENOENT. But that shouldn't happen in a normal case. So add error print to catch the situations so that these can be investigated and addressed. return zero in these cases as these are not real error case, but only serve to catch ALE table update related issues and help address the same in the driver. Fixes: ed3525eda4c4 ("net: ethernet: ti: introduce cpsw switchdev based driver part 1 - dual-emac") Signed-off-by: Murali Karicheri Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/ti/cpsw_new.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) -- 2.25.1 diff --git a/drivers/net/ethernet/ti/cpsw_new.c b/drivers/net/ethernet/ti/cpsw_new.c index 8d0a2bc7128d4..8ed78577cdedf 100644 --- a/drivers/net/ethernet/ti/cpsw_new.c +++ b/drivers/net/ethernet/ti/cpsw_new.c @@ -1032,19 +1032,34 @@ static int cpsw_ndo_vlan_rx_kill_vid(struct net_device *ndev, return ret; } + /* reset the return code as pm_runtime_get_sync() can return + * non zero values as well. + */ + ret = 0; for (i = 0; i < cpsw->data.slaves; i++) { if (cpsw->slaves[i].ndev && - vid == cpsw->slaves[i].port_vlan) + vid == cpsw->slaves[i].port_vlan) { + ret = -EINVAL; goto err; + } } dev_dbg(priv->dev, "removing vlanid %d from vlan filter\n", vid); - cpsw_ale_del_vlan(cpsw->ale, vid, 0); - cpsw_ale_del_ucast(cpsw->ale, priv->mac_addr, - HOST_PORT_NUM, ALE_VLAN, vid); - cpsw_ale_del_mcast(cpsw->ale, priv->ndev->broadcast, - 0, ALE_VLAN, vid); + ret = cpsw_ale_del_vlan(cpsw->ale, vid, 0); + if (ret) + dev_err(priv->dev, "cpsw_ale_del_vlan() failed: ret %d\n", ret); + ret = cpsw_ale_del_ucast(cpsw->ale, priv->mac_addr, + HOST_PORT_NUM, ALE_VLAN, vid); + if (ret) + dev_err(priv->dev, "cpsw_ale_del_ucast() failed: ret %d\n", + ret); + ret = cpsw_ale_del_mcast(cpsw->ale, priv->ndev->broadcast, + 0, ALE_VLAN, vid); + if (ret) + dev_err(priv->dev, "cpsw_ale_del_mcast failed. ret %d\n", + ret); cpsw_ale_flush_multicast(cpsw->ale, ALE_PORT_HOST, vid); + ret = 0; err: pm_runtime_put(cpsw->dev); return ret;