Skip to content

Commit 24c2602

Browse files
author
Zexing Jiang
committed
fix: data race in configureDevices with PropertyCollector
Use cloneDevice() to create a deep copy of the device list before modification, preventing race between AssignController writes and PropertyCollector's deepCopy reads.. Signed-off-by: Zexing Jiang <zexing.jiang@broadcom.com>
1 parent 1f9b210 commit 24c2602

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

simulator/virtual_machine.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2086,7 +2086,8 @@ func (vm *VirtualMachine) updateCrypto(
20862086
func (vm *VirtualMachine) configureDevices(ctx *Context, spec *types.VirtualMachineConfigSpec) types.BaseMethodFault {
20872087
var changes []types.PropertyChange
20882088
field := mo.Field{Path: "config.hardware.device"}
2089-
devices := object.VirtualDeviceList(vm.Config.Hardware.Device)
2089+
// copy devices to prevent data race with PropertyCollector's deepCopy
2090+
devices := object.VirtualDeviceList(vm.cloneDevice())
20902091

20912092
var err types.BaseMethodFault
20922093
for i, change := range spec.DeviceChange {

0 commit comments

Comments
 (0)