From a222df31baf8526344873d98e2013ac5eb0e202d Mon Sep 17 00:00:00 2001 From: Alexander Boettcher <alexander.boettcher@genode-labs.com> Date: Tue, 8 Mar 2022 16:16:52 +0100 Subject: [PATCH] platform_drv(x86): avoid exception in alloc_dma If size is zero, the platform goes out of service by: [init -> platform_drv] Error: Uncaught exception of type 'Genode::Ram_allocator::Denied' [init -> platform_drv] Warning: abort called - thread: e Issue #4450 --- .../os/src/drivers/platform/legacy/x86/pci_session_component.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/repos/os/src/drivers/platform/legacy/x86/pci_session_component.h b/repos/os/src/drivers/platform/legacy/x86/pci_session_component.h index 764d2a291a..f50d1c9852 100644 --- a/repos/os/src/drivers/platform/legacy/x86/pci_session_component.h +++ b/repos/os/src/drivers/platform/legacy/x86/pci_session_component.h @@ -835,6 +835,9 @@ class Platform::Session_component : public Rpc_object<Session> if (_env.pd().avail_ram().value < WATERMARK_RAM_QUOTA) throw Out_of_ram(); + if (!size) + return {}; + Ram_dataspace_capability ram_cap = _env_ram.alloc(size, cache); addr_t const dma_addr = _env.pd().dma_addr(ram_cap);