qemu: change of ContextID from uint32 to uint64

The correct type used by qemu and in kernel is uint64 and this leads to
an endianess problem with ioctl system call. See the issue
https://github.com/kata-containers/runtime/issues/947

Fixes: #70

Signed-off-by: Alice Frosi <afrosi@de.ibm.com>
This commit is contained in:
Alice Frosi 2018-11-29 13:07:54 +01:00
parent 60a5f7ca7f
commit 3becff5f4e

View File

@ -1014,7 +1014,7 @@ func (bridgeDev BridgeDevice) QemuParams(config *Config) []string {
type VSOCKDevice struct { type VSOCKDevice struct {
ID string ID string
ContextID uint32 ContextID uint64
// VHostFD vhost file descriptor that holds the ContextID // VHostFD vhost file descriptor that holds the ContextID
VHostFD *os.File VHostFD *os.File
@ -1028,7 +1028,10 @@ type VSOCKDevice struct {
const ( const (
// MinimalGuestCID is the smallest valid context ID for a guest. // MinimalGuestCID is the smallest valid context ID for a guest.
MinimalGuestCID uint32 = 3 MinimalGuestCID uint64 = 3
// MaxGuestCID is the largest valid context ID for a guest.
MaxGuestCID uint64 = 1<<32 - 1
) )
const ( const (
@ -1038,7 +1041,7 @@ const (
// Valid returns true if the VSOCKDevice structure is valid and complete. // Valid returns true if the VSOCKDevice structure is valid and complete.
func (vsock VSOCKDevice) Valid() bool { func (vsock VSOCKDevice) Valid() bool {
if vsock.ID == "" || vsock.ContextID < MinimalGuestCID { if vsock.ID == "" || vsock.ContextID < MinimalGuestCID || vsock.ContextID > MaxGuestCID {
return false return false
} }