diff --git a/Kernel/Devices/BXVGADevice.cpp b/Kernel/Devices/BXVGADevice.cpp index 727dcd67ef..328d2776d5 100644 --- a/Kernel/Devices/BXVGADevice.cpp +++ b/Kernel/Devices/BXVGADevice.cpp @@ -177,8 +177,11 @@ KResultOr BXVGADevice::mmap(Process& process, FileDescription&, const R REQUIRE_PROMISE(video); if (!shared) return ENODEV; - ASSERT(offset == 0); - ASSERT(range.size() == framebuffer_size_in_bytes()); + if (offset != 0) + return ENXIO; + if (range.size() != PAGE_ROUND_UP(framebuffer_size_in_bytes())) + return EOVERFLOW; + auto vmobject = AnonymousVMObject::create_for_physical_range(m_framebuffer_address, framebuffer_size_in_bytes()); if (!vmobject) return ENOMEM; diff --git a/Kernel/Devices/MBVGADevice.cpp b/Kernel/Devices/MBVGADevice.cpp index b255c1739e..55e7d176e8 100644 --- a/Kernel/Devices/MBVGADevice.cpp +++ b/Kernel/Devices/MBVGADevice.cpp @@ -56,8 +56,11 @@ KResultOr MBVGADevice::mmap(Process& process, FileDescription&, const R REQUIRE_PROMISE(video); if (!shared) return ENODEV; - ASSERT(offset == 0); - ASSERT(range.size() == framebuffer_size_in_bytes()); + if (offset != 0) + return ENXIO; + if (range.size() != PAGE_ROUND_UP(framebuffer_size_in_bytes())) + return EOVERFLOW; + auto vmobject = AnonymousVMObject::create_for_physical_range(m_framebuffer_address, framebuffer_size_in_bytes()); if (!vmobject) return ENOMEM;