diff --git a/repos/os/src/drivers/platform/device_component.cc b/repos/os/src/drivers/platform/device_component.cc index 182e124fcf..4caae1ac24 100644 --- a/repos/os/src/drivers/platform/device_component.cc +++ b/repos/os/src/drivers/platform/device_component.cc @@ -78,15 +78,17 @@ Device_component::io_mem(unsigned idx, Range &range) if (iomem.idx != idx) return; - if (!iomem.io_mem.constructed()) - iomem.io_mem.construct(_env, - iomem.range.start, - iomem.range.size, - iomem.prefetchable); + try { + if (!iomem.io_mem.constructed()) + iomem.io_mem.construct(_env, + iomem.range.start, + iomem.range.size, + iomem.prefetchable); - range = iomem.range; - range.start &= 0xfff; - cap = iomem.io_mem->cap(); + range = iomem.range; + range.start &= 0xfff; + cap = iomem.io_mem->cap(); + } catch (Genode::Service_denied) { } }); return cap;