Skip to content
This repository was archived by the owner on Jan 28, 2023. It is now read-only.

Commit 548bd77

Browse files
committed
Fixed ioctl access codes
Signed-off-by: Alexandro Sanchez Bach <[email protected]>
1 parent 8032855 commit 548bd77

File tree

6 files changed

+38
-39
lines changed

6 files changed

+38
-39
lines changed

include/hax_interface.h

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -120,50 +120,46 @@
120120
* - HAX_IOCTL_EXTENSION (0x80) Extension-specific ioctl.
121121
* - type: User argument type.
122122
*/
123-
#define HAX_IOCTL_VERSION \
124-
HAX_IOCTL(HAX_IOWR, 0x00, struct hax_module_version)
123+
#define HAX_IOCTL_GET_API_VERSION \
124+
HAX_IOCTL(HAX_IOR, 0x00, struct hax_module_version)
125125
#define HAX_IOCTL_CREATE_VM \
126-
HAX_IOCTL(HAX_IOWR, 0x01, uint32_t)
126+
HAX_IOCTL(HAX_IOR, 0x01, uint32_t)
127127
#define HAX_IOCTL_DESTROY_VM \
128128
HAX_IOCTL(HAX_IOW, 0x02, uint32_t)
129129
#define HAX_IOCTL_CAPABILITY \
130130
HAX_IOCTL(HAX_IOR, 0x03, struct hax_capabilityinfo)
131-
#define HAX_IOCTL_SET_MEMLIMIT \
132-
HAX_IOCTL(HAX_IOWR, 0x04, struct hax_set_memlimit)
133131

134-
#define HAX_VM_IOCTL_VCPU_CREATE \
135-
HAX_IOCTL(HAX_IOWR, 0x00, uint32_t)
136-
#define HAX_VM_IOCTL_ALLOC_RAM \
137-
HAX_IOCTL(HAX_IOWR, 0x01, struct hax_alloc_ram_info)
132+
#define HAX_VM_IOCTL_CREATE_VCPU \
133+
HAX_IOCTL(HAX_IOW, 0x00, uint32_t)
134+
#define HAX_VM_IOCTL_DESTROY_VCPU \
135+
HAX_IOCTL(HAX_IOW, 0x01, uint32_t)
138136
#define HAX_VM_IOCTL_SET_RAM \
139-
HAX_IOCTL(HAX_IOWR, 0x02, struct hax_set_ram_info)
140-
#define HAX_VM_IOCTL_VCPU_DESTROY \
141-
HAX_IOCTL(HAX_IOR, 0x03, uint32_t)
137+
HAX_IOCTL(HAX_IOW, 0x02, struct hax_set_ram_info)
142138
#define HAX_VM_IOCTL_ADD_RAMBLOCK \
143-
HAX_IOCTL(HAX_IOW, 0x04, struct hax_ramblock_info)
139+
HAX_IOCTL(HAX_IOW, 0x03, struct hax_ramblock_info)
144140
#define HAX_VM_IOCTL_SET_RAM2 \
145-
HAX_IOCTL(HAX_IOWR, 0x05, struct hax_set_ram_info2)
141+
HAX_IOCTL(HAX_IOW, 0x04, struct hax_set_ram_info2)
146142
#define HAX_VM_IOCTL_PROTECT_RAM \
147-
HAX_IOCTL(HAX_IOWR, 0x06, struct hax_protect_ram_info)
143+
HAX_IOCTL(HAX_IOW, 0x05, struct hax_protect_ram_info)
148144

