diff --git a/src/drivers/virtio/transport/pci.rs b/src/drivers/virtio/transport/pci.rs index 2f250bd525..53d3a3728d 100644 --- a/src/drivers/virtio/transport/pci.rs +++ b/src/drivers/virtio/transport/pci.rs @@ -690,14 +690,15 @@ fn read_caps(device: &PciDevice) -> Result, PciErro }) .map(|addr| CapData::read(addr, device.access()).unwrap()) .filter(|cap| cap.cfg_type != CapCfgType::Pci) - .map(|cap| { + .flat_map(|cap| { let slot = cap.bar; - let (addr, size) = device.memory_map_bar(slot, true).unwrap(); - PciCap { - bar: VirtioPciBar::new(slot, addr.as_u64(), size.try_into().unwrap()), - dev_id: device_id, - cap, - } + device + .memory_map_bar(slot, true) + .map(|(addr, size)| PciCap { + bar: VirtioPciBar::new(slot, addr.as_u64(), size.try_into().unwrap()), + dev_id: device_id, + cap, + }) }) .collect::>();