[PATCH] drm/amdgpu: Extend the bad page check to page range

Xiang Liu xiang.liu at amd.com
Fri Aug 22 06:18:58 UTC 2025


The page range should be checked for the critical region.

Signed-off-by: Xiang Liu <xiang.liu at amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
index c9df026e53f7..db7fd21b2c04 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c
@@ -406,15 +406,18 @@ int amdgpu_vram_mgr_query_address_block_info(struct amdgpu_vram_mgr *mgr,
 {
 	struct amdgpu_vram_mgr_resource *vres;
 	struct drm_buddy_block *block;
-	u64 start, size;
+	u64 start, size, addr_begin, addr_end;
 	int ret = -ENOENT;
 
+	addr_begin = address & PAGE_MASK;
+	addr_end = address | (PAGE_SIZE - 1);
+
 	mutex_lock(&mgr->lock);
 	list_for_each_entry(vres, &mgr->allocated_vres_list, vres_node) {
 		list_for_each_entry(block, &vres->blocks, link) {
 			start = amdgpu_vram_mgr_block_start(block);
 			size = amdgpu_vram_mgr_block_size(block);
-			if ((start <= address) && (address < (start + size))) {
+			if ((start <= addr_begin) && (addr_end < (start + size))) {
 				info->start = start;
 				info->size = size;
 				memcpy(&info->task, &vres->task, sizeof(vres->task));
-- 
2.34.1



More information about the amd-gfx mailing list