149145
#define HAX_VCPU_IOCTL_RUN \
150146
HAX_IOCTL(HAX_IO, 0x00, HAX_UNUSED)
151147
#define HAX_VCPU_IOCTL_SETUP_TUNNEL \
152-
HAX_IOCTL(HAX_IOWR, 0x01, struct hax_tunnel_info)
148+
HAX_IOCTL(HAX_IOR, 0x01, struct hax_tunnel_info)
153149
#define HAX_VCPU_IOCTL_GET_REGS \
154-
HAX_IOCTL(HAX_IOWR, 0x02, struct vcpu_state_t)
150+
HAX_IOCTL(HAX_IOR, 0x02, struct vcpu_state_t)
155151
#define HAX_VCPU_IOCTL_SET_REGS \
156-
HAX_IOCTL(HAX_IOWR, 0x03, struct vcpu_state_t)
152+
HAX_IOCTL(HAX_IOW, 0x03, struct vcpu_state_t)
157153
#define HAX_VCPU_IOCTL_GET_FPU \
158154
HAX_IOCTL(HAX_IOR, 0x04, struct fx_layout)
159155
#define HAX_VCPU_IOCTL_SET_FPU \
160156
HAX_IOCTL(HAX_IOW, 0x05, struct fx_layout)
161157
#define HAX_VCPU_IOCTL_GET_MSRS \
162158
HAX_IOCTL(HAX_IOWR, 0x06, struct hax_msr_data)
163159
#define HAX_VCPU_IOCTL_SET_MSRS \
164-
HAX_IOCTL(HAX_IOWR, 0x07, struct hax_msr_data)
160+
HAX_IOCTL(HAX_IOW, 0x07, struct hax_msr_data)
165161
#define HAX_VCPU_IOCTL_INTERRUPT \
166-
HAX_IOCTL(HAX_IOWR, 0x08, uint32_t)
162+
HAX_IOCTL(HAX_IOW, 0x08, uint32_t)
167163
#define HAX_VCPU_IOCTL_DEBUG \
168164
HAX_IOCTL(HAX_IOW, 0x09, struct hax_debug_t)
169165

include/windows/hax_interface_windows.h

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,19 @@
3333

3434
#define HAX_DEVICE_TYPE 0x8000
3535

36+
#define HAX_IO \
37+
(FILE_ANY_ACCESS)
38+
#define HAX_IOR \
39+
(FILE_READ_DATA)
40+
#define HAX_IOW \
41+
(FILE_WRITE_DATA)
42+
#define HAX_IOWR \
43+
(FILE_WRITE_DATA | FILE_READ_DATA)
44+
3645
#define HAX_LEGACY_IOCTL(access, code_posix, code_windows, type) \
37-
CTL_CODE(0x4000, code, METHOD_BUFFERED, FILE_ANY_ACCESS)
46+
CTL_CODE(0x4000, code_windows, METHOD_BUFFERED, FILE_ANY_ACCESS)
3847
#define HAX_IOCTL(access, code, type) \
39-
CTL_CODE(HAX_DEVICE_TYPE, (0x800 | code), METHOD_BUFFERED, FILE_ANY_ACCESS)
48+
CTL_CODE(HAX_DEVICE_TYPE, (0x800 | code), METHOD_BUFFERED, access)
4049

