From patchwork Sat Mar 23 23:24:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Oltean X-Patchwork-Id: 1062668 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="G/Q/0FYp"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44Rc7Z2zCrz9sSN for ; Sun, 24 Mar 2019 10:24:57 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727702AbfCWXYz (ORCPT ); Sat, 23 Mar 2019 19:24:55 -0400 Received: from mail-wm1-f65.google.com ([209.85.128.65]:38692 "EHLO mail-wm1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727443AbfCWXYy (ORCPT ); Sat, 23 Mar 2019 19:24:54 -0400 Received: by mail-wm1-f65.google.com with SMTP id a188so5424838wmf.3 for ; Sat, 23 Mar 2019 16:24:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=5F6Fz7WNP+ouRv6ujIBhUXOo/ZzUUWFZmJfooGCc3cI=; b=G/Q/0FYpsXNZ0jp39Lvz44+m//OyXADwv6LuEQ4bwTmMiGjdzCDnsI17gz8NmUAIN9 /GuXvkUO0tAALMywByDdkcFo9/m5opyRSCW+fsWgtlEmCvcWqKRPCrzfMf6zZ8orjDM1 2ewRLkEWKfkRm3uu4MQKHsd8S9U6u39nObrP9q9K/c3g3TWhC3EenS4DxGg7nKekvB4z 3eXtjbBmIxr2stmMU+8z5yUr+Wwlk/UXfjL3ziATdLd7gR7uB2PZFi/G3D2Mvs0alMmm RbAFeNj9dx2PNYrHPZjIiS33e4MGtViS3xRgtw4oZ14Xl2R+yHrAE7TMUoWXc0uBuCNg DzSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=5F6Fz7WNP+ouRv6ujIBhUXOo/ZzUUWFZmJfooGCc3cI=; b=Gb3ndrQlAZEG5ORQd1YAiXZEHBG097sdjSBceTRhZduao4zDoOTyquHw1ec7ZcAWuS tP3L2KVwyXKPi0n4OFJ3d+3NeFtnRpCsLQd8GfSsaz0OGi+r7RIao7cZ7v43bgahZfkW zo/xccM1T9WFwnUiuRlWrq2vet8Quf2j/+kwmLvvbnjZlrN/E1o4Tx2vTQogyJXLuYrd pqjuOoH38ay8gZNm7X98XxhhtXWY1c5cJqSI4qbW+iUvtrH7jayVGJ5AF3JWbKLKF3WB rKHG+w9EA3bN+v6pPuCVWp6a0FkbrkiEZKT4JG8IVz8s53m9mLqvZibXYj5zlYv4xK1u 76gA== X-Gm-Message-State: APjAAAW2kYML9Qg7D+HKle/llhHtfI5TZQVQJG9YMYm3c7buefvjjRbn j1B/E7qUAv6BtUqcBeSFFU0= X-Google-Smtp-Source: APXvYqwhNdM8oyRc83Bh5ENX0zkrulCEVF4JFaPuFVfKjnAV4qkfeKvFiEYxN09rkFAAusiwt+bB1g== X-Received: by 2002:a1c:9cd1:: with SMTP id f200mr6795759wme.91.1553383492925; Sat, 23 Mar 2019 16:24:52 -0700 (PDT) Received: from localhost.localdomain ([188.26.228.227]) by smtp.gmail.com with ESMTPSA id y192sm32221179wmc.6.2019.03.23.16.24.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 23 Mar 2019 16:24:52 -0700 (PDT) From: Vladimir Oltean To: davem@davemloft.net, f.fainelli@gmail.com, netdev@vger.kernel.org Cc: andrew@lunn.ch, vivien.didelot@gmail.com, Vladimir Oltean Subject: [net-next] net: dsa: Avoid null pointer when failing to connect to PHY Date: Sun, 24 Mar 2019 01:24:07 +0200 Message-Id: <20190323232407.15792-1-olteanv@gmail.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When phylink_of_phy_connect fails, dsa_slave_phy_setup tries to save the day by connecting to an alternative PHY, none other than a PHY on the switch's internal MDIO bus, at an address equal to the port's index. However this does not take into consideration the scenario when the switch that failed to probe an external PHY does not have an internal MDIO bus at all. Fixes: aab9c4067d23 ("net: dsa: Plug in PHYLINK support") Signed-off-by: Vladimir Oltean Reviewed-by: Florian Fainelli --- net/dsa/slave.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/net/dsa/slave.c b/net/dsa/slave.c index 093eef6f2599..6a8418dfa64f 100644 --- a/net/dsa/slave.c +++ b/net/dsa/slave.c @@ -1283,9 +1283,9 @@ static int dsa_slave_phy_setup(struct net_device *slave_dev) phy_flags = ds->ops->get_phy_flags(ds, dp->index); ret = phylink_of_phy_connect(dp->pl, port_dn, phy_flags); - if (ret == -ENODEV) { - /* We could not connect to a designated PHY or SFP, so use the - * switch internal MDIO bus instead + if (ret == -ENODEV && ds->slave_mii_bus) { + /* We could not connect to a designated PHY or SFP, so try to + * use the switch internal MDIO bus instead */ ret = dsa_slave_phy_connect(slave_dev, dp->index); if (ret) { @@ -1297,7 +1297,7 @@ static int dsa_slave_phy_setup(struct net_device *slave_dev) } } - return 0; + return ret; } static struct lock_class_key dsa_slave_netdev_xmit_lock_key;