From f4b9e54b2280eea66fe449416251d6c50ce0d3a8 Mon Sep 17 00:00:00 2001 From: Zephyron Date: Sat, 1 Feb 2025 21:50:33 +1000 Subject: common/nvdrv: improve memory validation and error handling Implements several improvements to memory handling and validation: - host_memory: Add IsValidMapping() and IsDirectMappingEnabled() methods to validate memory access - host_memory: Fix virtual base offset calculation to use proper pointer arithmetic - host_memory: Add size field to track allocation size - nvhost_ctrl_gpu: Return InvalidState instead of InvalidValue for TPC mask buffer size validation - Update copyright year for citron The changes improve memory safety by adding explicit validation checks and fixing pointer arithmetic in the virtual memory implementation. --- src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/core') diff --git a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp index bbf77c5ad..a83cc6b6a 100644 --- a/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp +++ b/src/core/hle/service/nvdrv/devices/nvhost_ctrl_gpu.cpp @@ -270,7 +270,7 @@ NvResult nvhost_ctrl_gpu::GetTpcMasks2(IoctlGetTpcMasks& params) { // Validate input parameters if (params.mask_buf_size == 0 || params.mask_buf_size > params.tpc_mask_buf.size()) { LOG_ERROR(Service_NVDRV, "Invalid mask buffer size {}", params.mask_buf_size); - return NvResult::InvalidValue; + return NvResult::InvalidState; } // Set up TPC mask values based on GPU configuration -- cgit v1.2.3