Message ID | 20231019101017.425284-2-herve.codina@bootlin.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2010:b0:403:3b70:6f57 with SMTP id fe16csp276723vqb; Thu, 19 Oct 2023 03:10:58 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHr9cZwSruRPBgiovCzPwIoB01Udg+TE6AjuQjbBf7MBmT/VaZzSpLJ5zbN5nBEOitKBxbG X-Received: by 2002:a05:6870:5b94:b0:1e9:9aa6:eeca with SMTP id em20-20020a0568705b9400b001e99aa6eecamr1955328oab.1.1697710258123; Thu, 19 Oct 2023 03:10:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697710258; cv=none; d=google.com; s=arc-20160816; b=qpJWGjy4IT0jrDGes6op9RAAuPdkXWuH9dzKeU/ZdXm7Lr5aE6diKPnYjj+x8E1kQ9 hMBSBejqjfCTa9hr6WOYO+zrPAp1hEYa207dVa+yZkt2r6nve7jOin8RsZUcdk7mh5rn VPHHYq6OCe/mtndZFCTz+AaLLujyMjCojJ5pLDyAahjnrH7b2uERVAcs3wNsxf/FBrSw XB+JaXmcMn31ciRsYe6TBBUfxkJw54ku+QbnZZ+SEZRlL/1MdkXrN/yPWUohlor7j0FS HDeMF953Cm3NKvZCes2PtugKRmSW+RXO6fDbkZgxnzUJhC+PTZjefxv/AnfWeste/EKC 4VAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=V00s/mVGgaCRB68RBbwNCsl4DRqLwcfW3IIuO/Z+Vmg=; fh=i3WS+6AgTKP10/eUP7j46CA4B/XR5qlEIT9hV1ltHe4=; b=dByewHpYFiFdauEtd+Fru7DQiwqQVF5iqyirfIVUXh7Hn61EmaMuD3XLnF0SpEPu7a wZDwbYS99nNqzDEaTGi5YKCszjIfXQPgjtgVVGQon1ZS6cYO9/7RkpZ94ircYxUwdHNp 2zvnvsR13qTpiGwLaVoFbTqXndSjZVhg4mjZPirlIhTP0f66NNOLl0xddUq69LN3duxj wxKEP1iUQlnUVEpgKOFNgnrJhpCGS0Lmn5/vvcQU4eHKRWMq+LF0j81MdFbfGNe5AbrG qh+6HLY8paPvfBS7UE6h2d/GmAL6uHnWAGBKWYq1x3GG/RcrRzslh9ovp5vjXp4ATu7P vs1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=RadoXgs4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id ck28-20020a056a02091c00b005aa833a5337si4161453pgb.600.2023.10.19.03.10.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Oct 2023 03:10:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@bootlin.com header.s=gm1 header.b=RadoXgs4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=bootlin.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 0A297817C8AE; Thu, 19 Oct 2023 03:10:54 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1345241AbjJSKKa (ORCPT <rfc822;zwp10758@gmail.com> + 24 others); Thu, 19 Oct 2023 06:10:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47060 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1345212AbjJSKK0 (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Thu, 19 Oct 2023 06:10:26 -0400 Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::226]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF415123; Thu, 19 Oct 2023 03:10:24 -0700 (PDT) Received: by mail.gandi.net (Postfix) with ESMTPA id EACCAC000C; Thu, 19 Oct 2023 10:10:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bootlin.com; s=gm1; t=1697710223; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=V00s/mVGgaCRB68RBbwNCsl4DRqLwcfW3IIuO/Z+Vmg=; b=RadoXgs4AZdQ45Rq8OCGmJcQ40bBQg7gztQWIZIhduC3qK/ToTZ5eYQHiS09J8F1qNeP8F tv4Sxge0hkziPnEY6JYWltoJOytUHgzt3MJKXELQJ6SfqfdIWwLEUfUZIlaFczhKOZz/5I Wum13MlhF6qQYoNFgxNtILhGi04ePLDGiaIAbqappzd6pZzfeayBLgNSZrfxfCZPN+d46u O5dMJxlGfCOPGdcJ10KrtOu8ALmxreJsvRbHJ+kPQ55C4RBsiVS/3EMENw/dL0xu8rABod usCkvcpv3phCB9lQfoXP4gQXu8tOcuci9emdJ7kaVArJqQ5GK7a8Jl8nK9XYQg== From: Herve Codina <herve.codina@bootlin.com> To: Wolfram Sang <wsa+renesas@sang-engineering.com>, Peter Rosin <peda@axentia.se>, Stephen Warren <swarren@nvidia.com>, Rob Herring <robh@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jonathan Cameron <jic23@kernel.org> Cc: Wolfram Sang <wsa@kernel.org>, linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Allan Nielsen <allan.nielsen@microchip.com>, Horatiu Vultur <horatiu.vultur@microchip.com>, Steen Hegelund <steen.hegelund@microchip.com>, Thomas Petazzoni <thomas.petazzoni@bootlin.com>, Herve Codina <herve.codina@bootlin.com> Subject: [PATCH v2 1/3] i2c: muxes: i2c-mux-pinctrl: Use of_get_i2c_adapter_by_node() Date: Thu, 19 Oct 2023 12:10:14 +0200 Message-ID: <20231019101017.425284-2-herve.codina@bootlin.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231019101017.425284-1-herve.codina@bootlin.com> References: <20231019101017.425284-1-herve.codina@bootlin.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-GND-Sasl: herve.codina@bootlin.com X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Thu, 19 Oct 2023 03:10:54 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780178231163977659 X-GMAIL-MSGID: 1780178231163977659 |
Series |
Fix i2c mux module refcount issues
|
|
Commit Message
Herve Codina
Oct. 19, 2023, 10:10 a.m. UTC
i2c-mux-pinctrl uses the pair of_find_i2c_adapter_by_node() / i2c_put_adapter(). These pair alone is not correct to properly lock the I2C parent adapter. Indeed, i2c_put_adapter() decrements the module refcount while of_find_i2c_adapter_by_node() does not increment it. This leads to an underflow of the parent module refcount. Use the dedicated function, of_get_i2c_adapter_by_node(), to handle correctly the module refcount. Fixes: c4aee3e1b0de ("i2c: mux: pinctrl: remove platform_data") Signed-off-by: Herve Codina <herve.codina@bootlin.com> Acked-by: Peter Rosin <peda@axentia.se> --- drivers/i2c/muxes/i2c-mux-pinctrl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Comments
On Thu, Oct 19, 2023 at 12:10:14PM +0200, Herve Codina wrote: > i2c-mux-pinctrl uses the pair of_find_i2c_adapter_by_node() / > i2c_put_adapter(). These pair alone is not correct to properly lock the > I2C parent adapter. > > Indeed, i2c_put_adapter() decrements the module refcount while > of_find_i2c_adapter_by_node() does not increment it. This leads to an > underflow of the parent module refcount. > > Use the dedicated function, of_get_i2c_adapter_by_node(), to handle > correctly the module refcount. > > Fixes: c4aee3e1b0de ("i2c: mux: pinctrl: remove platform_data") > Signed-off-by: Herve Codina <herve.codina@bootlin.com> > Acked-by: Peter Rosin <peda@axentia.se> > --- > drivers/i2c/muxes/i2c-mux-pinctrl.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Hi, This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him a patch that has triggered this response. He used to manually respond to these common problems, but in order to save his sanity (he kept writing the same thing over and over, yet to different people), I was created. Hopefully you will not take offence and will fix the problem in your patch and resubmit it so that it can be accepted into the Linux kernel tree. You are receiving this message because of the following common error(s) as indicated below: - You have marked a patch with a "Fixes:" tag for a commit that is in an older released kernel, yet you do not have a cc: stable line in the signed-off-by area at all, which means that the patch will not be applied to any older kernel releases. To properly fix this, please follow the documented rules in the Documentation/process/stable-kernel-rules.rst file for how to resolve this. If you wish to discuss this problem further, or you have questions about how to resolve this issue, please feel free to respond to this email and Greg will reply once he has dug out from the pending patches received from other developers. thanks, greg k-h's patch email bot
On Thu, 19 Oct 2023 12:10:14 +0200 Herve Codina <herve.codina@bootlin.com> wrote: > i2c-mux-pinctrl uses the pair of_find_i2c_adapter_by_node() / > i2c_put_adapter(). These pair alone is not correct to properly lock the > I2C parent adapter. > > Indeed, i2c_put_adapter() decrements the module refcount while > of_find_i2c_adapter_by_node() does not increment it. This leads to an > underflow of the parent module refcount. > > Use the dedicated function, of_get_i2c_adapter_by_node(), to handle > correctly the module refcount. > > Fixes: c4aee3e1b0de ("i2c: mux: pinctrl: remove platform_data") > Signed-off-by: Herve Codina <herve.codina@bootlin.com> > Acked-by: Peter Rosin <peda@axentia.se> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > drivers/i2c/muxes/i2c-mux-pinctrl.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/i2c/muxes/i2c-mux-pinctrl.c b/drivers/i2c/muxes/i2c-mux-pinctrl.c > index 18236b9fa14a..6ebca7bfd8a2 100644 > --- a/drivers/i2c/muxes/i2c-mux-pinctrl.c > +++ b/drivers/i2c/muxes/i2c-mux-pinctrl.c > @@ -62,7 +62,7 @@ static struct i2c_adapter *i2c_mux_pinctrl_parent_adapter(struct device *dev) > dev_err(dev, "Cannot parse i2c-parent\n"); > return ERR_PTR(-ENODEV); > } > - parent = of_find_i2c_adapter_by_node(parent_np); > + parent = of_get_i2c_adapter_by_node(parent_np); > of_node_put(parent_np); > if (!parent) > return ERR_PTR(-EPROBE_DEFER);
diff --git a/drivers/i2c/muxes/i2c-mux-pinctrl.c b/drivers/i2c/muxes/i2c-mux-pinctrl.c index 18236b9fa14a..6ebca7bfd8a2 100644 --- a/drivers/i2c/muxes/i2c-mux-pinctrl.c +++ b/drivers/i2c/muxes/i2c-mux-pinctrl.c @@ -62,7 +62,7 @@ static struct i2c_adapter *i2c_mux_pinctrl_parent_adapter(struct device *dev) dev_err(dev, "Cannot parse i2c-parent\n"); return ERR_PTR(-ENODEV); } - parent = of_find_i2c_adapter_by_node(parent_np); + parent = of_get_i2c_adapter_by_node(parent_np); of_node_put(parent_np); if (!parent) return ERR_PTR(-EPROBE_DEFER);