From 67ecc11c44138152fc3b6cbfb989c1b6ea1ee2c7 Mon Sep 17 00:00:00 2001 From: Kevin Klues Date: Sat, 4 Jul 2020 12:33:01 +0000 Subject: [PATCH] Harden callGetPreferredAllocationIfAvailable() return value Previously, we didn't check the contents of the result after calling out to the plugin endpoint. This could have resulted in errors if the plugin returned either 'nil' or an empty result. This patch fixes this. --- pkg/kubelet/cm/devicemanager/manager.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go index ad56ca57ffc..b2f16b0c0e9 100644 --- a/pkg/kubelet/cm/devicemanager/manager.go +++ b/pkg/kubelet/cm/devicemanager/manager.go @@ -997,8 +997,10 @@ func (m *ManagerImpl) callGetPreferredAllocationIfAvailable(podUID, contName, re if err != nil { return nil, fmt.Errorf("device plugin GetPreferredAllocation rpc failed with err: %v", err) } - // TODO: Add metrics support for init RPC - return sets.NewString(resp.ContainerResponses[0].DeviceIDs...), nil + if resp != nil && len(resp.ContainerResponses) > 0 { + return sets.NewString(resp.ContainerResponses[0].DeviceIDs...), nil + } + return sets.NewString(), nil } // sanitizeNodeAllocatable scans through allocatedDevices in the device manager