From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754466AbdL1XXR (ORCPT ); Thu, 28 Dec 2017 18:23:17 -0500 Received: from mail-eopbgr20121.outbound.protection.outlook.com ([40.107.2.121]:45133 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753988AbdL1XXL (ORCPT ); Thu, 28 Dec 2017 18:23:11 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; From: Peter Rosin To: Greg Kroah-Hartman Cc: Hans de Goede , Peter Rosin , linux-kernel@vger.kernel.org Subject: [PATCH] mux: core: fix double get_device() Date: Fri, 29 Dec 2017 00:22:54 +0100 Message-Id: <20171228232255.4507-1-peda@axentia.se> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [85.226.244.23] X-ClientProxiedBy: HE1PR0401CA0045.eurprd04.prod.outlook.com (2603:10a6:3:19::13) To AM5PR0202MB2547.eurprd02.prod.outlook.com (2603:10a6:203:6d::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3540bc45-d1f8-47ef-8305-08d54e49f272 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4603075)(4627115)(201702281549075)(5600026)(4604075)(2017052603307)(7153060);SRVR:AM5PR0202MB2547; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;3:qyI5Vy0r0Zy4zmrbsg6xkzQKOUj+CaDULbLg0V/GI9RRFPOcSKHwQZ80EMx8ip39Eet/yCwBWrv5yLs3t05hXq3QEUCC6FyczSdHqAaTkpi+m0fb3VlFT4Zsht+whlo7O2ibG0uqPJP/MGq81+7+SEymvzPfatTjCWT0si+ciC0DgPjTS0apxFIZw0STEUVSFp+QanR/BQtforM4pojYW8cEwPf2voPGAZZKP8nT/K5w0GjikUvLtv85w7GJzCar;25:sgdeevwMvgZNCehYATO9tB70oWOgU4yDz7KgsPPunmaC8JXWWlC2ZS2zKdPW/jyA97Fx6xFGVUuxu6ecXMNR9lT4oNS57mtS1gVPJrzI0x0skrn98oV5q2+Mfm89X9XsUeozPmjBd5eTufLFUEsTJAHzWNdWYyB4g5z2KLGvVmI28WVb2KRiRizGsI7CkgxPDLGmMU7Hls4tHQ13uBnhmUb3uMGOj2OTqZAXBwfs202AiFz3lgikHvOPqviNK0iEBW92DQ3T09BlpDEcQHAQM6hmlx8fJA+aOai96KH88u2WsmPzTNKS6acx1Qm4XBLjdO7FWP5XHGKyzGo3W/v/v6LmwagpYthTzuRJew/TvkA=;31:POXC6JfvHhb8DjnqYrAbUatm3VNGVIzQnzZS50wGv/k5ARHjUEuZgvpLHMQDr9d7CiCD2Ho6gkkZxKsNdptDH1+4yJK/jrhHCOp7ZtRo9AJ0C5Ju4mFS3INys+r92n50RrWTpYFFy+kL7qAB5lyj89eGmTqMfhFQLleVoATxyTQDgmpiTzWlN4hSIUhOzZ7GHiGfBmh83YU3W0w/7gJk2nhgGgVhEDazIvTnRvoxWKc= X-MS-TrafficTypeDiagnostic: AM5PR0202MB2547: X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(93006095)(93001095)(10201501046)(3002001)(6041268)(20161123562045)(2016111802025)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(6043046)(201708071742011);SRVR:AM5PR0202MB2547;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:AM5PR0202MB2547; X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;4:u8SGcyBRGfEVyFq6g9tw5rJeBjqZ+3Mbj1Wr6s76e5cBp4KFsm8ozCVgkvQN1rVu2HFaYgYGTcHyerxxiHYkh5ln0E6z6OcsCobYMWRqO7X4Z9Lq+DiWiHmTZSamaMLznSNC9obnt+S5OUqxgdGEeGi6t+/v/IRHkCaYy0pU6od/ON4U6WAlvf1dq4wXrskqLRdaRxa+YgeAu5LCZbE5BuUpI2zLJAav0w697VBA4qqkuyCgQGZ4RkcdU/G43vCvix1aBtV+zosE7bdKW4NFZw== X-Forefront-PRVS: 05352A48BE X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(39830400003)(346002)(376002)(39380400002)(366004)(396003)(189003)(199004)(8936002)(50226002)(8676002)(16526018)(305945005)(1076002)(6916009)(3846002)(6116002)(478600001)(6512007)(6506007)(66066001)(316002)(5660300001)(386003)(47776003)(6666003)(6486002)(7736002)(54906003)(81156014)(16586007)(68736007)(59450400001)(53936002)(2906002)(81166006)(97736004)(74482002)(86362001)(50466002)(575784001)(48376002)(52116002)(105586002)(51416003)(25786009)(36756003)(4326008)(106356001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:AM5PR0202MB2547;H:orc.pedanet;FPR:;SPF:None;PTR:InfoNoRecords;MX:3;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM5PR0202MB2547;23:PzKLhc9v62v5DMcfHfv6H6Wn++v8yCRzEeyy0j6?= =?us-ascii?Q?DSkE9vCscy34iAONIsfnKhv6mxgWtjeYD1vpgrDMxDz8bxyM46Wm9JFbdy3I?= =?us-ascii?Q?d1gIgGDSe30asw6hq9ktjc2I6sryzIIgnnT1K9LBB+8/VJRRNFVUiy+CL5IJ?= =?us-ascii?Q?pyQbvMQ0glSc687nbpDG7rGK7mxM2FACgKPoXEhuDt9DlB00D5VBD39pWvFQ?= =?us-ascii?Q?CMZ2gxFndc+Wdgz1xQXI/IUW9InLSVvLoRL45zBMJuJSojuLrS2zT0XMxUQ8?= =?us-ascii?Q?aTfsM/Ux8+eDorRCtnPkU1RMHTHdX7MCjV6Zd26C0krDS1ImseMFaY99LmFU?= =?us-ascii?Q?8KRoCHfEP2l+J2dhbKzI8EQi50A7JdBjK9r9x8iiA3MTa/N029lwVUegVbJh?= =?us-ascii?Q?1VgAnKsH6TFih3T3vkjfzC8Gh1kjlLiDoM0q+1YxZhndbpIX3IxpRJFzEmCe?= =?us-ascii?Q?a+/B+GaBDYLV7FYdGr17Cwc+Y2jABF5InEgJ7+q8fd/Jr86GHci4viW/i5Hc?= =?us-ascii?Q?xK8aDIK/Tdxo+fS5954/ibknLJWi/l75qx2+I4RymCVc+M9XtkmX0cGsgrrQ?= =?us-ascii?Q?sZMhz842aOghv6TpVwh8EpS4VnxWxje6Qwk77P0AVNfEk4UENyjz+ZfdqM1i?= =?us-ascii?Q?3q4KqapwOwuddSH/e2sWpeb0sf7sCrbdi+Kvoxym0mKWq0Yg1kUT0PUK8FLJ?= =?us-ascii?Q?6uWnlKosKM0EhIli/RlFnYXUaV8zOkFEdEhB3IKU0i46gass/YvvgZw3Jgq6?= =?us-ascii?Q?o/+6A5YfbypOnhwpfSFbH3BthVX1/R5LD7YV3nY48pZnaz5IDFHnemtmAMGN?= =?us-ascii?Q?y4AlO0pGkrsWXKxdnawD+e+Baw/UEkwxLeS+piWbRsUUE8ilCmGQ1rEV2tQi?= =?us-ascii?Q?Qg0LKgJ66Goz6OuJWx+qas35DHXC086DPPUkA26fmRmtUkpGFqbTgGyzmWQz?= =?us-ascii?Q?stHMT1dy65AhbMZjQsDhNWV83T5QuVIsGLFqe0ZhjpLZijkX2IJFxG1Dypih?= =?us-ascii?Q?txuo0XdBgoH9uC+i5orkEGS6Pkvs/ep1PFcmizRMl+n3FXG6gSUC7isVmz1R?= =?us-ascii?Q?eEuEkctxviUTNNprjpepfKBZcx6PTwMG2AmdEsVlOGZr7NELeOyb+QUypabZ?= =?us-ascii?Q?7koP3bDDGNsfu5edTLNv6037hRFi8sv6cdHsdjK9kidO1te2uTqZalA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM5PR0202MB2547;6:ffgEbA6QhWogS6LpzO/KL/gMu4CYb9Iou5oZ1jW79VsD9bwzxDNUdcNCUYJ7O2W+6IiriAiFguqCTxKzAF1MobzkUDFsMmjPbIyOudNyqU0g35VPRqM+OdvZIjEfq2aI6D3wSXZ3wlEDTU4KiGjWq42LBmRbdB+WvLMqVldKy6NqUTFoom+DBIBSsLCUnP5SrnVl/i//91J2OS0e8Z458tPgNqfUZkLNjnYhPNXDhqu6x+Ogcx4j5EipUpCJD/xMbg3T9jGa6ZrldEkDsaEF4kNuHEUVLhIs0t1U3Db6vxlQLbd6ycmInPkw+yJ5Vwi3LrugUQlO5vqjEYGJUr3nhigQhHbF6O+g7u3VxaPw6jM=;5:0k56RSjUtItK2UFRVgzPTqBEXGDPUuxsGuqILGgM6a36fVAtKUSUm1wgwrarfLAuqjmBegNY83DswRcckusik/3N43XP2M18OnRLnc5DhWaB2WeMqW+GYhRnb2cQCpWG1je13uxYR8Q18s8mkzra5RIB9A/tY+llzI2HCHVPb9o=;24:UJAw6Xn+ypoabjU/TAD+Ra0/C/ZL53BRn6LFe2InzCvCpJTvUcXg6tcinULNyVKNRByRzaDZlkGF4ZdYCxnnjFs3feMvl9cCAcX7dxyhV/A=;7:LK7CdJZtSzz4Kkwyc8lDyPuoiwH30iG6iCnwPmheC0CBvIwSN6CzN5YnM6aXrQjTTPwMIYXU8oKLZIkM8AMSMsxgGXLLm/tqr3fuODvnMiQCMgTAeq95vGLhatZGOkxL6Nt96HvOZ2qSsBK2yuLzrS7kWkr9DrnlDiYcgPaT4p6iFRnWfLv0Qw71rBeRu7vAhuBKrUNuSYiuLhA/yyMtGWmZI/bgbMjF+dtwsq7gEaQr3iy3ccHznSeXQaLMMq8m SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Dec 2017 23:23:04.6994 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3540bc45-d1f8-47ef-8305-08d54e49f272 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4ee68585-03e1-4785-942a-df9c1871a234 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0202MB2547 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Hans de Goede class_find_device already does a get_device on the returned device. So the device returned by of_find_mux_chip_by_node is already referenced and we should not reference it again (and unref it on error). Signed-off-by: Hans de Goede Signed-off-by: Peter Rosin --- drivers/mux/core.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) Hi Greg, Here is a fix for 4.15, and it should perhaps also go to stable? It's been in -next for a couple of weeks w/o complaints. Cheers, Peter diff --git a/drivers/mux/core.c b/drivers/mux/core.c index 2260063b0ea8..6e5cf9d9cd99 100644 --- a/drivers/mux/core.c +++ b/drivers/mux/core.c @@ -413,6 +413,7 @@ static int of_dev_node_match(struct device *dev, const void *data) return dev->of_node == data; } +/* Note this function returns a reference to the mux_chip dev. */ static struct mux_chip *of_find_mux_chip_by_node(struct device_node *np) { struct device *dev; @@ -466,6 +467,7 @@ struct mux_control *mux_control_get(struct device *dev, const char *mux_name) (!args.args_count && (mux_chip->controllers > 1))) { dev_err(dev, "%pOF: wrong #mux-control-cells for %pOF\n", np, args.np); + put_device(&mux_chip->dev); return ERR_PTR(-EINVAL); } @@ -476,10 +478,10 @@ struct mux_control *mux_control_get(struct device *dev, const char *mux_name) if (controller >= mux_chip->controllers) { dev_err(dev, "%pOF: bad mux controller %u specified in %pOF\n", np, controller, args.np); + put_device(&mux_chip->dev); return ERR_PTR(-EINVAL); } - get_device(&mux_chip->dev); return &mux_chip->mux[controller]; } EXPORT_SYMBOL_GPL(mux_control_get); -- 2.11.0