From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0286419005E for ; Mon, 8 Jun 2026 04:23:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.54 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780892625; cv=none; b=NrBCOvuv+4OjzIU6l5YGS+2+jOJPOWATIRWK/bxcO8ck7PjhBss9CttGUyk+gxM8fc7FU0JGRqzLJeCphwpIvWzbiUl4erqXEZC41mSeTCY5I9V0pIjVt48Pc/qtiVHa+81QotbvLstQl3+I+lHXOg2/cU7x/Thtc9moybOFKDE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780892625; c=relaxed/simple; bh=gBL5rrNj3mifQnsn67MUmIIFnGghYJhBrc67QVEPq9I=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=DMbLF1UsG4Ek56XxCupgb/D/UM4GMwBuOpjTV9CuFyh7RlkLODb3/W2JIVKLAAmgv2hziRA68Ol6xYb1sr55K89NEHsPzk9h/Bg9v3kkky1n5MX9ANhu9d90IZfaKczHeO+N/zrwFU0MuGWBniOQM2kyhwEdoy3dug95mFXjFiA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=COIJHHfn; arc=none smtp.client-ip=209.85.219.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="COIJHHfn" Received: by mail-qv1-f54.google.com with SMTP id 6a1803df08f44-8ce3876a50cso40070896d6.0 for ; Sun, 07 Jun 2026 21:23:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780892623; x=1781497423; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=1W0WSOPePyu7VycvkA0dFLtFzunvd3MES835fx1lG5Q=; b=COIJHHfnFPGUSHKGFpD9E1ngGxznTzNAHdIiZz3BAI3bu09F65OErAWSxiGkjzSnPV bKR5GmedN2u9gsI7G5Ay/Tv7MD0EmyCLo8DWklzUdltsk9o+sZspNHK16DGT4EOob9ap gnolWO22vwAgnIa9WZYkTzwqFJuhLDFRC8zL2UIwHCN2J83b9Kl+guFGfaGXS1gZ0uCT DvVmFSlcASwmVkHQRT8ha/xZZSJFukVDD0EVu45U2dGQSgWASqlFE1jtXfBgUOR7w+VX KiUH96IyOYIpogDmNsfCrej36BEu7z4+y4rq1phLuW9D5bKhcRaWag0sfYXV0hlpWach hCNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780892623; x=1781497423; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=1W0WSOPePyu7VycvkA0dFLtFzunvd3MES835fx1lG5Q=; b=gYCnyQwiy27WUFXig0LjkUVZhl+8G9nsfMhpvGNoWODxVSf0YtIFywlvsNfavWppIF rEFgwkaKMlc/9mMgsR1sxVYkudgLTdUgVqImB7UxzD3nU0gdVVKyN0C5Kf1/hFKvMeK9 41jQK6FMWTfoS+FLPLKUCiQ5CX4RdKe7k6KULBCup7MjpiXQs3d0VeRZY7pbGSY0gz3E 5z8tOzFuZOjKeS+6QGMAUqQI39ekpSWTPioXmzZOxZM8kUE6nLby2wGEAFL86b4jaJBT UHqmXUD/FK6D3RnK8cxwQCo/qMNtC0qj+Imwa7i1fojtug9yzooEju3XDpoEhF6qgqSD r15w== X-Forwarded-Encrypted: i=1; AFNElJ8qzQ/DHKnB1oRIdcEq+mRjWGICWX9Xgf3DKTB3UU7gYR5WF/8g6TZumzeFMSVRmN9g9xxeBh0XgtJj9eM=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0gVqDEK5WD1ag6kK9Rvoa3x3XfdYmjxde+ZisTSV40C7QK3Rq fXSImWeE0aqya4mYOjSgkYt7wSTkp7A/zwy64IYdzSijsOvxA1S9ddM/ X-Gm-Gg: Acq92OG5p6ITbPRzWR4T4qMLELGYsbxc6tzzqAHDjNmQ3mXkYMUqNZtMHoRyxx8ZnhD WDFpxLoPoYm/Xh9/guziqtPLA0MRJhzB1OS4O0v33k9R/96b25/wSgOREScdqJ7itY0BYuHjo8G /kytiJMu8NJ9+z5qkb60mh/6lY/8BgWhQKkM21A2nXtft8V2CSkamuOgwYMIZtwTh9wjW35MHWI gjfTh7Xb7cPdKALkpH754sV15eOkpsFpLImHaBEexcXEYtoKpyhSXTIOF9S1JVbR0q+JGNJWdhH OB7TQwc/Iy0luMRxy1FZZtPafwZ3USCRq1S8eY0LGb2PgXUxBdgmJ5GJNEemp+uEG8tsDtpfgxB buZhBQAwWW+H91SvKE/9pSCl9h7ysvPGRD5SvEEeHYfkdACJnaFgkI+6I99EioO3jFN/ZbURIGo 51v/oOupi0gvmuh8IFMqSU9mcQfAJpmLH3JfnAE8n6McEnnEHI+nA= X-Received: by 2002:ad4:5c45:0:b0:8cc:d756:802b with SMTP id 6a1803df08f44-8cee61529b6mr236711036d6.26.1780892622947; Sun, 07 Jun 2026 21:23:42 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-8cecd06f5eesm154721996d6.37.2026.06.07.21.23.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 07 Jun 2026 21:23:41 -0700 (PDT) From: Yuho Choi To: Russell King Cc: Kuninori Morimoto , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH v1] ARM: l2x0: Fix OF node reference leak in l2x0_of_init Date: Mon, 8 Jun 2026 00:23:30 -0400 Message-ID: <20260608042331.2633217-1-dbgh9129@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit l2x0_of_init() gets the cache controller node with of_find_matching_node(), which returns the node with a reference held. The node is only needed while parsing the cache controller resources and properties, but the function returns without dropping that reference on the resource/ioremap failure paths or after __l2c_init() returns. Use a single exit path after the node lookup and put the node before returning. Fixes: 8c369264b6de ("ARM: 7009/1: l2x0: Add OF based initialization") Signed-off-by: Yuho Choi --- arch/arm/mm/cache-l2x0.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index 470867160076..e20ac79dd500 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c @@ -1767,17 +1767,22 @@ int __init l2x0_of_init(u32 aux_val, u32 aux_mask) u32 cache_id, old_aux; u32 cache_level = 2; bool nosync = false; + int ret; np = of_find_matching_node(NULL, l2x0_ids); if (!np) return -ENODEV; - if (of_address_to_resource(np, 0, &res)) - return -ENODEV; + if (of_address_to_resource(np, 0, &res)) { + ret = -ENODEV; + goto out_put_node; + } l2x0_base = ioremap(res.start, resource_size(&res)); - if (!l2x0_base) - return -ENOMEM; + if (!l2x0_base) { + ret = -ENOMEM; + goto out_put_node; + } l2x0_saved_regs.phy_base = res.start; @@ -1821,6 +1826,10 @@ int __init l2x0_of_init(u32 aux_val, u32 aux_mask) else cache_id = readl_relaxed(l2x0_base + L2X0_CACHE_ID); - return __l2c_init(data, aux_val, aux_mask, cache_id, nosync); + ret = __l2c_init(data, aux_val, aux_mask, cache_id, nosync); + +out_put_node: + of_node_put(np); + return ret; } #endif -- 2.43.0