From patchwork Fri Sep 1 11:56:04 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 808664 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="l2nyDb/J"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xkHpT4tMQz9sRV for ; Fri, 1 Sep 2017 21:59:13 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751918AbdIAL7B (ORCPT ); Fri, 1 Sep 2017 07:59:01 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:35252 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751973AbdIAL6T (ORCPT ); Fri, 1 Sep 2017 07:58:19 -0400 Received: by mail-wr0-f195.google.com with SMTP id a47so3578wra.2; Fri, 01 Sep 2017 04:58:18 -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:in-reply-to:references; bh=8VJWXzlTgtoWB6G6ZFoyXEF+RflzUmXRwen/GWujV5U=; b=l2nyDb/JX2i508wSce/C3BbjjE+TvKaZ7orcyOvJfEv0qHfMUBrCaQhp86LEds1c+3 ZyTKpnIjj0JQaU6RiiCIO4fyXzUM87KEmeb2jwUp7K9RdI+V5z4VUHo7zi4BMhCAplPo r6GPMvnIXZjaNv+5c8p/9n8wKU633lRgMccz3Kfbq2pt7BsrOFgm52EWl2pyM1QcqiWc YAOJOEYYLjAMn76h/U7TYaI8UEqiXh24jdPVhs9Fq2yrmEGlsSGk9O7QrpzGyPeYQiTV k1O4fmFwLQqrOwYQjeeLFgae8KQXBAxwY/EKMfT6Unk86kGTrAEu5MpfQASmdbQewgg8 KeRA== 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:in-reply-to :references; bh=8VJWXzlTgtoWB6G6ZFoyXEF+RflzUmXRwen/GWujV5U=; b=OtWwrdzpjE0jBD96wUOJIg84jSd7itwsyYhxvgNuQFrHqazxZbR8brycejI9TncF13 wsOBTcU4NchFE7/aJKVehf5hWKYpBO0QDMMoep3TIo2DtEraivfdC4KxUX0mJEvChjCZ CqiP1535IlR4F5gfcppLZAzQtuKeXdiflnLS9DLax525oDyHE1uYUvBrMgU3CkK3Zv7f 2MrNj3kpWJKHpVxAtWSeTBfX2dHIFqSu0F5IbgQXulfLDIe/SevsINR3K/MvoM8SNGJE HRLjmfpEibmoM+GMBzw4mH8L3U4Fg3TrLYEioKM8h5rA+2KTZ5mHqFLqgGBJlacqZkie ClNw== X-Gm-Message-State: AHPjjUgHAN3ToqpQTmotRm9O3K6T7/8j9FpQDlgJmKBenEV3raZ3N7uZ BSg8urN6LxuvDA== X-Google-Smtp-Source: ADKCNb6PmpEqKBRi/p+cj/PStVFp1CuRgmMkNTl0+S88kV7WBWC3If9vNHMLIvN8TjGUunkvWQd4vw== X-Received: by 10.223.137.17 with SMTP id s17mr1090541wrs.285.1504267097982; Fri, 01 Sep 2017 04:58:17 -0700 (PDT) Received: from Red.local (LFbn1-1-65-78.w90-118.abo.wanadoo.fr. [90.118.156.78]) by smtp.googlemail.com with ESMTPSA id p80sm3292wmf.13.2017.09.01.04.58.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 01 Sep 2017 04:58:17 -0700 (PDT) From: Corentin Labbe To: andrew@lunn.ch, f.fainelli@gmail.com Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Corentin Labbe Subject: [PATCH v2 5/5] net: mdio-mux: fix unbalanced put_device Date: Fri, 1 Sep 2017 13:56:04 +0200 Message-Id: <20170901115604.27513-6-clabbe.montjoie@gmail.com> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170901115604.27513-1-clabbe.montjoie@gmail.com> References: <20170901115604.27513-1-clabbe.montjoie@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org mdio_mux_uninit() call put_device (unconditionally) because of of_mdio_find_bus() in mdio_mux_init. But of_mdio_find_bus is only called if mux_bus is empty. If mux_bus is set, mdio_mux_uninit will print a "refcount_t: underflow" trace. This patch add a get_device in the other branch of "if (mux_bus)". Signed-off-by: Corentin Labbe Reviewed-by: Andrew Lunn --- drivers/net/phy/mdio-mux.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/net/phy/mdio-mux.c b/drivers/net/phy/mdio-mux.c index 282828551bdd..6f75e9f27fed 100644 --- a/drivers/net/phy/mdio-mux.c +++ b/drivers/net/phy/mdio-mux.c @@ -116,6 +116,7 @@ int mdio_mux_init(struct device *dev, } else { parent_bus_node = NULL; parent_bus = mux_bus; + get_device(&parent_bus->dev); } pb = devm_kzalloc(dev, sizeof(*pb), GFP_KERNEL); @@ -184,9 +185,7 @@ int mdio_mux_init(struct device *dev, dev_err(dev, "Error: No acceptable child buses found\n"); devm_kfree(dev, pb); err_pb_kz: - /* balance the reference of_mdio_find_bus() took */ - if (!mux_bus) - put_device(&parent_bus->dev); + put_device(&parent_bus->dev); err_parent_bus: of_node_put(parent_bus_node); return ret_val; @@ -204,7 +203,6 @@ void mdio_mux_uninit(void *mux_handle) cb = cb->next; } - /* balance the reference of_mdio_find_bus() in mdio_mux_init() took */ put_device(&pb->mii_bus->dev); } EXPORT_SYMBOL_GPL(mdio_mux_uninit);