From nobody Fri Apr 17 07:44:20 2026 Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) (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 9ED931F09B3 for ; Sun, 22 Feb 2026 14:46:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771771561; cv=none; b=p90ou6RcGHFlQsi3LP4b3Fkn/VkCzoHZofKQp9lfe1yAmDiVKdzY77Owy9tkBlW5iohw8hPFL0VGLn7bUSNjSzK6jBe9tN0CRNK0Bf4z/cTNsK34GmiOrrScH6vOOomL6N2FlMrHJwFyDM/waQcaMBGM5J6rbSMAaUUPNfkd5GU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771771561; c=relaxed/simple; bh=9UfKlVAp4ugnHSqzVIbXc0r+hY2yaXgys6+bbyWd7ZI=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=RitF6O7bkNFXjE+0t+muJI3q5W4Xbi+dnu88mTewYI+7UruT0b8wqZAWlMWFq8AD7BERCHKc9Av1A1+CBZA9B9Y+UUrS0KZboEY0v0v1z9SMmNqFqKzSoLDr7+3JLEfJgflkETQN84pAUm9u/rwkt4+2hcFmjDlAwvo6qjqek7g= 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=fvTK7EIk; arc=none smtp.client-ip=209.85.215.176 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="fvTK7EIk" Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-c6e23cb81f4so1330438a12.2 for ; Sun, 22 Feb 2026 06:46:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771771559; x=1772376359; 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=fM+Dr/5jTilIDrdDzgZn2PhlnWeOYCalUbLR/eM+jb0=; b=fvTK7EIk6mQ8CY9ixHrVO45v9y7Mpt4P4D5OQRvSE9RQB90BKXpE2BBBgpOcHlcsM5 1J7j0QZ0wCbspt3qdXyFOV76nOLpebhEVlv53iz4gFcA9/1QsI5WjB40Y4eD1CC9evVw ruXMqAdnTOfzzIgMaTzua9PJeWVx+9s7OKhNOg/oahIRb/BicFn5corZjaummh3sPTa1 xFJR68r/O4HyIBm45CbGPr2G+A8PJXePT1FULTVQeAIv7+pizhEDmMwq8C+KyNCQl4qs gdHEQ2NHkY4Zvfp9cdOgF9fN2naqIJkdJIyzKiEzLboF28e5418xwV5f6tr4DlxFno3O iqog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771771559; x=1772376359; 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=fM+Dr/5jTilIDrdDzgZn2PhlnWeOYCalUbLR/eM+jb0=; b=NoyfQLVWoPAIjWWIZkzpsfvcvgDFlFa8rtxvak5WoOUfxAbT6fsVddPxjXozOM0GJY RIpFrtHxsjNJZBnjyTCQZzxz62ZbUsn8pNga6FANYvLn/WvEDgJ0ktmrFfc4KL48Y1Ym YjEXFRoifJ7iIG+ld2gzRGULsj82+FLtefE8rBkIM/9oe9NN7Ugt0siv2Z9idUZ64/B6 jHO9Wu/EB5QSX2tdmJ/IpF9RBO3TfRKAwuq/0yfRtC2+xE86YZ4uolKFJUQWFHmU45wM ThPXOx7gZHtuhyXz3edP/R8Ovi+YWGgUNidWPT6nAb/cEyAMWIpdKtVb+oQNPuik7yEF FmfA== X-Forwarded-Encrypted: i=1; AJvYcCW//faqRpTgFVBuY8t6HDeXUmefDc8T3keTQUPiO/xnlNxK4UXQ8gtljxDbheF1KRe2/7J/eYMbMGz9pqQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyA3OJIM2Typ0Nx1x74VAGShPyl7P/GVIoNzbFC1LvII0npffYs PpceKHmUC+4TOHOBfZIsxt9lX011dIrkqjUj5kZ0MoMh7phDp8GYzkMc X-Gm-Gg: AZuq6aLdRDhFi1qgD8C1EMPd/cDVubU9bQjfdMZLzn6y+7JeHdNnM4UjSJanYBptSrj TyobZ024qYGD1gH945+sRHsQ5uP2u+XMK9RnyqHojdfI66jc5IB1bIBv95vCvNX3vGASi7ossLN +oUijvMGGqN9LgmsQTaNm59q6VkY+Eh5pJdH9BqiwYMeHigQ4SzeCb4KFGwE4/Q26BMEHulbn0M 911pEBg1tGv08tu0G4Qo7E+dHWiEinyVuLbWNfDG+ZjEqN13Xubh4J2OTlN1QkDjSpFURjVJ0Yv BvHHVYtHFduo/LR8yLbFGF8ex68FWxMJWE/VPLyDJqwskPAjAJI841uXZ9aw94/E+baslvuMzRZ 2hj3YbbqVo1SGJjfsV+vnqr8jPQd4uIDtN+RBUrTgipEEjX8A8eQ45HcuQr6JhD2gSsn/Q13Zbz B91XZXuCJBjLbQK40RuZVlE6Gob/KH0ms8+Fp7WhBmmBI8vvzwzeQ0ccAjyYz8U9c= X-Received: by 2002:a17:903:1212:b0:2aa:de7e:efae with SMTP id d9443c01a7336-2ad74595a34mr59550965ad.53.1771771559436; Sun, 22 Feb 2026 06:45:59 -0800 (PST) Received: from mm2dtv09.. (61-216-20-61.hinet-ip.hinet.net. [61.216.20.61]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ad7500e17esm49138205ad.51.2026.02.22.06.45.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 22 Feb 2026 06:45:58 -0800 (PST) From: Kenny Cheng To: robh@kernel.org, saravanak@kernel.org, kees@kernel.org Cc: tony.luck@intel.com, gpiccoli@igalia.com, andersson@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, c.s.cheng@realtek.com, Kenny Cheng Subject: [PATCH] of: fix incorrect device creation for reserved memory nodes Date: Sun, 22 Feb 2026 22:45:07 +0800 Message-Id: <20260222144507.1736070-1-chao.shun.cheng.tw@gmail.com> 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 Content-Type: text/plain; charset="utf-8" The current global search for nodes in reserved_mem_matches can find nodes outside "/reserved-memory". These nodes might not have actual memory reserved (via memblock), leading to drivers (e.g., ramoops) accessing unreserved memory and causing memory corruption. Prioritize scanning children of "/reserved-memory" to ensure the device is backed by reserved memory. A fallback is kept for compatibility. Proper reference counting is also added. Signed-off-by: Kenny Cheng --- drivers/of/platform.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/of/platform.c b/drivers/of/platform.c index ba591fbceb56..785ffef48c08 100644 --- a/drivers/of/platform.c +++ b/drivers/of/platform.c @@ -563,8 +563,17 @@ static int __init of_platform_default_populate_init(vo= id) * platform_devices for every node in /reserved-memory with a * "compatible", */ - for_each_matching_node(node, reserved_mem_matches) - of_platform_device_create(node, NULL, NULL); + reserved =3D of_find_node_by_path("/reserved-memory"); + if (reserved) { + for_each_child_of_node(reserved, node) { + if (of_match_node(reserved_mem_matches, node)) + of_platform_device_create(node, NULL, NULL); + } + of_node_put(reserved); + } else { + for_each_matching_node(node, reserved_mem_matches) + of_platform_device_create(node, NULL, NULL); + } =20 node =3D of_find_node_by_path("/firmware"); if (node) { --=20 2.34.1