mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v3 0/5] of: reserved_mem: several fixes about reserved memory
@ 2026-09-20  9:28 Wandun Chen
  2026-09-20  9:28 ` [PATCH v3 1/5] of: reserved_mem: release dynamically allocated no-map region on init failure Wandun Chen
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Wandun Chen @ 2026-09-20  9:28 UTC (permalink / raw)
  To: robh, saravanak, rppt, m.szyprowski, devicetree, linux-kernel, linux-mm
  Cc: akpm

From: Wandun Chen <chenwandun@lixiang.com>

This series fixes several error-handling issues in the reserved-memory
initialization paths.

The first two patches fix cleanup of no-map regions after driver
initialization failure.

Static reserved-memory nodes are reserved during the early DT scan but
initialized later. The third patch tags regions whose early reservation
succeeded, so the late scan can skip the nodes whose early reservation
failed.

The last two patches reject overlapping static regions. Without
these checks, overlapping nodes can be initialized over the same
physical memory, result in data corrupt.

Sashiko reported these issues in [1] [2] [3].

[1] https://sashiko.dev/#/message/20260814090305.4C8741F00A3D%40smtp.kernel.org
[2] https://sashiko.dev/#/message/20260814084718.29C341F000E9%40smtp.kernel.org
[3] https://sashiko.dev/#/message/20260806100605.2C2C01F000E9%40smtp.kernel.org

v2 --> v3:
1. Rework the mechanism that checks in the late scan whether the early
   reservation succeeded (patches 3-5, suggested by Marek, thanks).

   Patch 3 adds a new memblock flag MEMBLOCK_RSRV_RMEM, which is set when
   the early reservation of a static region succeeds and checked in the
   late scan.

   Patches 4 and 5 are reworked to reject regions that overlap or are
   contained by an existing reservation. The code makes a little different
   from what was acked in v2, so the Acked-by tags for these patches are not
   carried over.

2. Reorder the patches: the two cleanup fixes in v2 now come first.
   In v3, the first patch now introduces the 'dynamic' distinction in
   fdt_init_reserved_mem_node(), which the following patche 3 build on,
   so the series reads more fluently.

v1 --> v2:
1. Rework failed-node tracking in patch 1: do not track zero-sized nodes,
   and keep a reserved_mem slot when tracking overflows.
2. Reject static reserved regions overlapping existing no-map regions.
3. Keep MEMBLOCK_NOMAP flag for static no-map regions when init failure.


Wandun Chen (5):
  of: reserved_mem: release dynamically allocated no-map region on init
    failure
  of: reserved_mem: retain static no-map memory on init failure
  of: reserved_mem: skip init for regions whose early reservation failed
  of: reserved_mem: reject static regions overlapping no-map memory
  of: reserved_mem: reject static mapped regions overlapping existing
    reservations

 drivers/of/of_reserved_mem.c | 86 +++++++++++++++++++++++++-------
 include/linux/memblock.h     |  7 +++
 mm/memblock.c                | 95 ++++++++++++++++++++++++++++++++++++
 3 files changed, 170 insertions(+), 18 deletions(-)

-- 
2.43.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-09-20  9:29 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-20  9:28 [PATCH v3 0/5] of: reserved_mem: several fixes about reserved memory Wandun Chen
2026-09-20  9:28 ` [PATCH v3 1/5] of: reserved_mem: release dynamically allocated no-map region on init failure Wandun Chen
2026-09-20  9:28 ` [PATCH v3 2/5] of: reserved_mem: retain static no-map memory " Wandun Chen
2026-09-20  9:28 ` [PATCH v3 3/5] of: reserved_mem: skip init for regions whose early reservation failed Wandun Chen
2026-09-20  9:28 ` [PATCH v3 4/5] of: reserved_mem: reject static regions overlapping no-map memory Wandun Chen
2026-09-20  9:28 ` [PATCH v3 5/5] of: reserved_mem: reject static mapped regions overlapping existing reservations Wandun Chen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®