4150
/*
4251
* This is for MAC compatible mode, so should not be used

platforms/darwin/com_intel_hax_ui.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ static int hax_vm_ioctl(dev_t dev, ulong cmd, caddr_t data, int flag,
377377

378378
switch (cmd) {
379379
case HAX_VM_IOCTL_VCPU_CREATE__LEGACY:
380-
case HAX_VM_IOCTL_VCPU_CREATE: {
380+
case HAX_VM_IOCTL_CREATE_VCPU: {
381381
uint32_t vcpu_id, vm_id;
382382
struct vcpu_t *cvcpu;
383383

@@ -393,8 +393,7 @@ static int hax_vm_ioctl(dev_t dev, ulong cmd, caddr_t data, int flag,
393393
}
394394
break;
395395
}
396-
case HAX_VM_IOCTL_ALLOC_RAM__LEGACY:
397-
case HAX_VM_IOCTL_ALLOC_RAM: {
396+
case HAX_VM_IOCTL_ALLOC_RAM__LEGACY: {
398397
struct hax_alloc_ram_info *info;
399398
info = (struct hax_alloc_ram_info *)data;
400399
hax_info("IOCTL_ALLOC_RAM: vm_id=%d, va=0x%llx, size=0x%x,"
@@ -530,7 +529,7 @@ static int hax_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag,
530529

531530
switch (cmd) {
532531
case HAX_IOCTL_VERSION__LEGACY:
533-
case HAX_IOCTL_VERSION: {
532+
case HAX_IOCTL_GET_API_VERSION: {
534533
struct hax_module_version *version;
535534
version = (struct hax_module_version *)data;
536535
version->cur_version = HAX_CUR_VERSION;
@@ -544,8 +543,7 @@ static int hax_ioctl(dev_t dev, u_long cmd, caddr_t data, int flag,
544543
hax_get_capability(capab, sizeof(struct hax_capabilityinfo), NULL);
545544
break;
546545
}
547-
case HAX_IOCTL_SET_MEMLIMIT__LEGACY:
548-
case HAX_IOCTL_SET_MEMLIMIT: {
546+
case HAX_IOCTL_SET_MEMLIMIT__LEGACY: {
549547
struct hax_set_memlimit *memlimit;
550548
memlimit = (struct hax_set_memlimit*)data;
551549
ret = hax_set_memlimit(memlimit, sizeof(struct hax_set_memlimit),

platforms/linux/components.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ static long hax_vm_ioctl(struct file *filp, unsigned int cmd,
521521

522522
switch (cmd) {
523523
case HAX_VM_IOCTL_VCPU_CREATE__LEGACY:
524-
case HAX_VM_IOCTL_VCPU_CREATE: {
524+
case HAX_VM_IOCTL_CREATE_VCPU: {
525525
uint32_t vcpu_id, vm_id;
526526
struct vcpu_t *cvcpu;
527527

@@ -538,8 +538,7 @@ static long hax_vm_ioctl(struct file *filp, unsigned int cmd,
538538
}
539539
break;
540540
}
541-
case HAX_VM_IOCTL_ALLOC_RAM__LEGACY:
542-
case HAX_VM_IOCTL_ALLOC_RAM: {
541+
case HAX_VM_IOCTL_ALLOC_RAM__LEGACY: {
543542
struct hax_alloc_ram_info info;
544543
if (copy_from_user(&info, argp, sizeof(info))) {
545544
ret = -EFAULT;

platforms/linux/hax_entry.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ static long hax_dev_ioctl(struct file *filp, unsigned int cmd,
7070

7171
switch (cmd) {
7272
case HAX_IOCTL_VERSION__LEGACY:
73-
case HAX_IOCTL_VERSION: {
73+
case HAX_IOCTL_GET_API_VERSION: {
7474
struct hax_module_version version = {};
7575
version.cur_version = HAX_CUR_VERSION;
7676
version.compat_version = HAX_COMPAT_VERSION;
@@ -86,8 +86,7 @@ static long hax_dev_ioctl(struct file *filp, unsigned int cmd,
8686
return -EFAULT;
8787
break;
8888
}
89-
case HAX_IOCTL_SET_MEMLIMIT__LEGACY:
90-
case HAX_IOCTL_SET_MEMLIMIT: {
89+
case HAX_IOCTL_SET_MEMLIMIT__LEGACY: {
9190
struct hax_set_memlimit memlimit = {};
9291
if (copy_from_user(&memlimit, argp, sizeof(memlimit)))
9392
return -EFAULT;

platforms/windows/hax_entry.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ NTSTATUS HaxVmControl(PDEVICE_OBJECT DeviceObject, struct hax_vm_windows *ext,
484484

485485
switch (irpSp->Parameters.DeviceIoControl.IoControlCode) {
486486
case HAX_VM_IOCTL_VCPU_CREATE__LEGACY:
487-
case HAX_VM_IOCTL_VCPU_CREATE: {
487+
case HAX_VM_IOCTL_CREATE_VCPU: {
488488
if (inBufLength < sizeof(uint32_t)) {
489489
ret = STATUS_INVALID_PARAMETER;
490490
goto done;
@@ -500,8 +500,7 @@ NTSTATUS HaxVmControl(PDEVICE_OBJECT DeviceObject, struct hax_vm_windows *ext,
500500
ret = STATUS_SUCCESS;
501501
break;
502502
}
503-
case HAX_VM_IOCTL_ALLOC_RAM__LEGACY:
504-
case HAX_VM_IOCTL_ALLOC_RAM: {
503+
case HAX_VM_IOCTL_ALLOC_RAM__LEGACY: {
505504
struct hax_alloc_ram_info *info;
506505
if (inBufLength < sizeof(struct hax_alloc_ram_info)) {
507506
ret = STATUS_INVALID_PARAMETER;
@@ -651,7 +650,7 @@ NTSTATUS HaxDeviceControl(PDEVICE_OBJECT DeviceObject,
651650

652651
switch (irpSp->Parameters.DeviceIoControl.IoControlCode) {
653652
case HAX_IOCTL_VERSION__LEGACY:
654-
case HAX_IOCTL_VERSION:
653+
case HAX_IOCTL_GET_API_VERSION:
655654
if (outBufLength < sizeof(struct hax_module_version)) {
656655
ret = STATUS_INVALID_PARAMETER;
657656
goto done;
@@ -679,7 +678,6 @@ NTSTATUS HaxDeviceControl(PDEVICE_OBJECT DeviceObject,
679678
break;
680679

681680
case HAX_IOCTL_SET_MEMLIMIT__LEGACY:
682-
case HAX_IOCTL_SET_MEMLIMIT:
683681
if (inBufLength < sizeof(struct hax_set_memlimit)) {
684682
ret = STATUS_INVALID_PARAMETER;
685683
goto done;

0 commit comments

Comments
 (0)