From b3a3e92962e238b00532c4d18a51719623d38003 Mon Sep 17 00:00:00 2001 From: Fiona Ebner Date: Tue, 10 Jan 2023 14:41:37 +0100 Subject: [PATCH] fix #4435: devices list: avoid error for undefined value When $d->{'pci_bridge'}->{devices} is undef, @-dereferencing it will die with: > Can't use an undefined value as an ARRAY reference This can happen (at least) when the VM is in 'prelaunch' state. The QAPI definition for '@PciBridgeInfo' also declares the 'devices' member as optional. Before commit 721624b ("collect device list for nested pci-bridges"), there was no issue, because $d->{'pci_bridge'}->{devices} was used in foreach, so auto-vivified if undef. Fixes: f721624b ("collect device list for nested pci-bridges") Signed-off-by: Fiona Ebner --- PVE/QemuServer.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 39fc6b0..4292da7 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -4194,7 +4194,7 @@ sub vm_devices_list { my $to_check = []; for my $d (@$devices_to_check) { $devices->{$d->{'qdev_id'}} = 1 if $d->{'qdev_id'}; - next if !$d->{'pci_bridge'}; + next if !$d->{'pci_bridge'} || !$d->{'pci_bridge'}->{devices}; $devices->{$d->{'qdev_id'}} += scalar(@{$d->{'pci_bridge'}->{devices}}); push @$to_check, @{$d->{'pci_bridge'}->{devices}}; -- 2.39.2