From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pz2-f1.google.com (mail-pz2-f1.google.com [74.125.228.1]) (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 73ED5442FBB for ; Fri, 14 Aug 2026 08:15:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.228.1 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786695309; cv=none; b=r2VwzKL4R8NLh9rb8QjnOAKT9olxAWlpBCQmizXIV/QcyA6VhnFnhzAM3ygZrhT7FIyGxqFL7JwpAtoeKIm1IdWVnhr6kgXS8uqD75rSG3m4oGnPUg04LTyUyX4yoqYtj79OIk7kHXkx42E8VD01jP3EA0dJ+l1X6Cx3W+dN1Fc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786695309; c=relaxed/simple; bh=wotXsZluvcxyn6s2nKRlu6uhtEVLn0t+kaHmUzK7NDs=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PDlRKYvhe/aPyPFWs4AxD9qnRZTO1vcY/tUG11OEZnwrrruoq0wAR1/b+iXMEvXsrHdPEMdXgNyY/ReXZ775rAtdo7vP99+sZ5Cy41lq9DMLkeyT3AXfkYb7/9Zqc/bz04SkLh7Wqz8blrWMQ6ywsj1eaQxf/KC2xHGejoftdSw= 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=Tfsz22an; arc=none smtp.client-ip=74.125.228.1 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="Tfsz22an" Received: by mail-pz2-f1.google.com with SMTP id 41be03b00d2f7-cbb818e57c9so290810a12.0 for ; Fri, 14 Aug 2026 01:15:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786695301; x=1787300101; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=9unLO4ZeP6CWngyT8QczSGq/LrcwFa5DIFx/EN1Kd3o=; b=Tfsz22anceE3TzFbF35fTeAcpBH2JhwzU4hKFxu+ruMPFEbTcGaUx0hqm8GnwI8b/Y EK4qoh+BF524bhfrtLgZ7vWDugkM5fO038m7FSHCXMawNHQEUUSriwQbBbN4oUbdrtYk Gjlx+luBbPmzw+fHgshIvy/sZax8qCLQmZp6AvT1S7R3Jze/hQHITXsXZKJa5B1IOeG/ F5FaNAeCXoXnRUOGPrWeuo4BvKmYUV+bf3AI4YgNA8XVssWVcmbieqEWQn+eS/mB5OHy nVccuf7KxR4tRVGaDBU1npRmP5d5EWxkZLjsr7ZIbbqZMcBZN4hD/s86tEWPQ1NSsshY f1Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786695301; x=1787300101; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=9unLO4ZeP6CWngyT8QczSGq/LrcwFa5DIFx/EN1Kd3o=; b=T8MNF1IG6j8fv1ggttN2Y76zPt9uTw9X+lKPDLOIEO95xc3mx25TuO+hRyMO/bkZ/0 aRCgSu6sFT8q2cDa4wlqK4m4OeE1xFexXzw5g6v9zDeKLJDxR9ZC9FUpVR2IrhHgN9rP 7m2ef98XCoRNFGyKgEbqgrPsDxVOSbLbXugI2QokbseQg0IWNOl46p4brrUqxui81Vyx 6E42JOZ17fCbUsEd37pK8wEaPV/doKxO6WePGTY519urd0M1wWCXZFeQTELN8BHdCK1V FoWzcM10A6FM67mSaldH+DWOsEOfECmY/1OeQ8WEkDdqzGWhdSBvVdZ0mLkL6fPI50LB WMMw== X-Forwarded-Encrypted: i=1; AHgh+Rov26hLfpTChazA8eOYLAREtQeD99+jDXguQJnm6r5Z7uqc7HcudrNGy3gZZRDlPP8jvtjwvC1f0GN8cRc=@vger.kernel.org X-Gm-Message-State: AOJu0YzbB38DUnjVQhccKCLcsodTb/dcHny6h8xWR/bsN8G11q4jQoRi zrbHTveIMOwigtNa/0MAuurhNd9jkLee43Pghxt+p4LAUbovqMSNxc5p+1ajyBCewq7hBg== X-Gm-Gg: AR+sD10cvebez0beMvxq7KoOpZAp9m7LtL4XasPHwZ2p68P9zP/ev3gGQk/GBadymfW ru0CjTcD2Am1JD534C9Q1ah8kdP+Iu6hX86m97aoNpW1+58oKYo7E2/nAQj5rIPtkZ374+c+tdp oUuoAIizLqd0jquqHmWk5EezTfNbK3i8DrqDiuZhFtqOPMrRyj2xU19YohlhUWU0VMGw8xs94RQ CbmTZmSLpwEME2dgkxrGeqmvPy5ZNuqLXOn/RWfU71WDWnnoIUsP5+tzsYNnkeG5kZ+vRzPieAm 2WVMHH3EAvB32OJkZ+b4BPv+iduI230eZ88Mu+mzrtcL8HdAfNkDyoL5irjpImsgPw994Z27MMk /2G4B/YOTafOfDo8N/gxj2uQFID3VmXWlKDoDFS7xXhqiYCuMY04L4oDp3kfqhmBikeAMrcIaLC 8rrywHdv9rE1QNZm+pMshPIpkzBPWMlYekSxUivgLMbguVGXAmC/59MyIKzsl5ru4AREiDpBRaK 41qWPg9tmA= X-Received: by 2002:a05:6a00:6c9d:b0:84f:dc19:b77d with SMTP id d2e1a72fcca58-84fddffa59amr4492658b3a.12.1786695300745; Fri, 14 Aug 2026 01:15:00 -0700 (PDT) Received: from intel.company.local ([122.11.210.25]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8517cfeb39esm149986b3a.4.2026.08.14.01.14.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Aug 2026 01:14:59 -0700 (PDT) From: Wandun Chen To: robh@kernel.org, saravanak@kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] of: reserved_mem: reject statically placed regions overlapping existing reservations Date: Fri, 14 Aug 2026 16:14:42 +0800 Message-ID: <20260814081443.1061046-3-chenwandun1@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260814081443.1061046-1-chenwandun1@gmail.com> References: <20260814081443.1061046-1-chenwandun1@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Wandun Chen memblock_reserve() permits overlapping reservations, so a statically placed region whose 'reg' overlaps an existing one is accepted. The overlapping memory may then be used by two regions concurrently, corrupting data; and if the region's driver init later fails, memblock_phys_free() returns the overlap to the buddy allocator, corrupting that memory. Reject the overlap up front. Dynamically allocated regions are unaffected, as they are allocated from free memory and so cannot overlap an existing reservation. Sashiko found this issue in [1]. Fixes: d0b8ed47e83a ("of: reserved_mem: fix reserve memory leak") Signed-off-by: Wandun Chen Link: https://lore.kernel.org/all/20260806100605.2C2C01F000E9@smtp.kernel.org/ [1] --- drivers/of/of_reserved_mem.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c index f20747725de4..67cb60616fc6 100644 --- a/drivers/of/of_reserved_mem.c +++ b/drivers/of/of_reserved_mem.c @@ -146,6 +146,15 @@ static int __init early_init_dt_reserve_memory(phys_addr_t base, return memblock_mark_nomap(base, size); } + + if (memblock_is_region_reserved(base, size)) { + phys_addr_t end = base + size; + + pr_err("Reserved memory: [%pa-%pa] overlaps an existing reservation, ignoring\n", + &base, &end); + return -EBUSY; + } + return memblock_reserve(base, size); } -- 2.43.0