From patchwork Wed Aug 30 17:46:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 807816 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="hOQXgedD"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xjCgF0QHRz9sQl for ; Thu, 31 Aug 2017 03:49:13 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751899AbdH3RtI (ORCPT ); Wed, 30 Aug 2017 13:49:08 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:35064 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751814AbdH3RtF (ORCPT ); Wed, 30 Aug 2017 13:49:05 -0400 Received: by mail-wm0-f67.google.com with SMTP id e204so2545063wma.2; Wed, 30 Aug 2017 10:49:05 -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=tE2g32dBz088/13vyk9sWYfoWE+ifObOsIHEJkNPdgQ=; b=hOQXgedDqNqvim+NI/qXKZw3OrSz0XllE3c2xzkAM6I/v9amgt5jGsKzfMRLNk951W TYvTHzOPWskqtOqb+BKTTzSUb/20r4dQdkGiUI+VM8XvHbjh1gOXtL9VyeNz9YEj36KQ n0g/HhA4d0Fd2VD6Ysk5Kb5NKwl8ri2efW9MLi7DA/2TVfjSJpUpbs4aOADcApgN6DmN t0iD14WWLyau8IKZ2nbBg52HtsweXR6jXrq1noSoNaWiL08dT7UC/vz5PsadnbnBwHli NOYY1b/c9bBLJLlDH3/DPe3qt6I3Xad9Wy8KVpNI5sFBbi3ULCC8zSF3dW6zMmB73dLm UMFA== 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=tE2g32dBz088/13vyk9sWYfoWE+ifObOsIHEJkNPdgQ=; b=CV3R3q32pAob7Lq0/uhfZ3s3FY0x/lKeZGgB6UGPyjcEptUFFvwOLFt2wTejj7VwgZ nnbK6UvB2IurbChUciwwrlFnUSRIjSoxCqBj26/AXIjcQQzCB+B65tuDfPU0txqaD86o SLdnnhn05LOoESro6/195qVfZfpcB2c6nSoJqNTinrg5KFV5/NndhFipknRjJy7mONDN +BVuK6QyEytQotyVb4ZKF5eQhfP91c39feIYVyzPZrzMiB8svS36zCguZYD16GV/rqf7 9A3IojE99xTY36BmeNEAqFNjvSVBZWwzr44vUShJhoK7NkO3JE1Bm5p3Y030Lni/DTtN 7kvg== X-Gm-Message-State: AHYfb5j0IjgibkxQ3REd1V4lIoU/pgxnlCDLVaDYSM245P8kJvANh2vR 4/aRCXxlrt40sA== X-Received: by 10.28.17.10 with SMTP id 10mr1653425wmr.74.1504115344507; Wed, 30 Aug 2017 10:49:04 -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 i75sm4578429wri.81.2017.08.30.10.49.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 30 Aug 2017 10:49:04 -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 5/5] net: mdio-mux: fix unbalanced put_device Date: Wed, 30 Aug 2017 19:46:51 +0200 Message-Id: <20170830174651.30325-6-clabbe.montjoie@gmail.com> X-Mailer: git-send-email 2.13.5 In-Reply-To: <20170830174651.30325-1-clabbe.montjoie@gmail.com> References: <20170830174651.30325-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 --- drivers/net/phy/mdio-mux.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/mdio-mux.c b/drivers/net/phy/mdio-mux.c index 9a889a529b9c..0b7d3d30ae97 100644 --- a/drivers/net/phy/mdio-mux.c +++ b/drivers/net/phy/mdio-mux.c @@ -117,6 +117,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); @@ -186,8 +187,7 @@ int mdio_mux_init(struct device *dev, 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;