From nobody Sun May 24 19:34:21 2026 Received: from cstnet.cn (smtp21.cstnet.cn [159.226.251.21]) (using TLSv1.2 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43DD21B3925; Sat, 23 May 2026 08:08:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.226.251.21 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779523688; cv=none; b=tT2UuBEiI+tB+HiNW+NcSgo0C4wZ8QPm/B9Jn2n4vKRw7DZ2CGtjK4gPOuOGRzm7MSzsl4gLll8rSjE9gN46iaWbWKZ6Teb9lumMoWDEdqW2zuT0RgCx2eHod/y/zfcz8PFFXIydDzjClqK0FEefvJ5awiwgdEKHQNYh68lBaDQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779523688; c=relaxed/simple; bh=LyawpjhZl9GCH5zY6H4UOZ0mwLlqk0SGr+1OYbajx+M=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=d0ABxMBT5uRDVfFZxxLbVUr/Bzx4Ae5rhYFb3PF50osPu0RyCALqVxnIvgjmIViCq/FOUrEEzOziJcKSCaTlkvGc/ga8O8qNhbFcadJDQooKhP1UF4WijK92oarH9idWQzi+zXUiu36nqxFTUPhE7EbT/P49+OvlzNcYULF8MYs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn; spf=pass smtp.mailfrom=iscas.ac.cn; arc=none smtp.client-ip=159.226.251.21 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=iscas.ac.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=iscas.ac.cn Received: from dfae2b116770.home.arpa (unknown [36.110.52.2]) by APP-01 (Coremail) with SMTP id qwCowABH7GdhYBFqB7FDEQ--.3178S2; Sat, 23 May 2026 16:08:01 +0800 (CST) From: Wentao Liang To: linus.walleij@linaro.org Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Wentao Liang , stable@vger.kernel.org Subject: [PATCH] pinctrl: pinconf-generic: fix of_node reference count leak in dt_node_to_map_pinmux Date: Sat, 23 May 2026 08:07:58 +0000 Message-Id: <20260523080758.1375830-1-vulab@iscas.ac.cn> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qwCowABH7GdhYBFqB7FDEQ--.3178S2 X-Coremail-Antispam: 1UD129KBjvdXoW7JF4DJF4rWr45CF18ur43Awb_yoWkWwbEkF WrWry7JryUGa93WrnFgw1xZFyvka1UWr1ktr4vqa43C342va1xt34rWF98Z348WrWrWFZ8 Ga45Zry8tryUXjkaLaAFLSUrUUUUjb8apTn2vfkv8UJUUUU8Yxn0WfASr-VFAUDa7-sFnT 9fnUUIcSsGvfJTRUUUb48FF20E14v26r1j6r4UM7CY07I20VC2zVCF04k26cxKx2IYs7xG 6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rwA2F7IY1VAKz4vEj48ve4kI8w A2z4x0Y4vE2Ix0cI8IcVAFwI0_Gr0_Xr1l84ACjcxK6xIIjxv20xvEc7CjxVAFwI0_Gr0_ Cr1l84ACjcxK6I8E87Iv67AKxVWxJr0_GcWl84ACjcxK6I8E87Iv6xkF7I0E14v26F4UJV W0owAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC0VAKzVAqx4xG6I80ewAv7VC0 I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Jr0_Gr1lOx8S6xCaFVCjc4AY6r1j6r 4UM4x0Y48IcxkI7VAKI48JM4x0x7Aq67IIx4CEVc8vx2IErcIFxwCY1x0262kKe7AKxVWU AVWUtwCF04k20xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14 v26r1j6r18MI8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_JF0_Jw1lIxkG c2Ij64vIr41lIxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI 0_Jr0_Gr1lIxAIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4U MIIF0xvEx4A2jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7VUjuHq7UUUU U== X-CM-SenderInfo: pyxotu46lvutnvoduhdfq/1tbiDAcQA2oRHTpomQAAs1 Content-Type: text/plain; charset="utf-8" of_get_parent() acquires a reference on pnode, but the reference is never released on any return path. Add of_node_put(pnode) in the exit label and before the early return path. Cc: stable@vger.kernel.org Fixes: 7112c05fff83 ("pinctrl: pinconf-generic: Add API for pinmux properti= ty in DTS file") Signed-off-by: Wentao Liang --- drivers/pinctrl/pinconf-generic.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-ge= neric.c index d67838afb085..a5016f522889 100644 --- a/drivers/pinctrl/pinconf-generic.c +++ b/drivers/pinctrl/pinconf-generic.c @@ -390,6 +390,7 @@ int pinconf_generic_dt_node_to_map_pinmux(struct pinctr= l_dev *pctldev, &num_configs); if (ret < 0) { dev_err(dev, "%pOF: could not parse node property\n", np); + of_node_put(pnode); return ret; } =20 @@ -420,6 +421,7 @@ int pinconf_generic_dt_node_to_map_pinmux(struct pinctr= l_dev *pctldev, kfree(configs); if (ret) pinctrl_utils_free_map(pctldev, *map, *num_maps); + of_node_put(pnode); =20 return ret; } --=20 2.34.1