diff options
| author | Liam <byteslice@airmail.cc> | 2022-10-26 21:35:19 -0400 |
|---|---|---|
| committer | Liam <byteslice@airmail.cc> | 2022-10-27 08:28:02 -0400 |
| commit | 2cdfbbc07d74548527fbefd738f860ce66f52e34 (patch) | |
| tree | d80f66ca3c2f53d46bb4cc20c9fa29d377da14eb /src/core/hle/service/nvdrv/devices/nvmap.cpp | |
| parent | cdb9fe978ff29b1de2256f0d0cece550195f3fef (diff) | |
nvnflinger: release queued handles immediately on disconnection
Diffstat (limited to 'src/core/hle/service/nvdrv/devices/nvmap.cpp')
| -rw-r--r-- | src/core/hle/service/nvdrv/devices/nvmap.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/core/hle/service/nvdrv/devices/nvmap.cpp b/src/core/hle/service/nvdrv/devices/nvmap.cpp index b60679021..44388655d 100644 --- a/src/core/hle/service/nvdrv/devices/nvmap.cpp +++ b/src/core/hle/service/nvdrv/devices/nvmap.cpp @@ -251,10 +251,12 @@ NvResult nvmap::IocFree(const std::vector<u8>& input, std::vector<u8>& output) { } if (auto freeInfo{file.FreeHandle(params.handle, false)}) { - ASSERT(system.CurrentProcess() - ->PageTable() - .UnlockForDeviceAddressSpace(freeInfo->address, freeInfo->size) - .IsSuccess()); + if (freeInfo->can_unlock) { + ASSERT(system.CurrentProcess() + ->PageTable() + .UnlockForDeviceAddressSpace(freeInfo->address, freeInfo->size) + .IsSuccess()); + } params.address = freeInfo->address; params.size = static_cast<u32>(freeInfo->size); params.flags.raw = 0; |
