From patchwork Thu Nov 24 18:21:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Johan Hovold X-Patchwork-Id: 698973 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 3tPnfM2QWrz9t0q for ; Fri, 25 Nov 2016 05:24:11 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LmH+ywOt"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935705AbcKXSWu (ORCPT ); Thu, 24 Nov 2016 13:22:50 -0500 Received: from mail-lf0-f66.google.com ([209.85.215.66]:34288 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934360AbcKXSWs (ORCPT ); Thu, 24 Nov 2016 13:22:48 -0500 Received: by mail-lf0-f66.google.com with SMTP id o141so2286884lff.1; Thu, 24 Nov 2016 10:22:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=ij9sBosJqBiQRIC6qSEpkahjy8B8mB0blnACWEkX+pg=; b=LmH+ywOtJf4nTxY+B7lQQTu01qAdiw8E9DStBDdsLtY5ZDV438NJc4e0HHOicgZib0 38jG99xS6ZV2yj5jXKJX437eiNLhYFUpkLn+YciHVMQwOrTjYyt9aGFY3sV1orliRKyi np8dKJ4wPtFwBNFYcxWmKl/Mr2f94Tmg1NjOPTkKLM1TRVLxMkUHoGEsRquFnD9kbrif lx+Wl1PjWWrwZedyiDeQBh83Rsxhhgm96glQvP2SXcfJSVcuMGOgnqDzpFUNppigcjVC kuANYaqaQF+MGpFhllMHZIpLzfBRrBWoLAFytu6nTT70TlTABWL2Ob+fCcwZy1c8ggEy rxag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=ij9sBosJqBiQRIC6qSEpkahjy8B8mB0blnACWEkX+pg=; b=UxndQdeV2ZRYmBnvygZOxc0Zip0kiAIt/H8Isrzg9X1bfpgOUsSU6dNxDKDP59IjMI TOyjYKML/jQU4/sAycQqymnQ6EXdCElYvaLG7IpUJ0oXxEcOgfejfe64Y7bQzZhGmdRC GakzjWyn5BMjPMGzD94zMnf1kQVTJp9j8hxG1HbTJyJi4TvBLMfTNKJv3VoCaF+1xoWv 0aKRJaKRE8J0kneLiInmXqcb8AYrqTSUvMBwAy81cuSjDecUvwc6jg7FPY21Wi7A9woU WV2B/xbWq2nzMvh1TSkh94/tmbzV/drKYYWfmRIbv9VxSXnHQcYQbThOUGVJOfsdBW6J RqKg== X-Gm-Message-State: AKaTC01olOXLn0rKJVoWaK0OTffWxW23S6zRFELLZl7YUPk8X/OlduFmdzd7BFywaYRiNg== X-Received: by 10.25.195.195 with SMTP id t186mr1329971lff.96.1480011766446; Thu, 24 Nov 2016 10:22:46 -0800 (PST) Received: from xi.terra (c-04aadb54.07-184-6d6c6d4.cust.bredbandsbolaget.se. [84.219.170.4]) by smtp.gmail.com with ESMTPSA id u12sm8372610lja.4.2016.11.24.10.22.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Nov 2016 10:22:45 -0800 (PST) Received: from johan by xi.terra with local (Exim 4.87) (envelope-from ) id 1c9yfV-0003TR-Nr; Thu, 24 Nov 2016 19:22:45 +0100 From: Johan Hovold To: "David S. Miller" Cc: Florian Fainelli , Madalin Bucur , Timur Tabi , Andrew Lunn , Vivien Didelot , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Johan Hovold Subject: [PATCH net v2 1/5] net: dsa: fix fixed-link-phy device leaks Date: Thu, 24 Nov 2016 19:21:27 +0100 Message-Id: <1480011691-13278-2-git-send-email-johan@kernel.org> X-Mailer: git-send-email 2.7.3 In-Reply-To: <1480011691-13278-1-git-send-email-johan@kernel.org> References: <1480011691-13278-1-git-send-email-johan@kernel.org> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Make sure to drop the reference taken by of_phy_find_device() when registering and deregistering the fixed-link PHY-device. Fixes: 39b0c705195e ("net: dsa: Allow configuration of CPU & DSA port speeds/duplex") Signed-off-by: Johan Hovold --- net/dsa/dsa.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c index a6902c1e2f28..cb0091b99592 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c @@ -233,6 +233,8 @@ int dsa_cpu_dsa_setup(struct dsa_switch *ds, struct device *dev, genphy_read_status(phydev); if (ds->ops->adjust_link) ds->ops->adjust_link(ds, port, phydev); + + put_device(&phydev->mdio.dev); } return 0; @@ -509,8 +511,9 @@ void dsa_cpu_dsa_destroy(struct device_node *port_dn) if (of_phy_is_fixed_link(port_dn)) { phydev = of_phy_find_device(port_dn); if (phydev) { - phy_device_free(phydev); fixed_phy_unregister(phydev); + put_device(&phydev->mdio.dev); + phy_device_free(phydev); } } }