{"id":2231980,"url":"http://patchwork.ozlabs.org/api/1.1/patches/2231980/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-i2c/patch/20260501203002.3382428-1-shitalkumar.gandhi@cambiumnetworks.com/","project":{"id":35,"url":"http://patchwork.ozlabs.org/api/1.1/projects/35/?format=json","name":"Linux I2C development","link_name":"linux-i2c","list_id":"linux-i2c.vger.kernel.org","list_email":"linux-i2c@vger.kernel.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20260501203002.3382428-1-shitalkumar.gandhi@cambiumnetworks.com>","date":"2026-05-01T20:30:02","name":"[v2] i2c: sun6i-p2wi: fix of_node reference leak in probe","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"bcf37f70fbf14c1d131939b44a923d490f4913d2","submitter":{"id":93300,"url":"http://patchwork.ozlabs.org/api/1.1/people/93300/?format=json","name":"Shitalkumar Gandhi","email":"shital.gandhi45@gmail.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linux-i2c/patch/20260501203002.3382428-1-shitalkumar.gandhi@cambiumnetworks.com/mbox/","series":[{"id":502494,"url":"http://patchwork.ozlabs.org/api/1.1/series/502494/?format=json","web_url":"http://patchwork.ozlabs.org/project/linux-i2c/list/?series=502494","date":"2026-05-01T20:30:02","name":"[v2] i2c: sun6i-p2wi: fix of_node reference leak in probe","version":2,"mbox":"http://patchwork.ozlabs.org/series/502494/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2231980/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2231980/checks/","tags":{},"headers":{"Return-Path":"\n <linux-i2c+bounces-17205-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-i2c@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=FGO+jCXH;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-i2c+bounces-17205-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"FGO+jCXH\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.210.175","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g6jNV0znSz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 02 May 2026 06:30:50 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 63CB23010D81\n\tfor <incoming@patchwork.ozlabs.org>; Fri,  1 May 2026 20:30:45 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 8C4CC421F17;\n\tFri,  1 May 2026 20:30:44 +0000 (UTC)","from mail-pf1-f175.google.com (mail-pf1-f175.google.com\n [209.85.210.175])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id F14E04219E7\n\tfor <linux-i2c@vger.kernel.org>; Fri,  1 May 2026 20:30:42 +0000 (UTC)","by mail-pf1-f175.google.com with SMTP id\n d2e1a72fcca58-82f8b60e485so1065610b3a.0\n        for <linux-i2c@vger.kernel.org>; Fri, 01 May 2026 13:30:42 -0700 (PDT)","from localhost.localdomain ([115.110.225.242])\n        by smtp.gmail.com with ESMTPSA id\n d2e1a72fcca58-83515b84aedsm3230595b3a.57.2026.05.01.13.30.38\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Fri, 01 May 2026 13:30:41 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1777667444; cv=none;\n b=qiW51sxckbOGhfapX/qly4gXg1WcVCUjzyPMirlcpUOtaimDuAuNIxQY8pktUD+p7NOhHuwCIUqQkpS7r/Sn6K0y86sVAlDtPPJPFNId8ITzWMudbvt07yHwvhBLJ22PeIHzLzkoBksweBMyunPxxDcubyQhPRHa9irgAMtQ4og=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1777667444; c=relaxed/simple;\n\tbh=v5qF9oUjFKKNNHiaZ/cDzrCvSYhthuRxEl4ePROAuGI=;\n\th=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:\n\t MIME-Version;\n b=etSHOdF3E7KTaR2+5Jx3aUBylv65ptgR0m7kQ5QSegZIfcvcxQN31RGOhF+PAe2Wgv1jf3eMA/jLeDE/yGP5Qo2hFBIZnG+3SxjiqTl6hZXEjBkQkRh0syeuMg26Wzj5FATNMNFD4WVnJYheyOns+FWtW1UwWZ2+UPqxm6sFvAc=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=FGO+jCXH; arc=none smtp.client-ip=209.85.210.175","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1777667442; x=1778272242;\n darn=vger.kernel.org;\n        h=content-transfer-encoding:mime-version:references:in-reply-to\n         :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=qVBnu6Q/tQcYvEy05j8zTeFYSonQvouDAQt7Xng1rGU=;\n        b=FGO+jCXHSKDpIfZTzi+KqeQj1n2RE+xbiek+qNmJE4PdwTd714zf5EQvYG57oIi6Oi\n         tZ9UxnPr/9Xbpud32rn/Z1BnaaZ/sKZELwdT2oRc/N8Ha/vE28DQfIsPHwy4xqyOguWT\n         L3l7oGbbQukeSzast7sN4t8wVpyQrESwJStsqRuHp6NTwdZ+mXvFNE/SroyTjrI9QPjD\n         y5NzCZAikmvok/G26FdM8VeGryxnBvexH065x/hW399eHtojC+sON90MlK5c4SmeOggK\n         slhFI51+7FhLP68Yhn/L5Q+/YbC0OKAYGLLdmOt2T5TwR51z5Jtqu4MKAAf6/a34N2vS\n         n6eg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1777667442; x=1778272242;\n        h=content-transfer-encoding:mime-version:references:in-reply-to\n         :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n         :to:cc:subject:date:message-id:reply-to;\n        bh=qVBnu6Q/tQcYvEy05j8zTeFYSonQvouDAQt7Xng1rGU=;\n        b=GjkuXQHSJiC/FH1vayFGBtLOHmW7juWGNqNyGTTffVTXCCyfY0vXpYToUn2SZ+hSqX\n         4Q5NeiPbLsgx8jNQ1ru6jaKtNssyiN6YQtYJMlpJbWGqsF+0f3m/JwGwKAI/jcQFa/z3\n         eGS4CH6c+XtvWxE/Z8UsJr3eNt0QgUrk9f9AhQKbu4+Q+zSDWAhkU7Q5tjpQ0b68Q81q\n         YDAsKxe7UpFLFXOImXhhq5b+znpi5B3IXWezdyLfzc26bVlUNhNZfoqxy8o8/urrEMeQ\n         NisAf5agritYLjp4ST3OgghpMhGe93FJHzz3GQ8REK4HIBk2u5rBy9eNKUDbWSuQkYdX\n         q0vA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ8nApwGTrtbYPKm3VMji4uLRNnnsO483eMQoZIApYMsBsBu9EU47ZXIAjtAQZib4PMVrUDzcH8A+BY=@vger.kernel.org","X-Gm-Message-State":"AOJu0Yz8/iiEBuvaWj9wxoRLHXNNPDK+Acdy4f93hlzpu03kVfKZN7tZ\n\tT2hqwzTDOEpuL7nWkERNhQCjhK3WB2HBXcRzmD9louVibo9XDeCDuvNd","X-Gm-Gg":"AeBDietEsHGmQV9TysjZB4AKVEJ3a7X+lxD3wnwPBRk0hRW6U8AReWVGdRp0xtmuWw1\n\tmIgLQTBVXWo/KBw3hfMOO0VDlpdQytdw9DXIeGXGHZllKD4irdAEgSx3ez/Aa0dIgf/8J/BESbe\n\tFrceOJftCfLYcpq9lmkbG6MKsDcn7elCA2jk/XEkTW0DrkhRjoSKFHUrmUD0sJxGDzqlLZCc4J4\n\tAXo5hUx8mOegXso17yYcZFWdKUoZLfvUpYpoUVf1JWHZqSIXa+p/RhCQ1roFbC0TAYxqyB5DGfD\n\tp2FiVJIsBLQ+wOkTxzm1PZQ2/JttjRJU/pvA3jAhG7sahmq48hdtkoMQmh9Ai297sZ8TOX783Dp\n\tvvo8kwHah+C+yHvJlWncGSRpBAqHbqenUsx4rIIqOOuMQEUnMRa5xDxPVUY1fZ7Mvffppa4rnMA\n\t6JCJa8qtRUB0f0rIHH88y6CtDZ3Q8pP0vAHwbvbiYQsLqG7A/U0j9kekHlGYcH5unGlVHhx7Xx","X-Received":"by 2002:a05:6a00:330b:b0:827:4343:4c1 with SMTP id\n d2e1a72fcca58-8352d20b2a9mr661002b3a.29.1777667442262;\n        Fri, 01 May 2026 13:30:42 -0700 (PDT)","From":"Shitalkumar Gandhi <shital.gandhi45@gmail.com>","X-Google-Original-From":"Shitalkumar Gandhi\n <shitalkumar.gandhi@cambiumnetworks.com>","To":"Andi Shyti <andi.shyti@kernel.org>","Cc":"Wolfram Sang <wsa@kernel.org>,\n\tChen-Yu Tsai <wens@kernel.org>,\n\tJernej Skrabec <jernej.skrabec@gmail.com>,\n\tSamuel Holland <samuel@sholland.org>,\n\tFelix Gu <ustc.gu@gmail.com>,\n\tlinux-i2c@vger.kernel.org,\n\tlinux-arm-kernel@lists.infradead.org,\n\tlinux-sunxi@lists.linux.dev,\n\tlinux-kernel@vger.kernel.org,\n\tstable@vger.kernel.org,\n\tShitalkumar Gandhi <shitalkumar.gandhi@cambiumnetworks.com>","Subject":"[PATCH v2] i2c: sun6i-p2wi: fix of_node reference leak in probe","Date":"Sat,  2 May 2026 02:00:02 +0530","Message-Id":"<20260501203002.3382428-1-shitalkumar.gandhi@cambiumnetworks.com>","X-Mailer":"git-send-email 2.25.1","In-Reply-To":"<20260201-p2wi-v1-1-e0ec9cda82b3@gmail.com>","References":"<20260201-p2wi-v1-1-e0ec9cda82b3@gmail.com>","Precedence":"bulk","X-Mailing-List":"linux-i2c@vger.kernel.org","List-Id":"<linux-i2c.vger.kernel.org>","List-Subscribe":"<mailto:linux-i2c+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-i2c+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit"},"content":"of_get_next_available_child() returns a device_node pointer with an\nincremented reference count.  The reference taken in p2wi_probe() for\nthe optional child node was dropped on neither the early return when\nthe \"reg\" property is missing/invalid nor on the success path, so a\nreference is leaked once on every successful probe and twice on every\nfailed one.\n\nUse the scoped __free(device_node) cleanup helper at the point of\nacquisition so the reference is dropped automatically on every exit\npath.\n\nSuggested-by: Felix Gu <ustc.gu@gmail.com>\nLink: https://lore.kernel.org/linux-i2c/20260201-p2wi-v1-1-e0ec9cda82b3@gmail.com/\nFixes: 3e833490fae5 (\"i2c: sunxi: add P2WI (Push/Pull 2 Wire Interface) controller support\")\n\nSigned-off-by: Shitalkumar Gandhi <shitalkumar.gandhi@cambiumnetworks.com>\n---\nChanges since v1 (Felix Gu, https://lore.kernel.org/linux-i2c/20260201-p2wi-v1-1-e0ec9cda82b3@gmail.com/):\n  - Reword the commit message to make explicit that the leak is of an\n    of_node *reference*, not of an allocation.\n  - checkpatch --strict --codespell: clean.\n  - Build-tested: x86_64 allmodconfig (CONFIG_I2C_SUN6I_P2WI=m via\n    COMPILE_TEST) and arm sunxi_defconfig.  No new warnings.\n  - Runtime test: not performed; no Allwinner A31 hardware available.\n\n drivers/i2c/busses/i2c-sun6i-p2wi.c | 4 ++--\n 1 file changed, 2 insertions(+), 2 deletions(-)","diff":"diff --git a/drivers/i2c/busses/i2c-sun6i-p2wi.c b/drivers/i2c/busses/i2c-sun6i-p2wi.c\nindex fb5280b8cf7f..652b37b57159 100644\n--- a/drivers/i2c/busses/i2c-sun6i-p2wi.c\n+++ b/drivers/i2c/busses/i2c-sun6i-p2wi.c\n@@ -184,7 +184,6 @@ static int p2wi_probe(struct platform_device *pdev)\n {\n \tstruct device *dev = &pdev->dev;\n \tstruct device_node *np = dev->of_node;\n-\tstruct device_node *childnp;\n \tunsigned long parent_clk_freq;\n \tu32 clk_freq = I2C_MAX_STANDARD_MODE_FREQ;\n \tstruct p2wi *p2wi;\n@@ -223,7 +222,8 @@ static int p2wi_probe(struct platform_device *pdev)\n \t * In this case the target_addr is set to -1 and won't be checked when\n \t * launching a P2WI transfer.\n \t */\n-\tchildnp = of_get_next_available_child(np, NULL);\n+\tstruct device_node *childnp __free(device_node) =\n+\t\tof_get_next_available_child(np, NULL);\n \tif (childnp) {\n \t\tret = of_property_read_u32(childnp, \"reg\", &target_addr);\n \t\tif (ret) {\n","prefixes":["v2"]}