summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2019-03-09 14:36:52 -0500
committerGravatar bunnei2019-03-20 22:36:03 -0400
commit19330f45d3d0efbf490a436c8689f30c4fc79e44 (patch)
tree59080c865990886517466db9e76a29b6c7f5cea7 /src
parentmemory_manager: Add protections for invalid GPU addresses. (diff)
downloadyuzu-19330f45d3d0efbf490a436c8689f30c4fc79e44.tar.gz
yuzu-19330f45d3d0efbf490a436c8689f30c4fc79e44.tar.xz
yuzu-19330f45d3d0efbf490a436c8689f30c4fc79e44.zip
maxwell_dma: Check for valid source in destination before copy.
- Avoid a crash in Octopath Traveler.
Diffstat (limited to 'src')
-rw-r--r--src/video_core/engines/maxwell_dma.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/video_core/engines/maxwell_dma.cpp b/src/video_core/engines/maxwell_dma.cpp
index a0ded4c25..5cca5c29a 100644
--- a/src/video_core/engines/maxwell_dma.cpp
+++ b/src/video_core/engines/maxwell_dma.cpp
@@ -88,6 +88,16 @@ void MaxwellDMA::HandleCopy() {
88 auto source_ptr{memory_manager.GetPointer(source)}; 88 auto source_ptr{memory_manager.GetPointer(source)};
89 auto dst_ptr{memory_manager.GetPointer(dest)}; 89 auto dst_ptr{memory_manager.GetPointer(dest)};
90 90
91 if (!source_ptr) {
92 LOG_ERROR(HW_GPU, "source_ptr is invalid");
93 return;
94 }
95
96 if (!dst_ptr) {
97 LOG_ERROR(HW_GPU, "dst_ptr is invalid");
98 return;
99 }
100
91 const auto FlushAndInvalidate = [&](u32 src_size, u64 dst_size) { 101 const auto FlushAndInvalidate = [&](u32 src_size, u64 dst_size) {
92 // TODO(Subv): For now, manually flush the regions until we implement GPU-accelerated 102 // TODO(Subv): For now, manually flush the regions until we implement GPU-accelerated
93 // copying. 103 // copying.