Skip to content

Commit 59c07b1

Browse files
committed
Merge tag 'v4.9.34' into linux-4.9.x-unofficial_grsec
This is the 4.9.34 stable release -- which tend to be rather unstable, according to the various regression reports due to upstream's Stack Clash "fix" ([1], [2], [3]). In return I've essentially reverted commit 27f9070614aa ("mm: larger stack guard gap, between vmas") and its follow-up commits. PaX (and grsec) did handle this just fine since 2010 (see [4]) and even have a sysctl to allow tweaking the gap size at runtime. But, at least, I took the commit as a hint to extend PaX 'n grsec's coverage somewhat to other arches like ARC, S390,... -- untested, though. The newly introduced stack_guard_gap kernel command line parameter was recoined to apply to the existing PaX mechanism and takes a byte value instead of a number of pages, e.g. use 'stack_guard_gap=1M' to mirror upstream's 1MiB gap. It's now still the 64KiB gap which is sufficient, as the problem can't be solved in the kernel anyways. You still need to compile your userland apps with -fstack-check to make unbounded / large / attacker-controlled alloca()s trap on the guard area instead of jumping over it. Signed-off-by: Mathias Krause <[email protected]> [1] rust-lang/rust#43052 [2] https://lwn.net/Articles/727206/ [3] https://lwn.net/Articles/727703/ [4] https://grsecurity.net/~spender/stack_gap_fix.txt Conflicts: arch/arm/mm/mmap.c arch/frv/mm/elf-fdpic.c arch/mips/mm/mmap.c arch/powerpc/mm/slice.c arch/sh/mm/mmap.c arch/sparc/kernel/sys_sparc_64.c arch/sparc/mm/hugetlbpage.c arch/x86/kernel/sys_x86_64.c arch/x86/mm/hugetlbpage.c fs/hugetlbfs/inode.c fs/proc/task_mmu.c mm/mmap.c
2 parents 114ed8d + 493ecd5 commit 59c07b1

File tree

73 files changed

+346
-199
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+346
-199
lines changed

Documentation/kernel-parameters.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3971,6 +3971,16 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
39713971
spia_pedr=
39723972
spia_peddr=
39733973

3974+
stack_guard_gap=nn[KMG] [MM]
3975+
Override the default heap stack gap protection range.
3976+
The value defines how many bytes prior to (for stacks
3977+
growing down) resp. after (for stacks growing up) the
3978+
main stack are reserved for no other mapping. The
3979+
granularity is in bytes, rounded up to the page size
3980+
of the given architecture. The default value is 64 kB.
3981+
This value can also be changed at runtime through the
3982+
vm.heap_stack_gap sysctl.
3983+
39743984
stacktrace [FTRACE]
39753985
Enabled the stack tracer on boot up.
39763986

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 4
22
PATCHLEVEL = 9
3-
SUBLEVEL = 33
3+
SUBLEVEL = 34
44
EXTRAVERSION =
55
NAME = Roaring Lionus
66

arch/arc/mm/mmap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
6363
addr = PAGE_ALIGN(addr);
6464

6565
vma = find_vma(mm, addr);
66-
if (TASK_SIZE - len >= addr &&
67-
(!vma || addr + len <= vma->vm_start))
66+
if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, 0))
6867
return addr;
6968
}
7069

@@ -74,5 +73,6 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
7473
info.high_limit = TASK_SIZE;
7574
info.align_mask = do_align ? (PAGE_MASK & (SHMLBA - 1)) : 0;
7675
info.align_offset = pgoff << PAGE_SHIFT;
76+
info.threadstack_offset = 0;
7777
return vm_unmapped_area(&info);
7878
}

arch/mips/boot/Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,19 +128,19 @@ quiet_cmd_cpp_its_S = ITS $@
128128
-DADDR_BITS=$(ADDR_BITS) \
129129
-DADDR_CELLS=$(itb_addr_cells)
130130

131-
$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
131+
$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
132132
$(call if_changed_dep,cpp_its_S,none,vmlinux.bin)
133133

134-
$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
134+
$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
135135
$(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz)
136136

137-
$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
137+
$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
138138
$(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2)
139139

140-
$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
140+
$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
141141
$(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma)
142142

143-
$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
143+
$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S $(VMLINUX) FORCE
144144
$(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo)
145145

146146
quiet_cmd_itb-image = ITB $@

arch/mips/kernel/branch.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,8 +804,10 @@ int __compute_return_epc_for_insn(struct pt_regs *regs,
804804
break;
805805
}
806806
/* Compact branch: BNEZC || JIALC */
807-
if (insn.i_format.rs)
807+
if (!insn.i_format.rs) {
808+
/* JIALC: set $31/ra */
808809
regs->regs[31] = epc + 4;
810+
}
809811
regs->cp0_epc += 8;
810812
break;
811813
#endif

arch/parisc/kernel/sys_parisc.c

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
121121
addr = PAGE_ALIGN(addr);
122122

123123
vma = find_vma(mm, addr);
124-
if (task_size - len >= addr &&
125-
(!vma || addr + len <= vma->vm_start))
124+
if (task_size - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
126125
goto found_addr;
127126
}
128127

@@ -186,9 +185,9 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
186185
addr = COLOR_ALIGN(addr, last_mmap, pgoff);
187186
else
188187
addr = PAGE_ALIGN(addr);
188+
189189
vma = find_vma(mm, addr);
190-
if (TASK_SIZE - len >= addr &&
191-
(!vma || addr + len <= vma->vm_start))
190+
if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, offset))
192191
goto found_addr;
193192
}
194193

arch/powerpc/mm/hugetlbpage-radix.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
6464
if (addr) {
6565
addr = ALIGN(addr, huge_page_size(h));
6666
vma = find_vma(mm, addr);
67-
if (TASK_SIZE - len >= addr &&
68-
(!vma || addr + len <= vma->vm_start))
67+
if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, 0))
6968
return addr;
7069
}
7170
/*
@@ -78,5 +77,6 @@ radix__hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
7877
info.high_limit = current->mm->mmap_base;
7978
info.align_mask = PAGE_MASK & ~huge_page_mask(h);
8079
info.align_offset = 0;
80+
info.threadstack_offset = 0;
8181
return vm_unmapped_area(&info);
8282
}

arch/powerpc/mm/mmap.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,7 @@ radix__arch_get_unmapped_area(struct file *filp, unsigned long addr,
105105
if (addr) {
106106
addr = PAGE_ALIGN(addr);
107107
vma = find_vma(mm, addr);
108-
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
109-
(!vma || addr + len <= vma->vm_start))
108+
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr && check_heap_stack_gap(vma, addr, len, 0))
110109
return addr;
111110
}
112111

@@ -115,6 +114,7 @@ radix__arch_get_unmapped_area(struct file *filp, unsigned long addr,
115114
info.low_limit = mm->mmap_base;
116115
info.high_limit = TASK_SIZE;
117116
info.align_mask = 0;
117+
info.threadstack_offset = 0;
118118
return vm_unmapped_area(&info);
119119
}
120120

@@ -141,8 +141,7 @@ radix__arch_get_unmapped_area_topdown(struct file *filp,
141141
if (addr) {
142142
addr = PAGE_ALIGN(addr);
143143
vma = find_vma(mm, addr);
144-
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
145-
(!vma || addr + len <= vma->vm_start))
144+
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr && check_heap_stack_gap(vma, addr, len, 0))
146145
return addr;
147146
}
148147

@@ -151,6 +150,7 @@ radix__arch_get_unmapped_area_topdown(struct file *filp,
151150
info.low_limit = max(PAGE_SIZE, mmap_min_addr);
152151
info.high_limit = mm->mmap_base;
153152
info.align_mask = 0;
153+
info.threadstack_offset = 0;
154154
addr = vm_unmapped_area(&info);
155155

156156
/*

arch/s390/mm/mmap.c

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,22 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
8787
struct mm_struct *mm = current->mm;
8888
struct vm_area_struct *vma;
8989
struct vm_unmapped_area_info info;
90+
unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
9091

9192
if (len > TASK_SIZE - mmap_min_addr)
9293
return -ENOMEM;
9394

9495
if (flags & MAP_FIXED)
9596
return addr;
9697

98+
#ifdef CONFIG_PAX_RANDMMAP
99+
if (!(mm->pax_flags & MF_PAX_RANDMMAP))
100+
#endif
101+
97102
if (addr) {
98103
addr = PAGE_ALIGN(addr);
99104
vma = find_vma(mm, addr);
100-
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
101-
(!vma || addr + len <= vma->vm_start))
105+
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr && check_heap_stack_gap(vma, addr, len, offset))
102106
return addr;
103107
}
104108

@@ -111,6 +115,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
111115
else
112116
info.align_mask = 0;
113117
info.align_offset = pgoff << PAGE_SHIFT;
118+
info.threadstack_offset = offset;
114119
return vm_unmapped_area(&info);
115120
}
116121

@@ -123,6 +128,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
123128
struct mm_struct *mm = current->mm;
124129
unsigned long addr = addr0;
125130
struct vm_unmapped_area_info info;
131+
unsigned long offset = gr_rand_threadstack_offset(mm, filp, flags);
126132

127133
/* requested length too big for entire address space */
128134
if (len > TASK_SIZE - mmap_min_addr)
@@ -131,12 +137,15 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
131137
if (flags & MAP_FIXED)
132138
return addr;
133139

140+
#ifdef CONFIG_PAX_RANDMMAP
141+
if (!(mm->pax_flags & MF_PAX_RANDMMAP))
142+
#endif
143+
134144
/* requesting a specific address */
135145
if (addr) {
136146
addr = PAGE_ALIGN(addr);
137147
vma = find_vma(mm, addr);
138-
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr &&
139-
(!vma || addr + len <= vma->vm_start))
148+
if (TASK_SIZE - len >= addr && addr >= mmap_min_addr && check_heap_stack_gap(vma, addr, len, offset))
140149
return addr;
141150
}
142151

@@ -149,6 +158,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
149158
else
150159
info.align_mask = 0;
151160
info.align_offset = pgoff << PAGE_SHIFT;
161+
info.threadstack_offset = offset;
152162
addr = vm_unmapped_area(&info);
153163

154164
/*

arch/sh/mm/mmap.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
7777
info.high_limit = TASK_SIZE;
7878
info.align_mask = do_colour_align ? (PAGE_MASK & shm_align_mask) : 0;
7979
info.align_offset = pgoff << PAGE_SHIFT;
80+
info.threadstack_offset = offset;
8081
return vm_unmapped_area(&info);
8182
}
8283

@@ -131,6 +132,7 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr0,
131132
info.high_limit = mm->mmap_base;
132133
info.align_mask = do_colour_align ? (PAGE_MASK & shm_align_mask) : 0;
133134
info.align_offset = pgoff << PAGE_SHIFT;
135+
info.threadstack_offset = offset;
134136
addr = vm_unmapped_area(&info);
135137

136138
/*

arch/tile/mm/hugetlbpage.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,8 +233,7 @@ unsigned long hugetlb_get_unmapped_area(struct file *file, unsigned long addr,
233233
if (addr) {
234234
addr = ALIGN(addr, huge_page_size(h));
235235
vma = find_vma(mm, addr);
236-
if (TASK_SIZE - len >= addr &&
237-
(!vma || addr + len <= vma->vm_start))
236+
if (TASK_SIZE - len >= addr && check_heap_stack_gap(vma, addr, len, 0))
238237
return addr;
239238
}
240239
if (current->mm->get_unmapped_area == arch_get_unmapped_area)

arch/x86/mm/numa_32.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,6 @@ void __init initmem_init(void)
100100
printk(KERN_DEBUG "High memory starts at vaddr %08lx\n",
101101
(ulong) pfn_to_kaddr(highstart_pfn));
102102

103+
__vmalloc_start_set = true;
103104
setup_bootmem_allocator();
104105
}

arch/xtensa/kernel/syscall.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
8787
/* At this point: (!vmm || addr < vmm->vm_end). */
8888
if (TASK_SIZE - len < addr)
8989
return -ENOMEM;
90-
if (!vmm || addr + len <= vmm->vm_start)
90+
if (check_heap_stack_gap(vma, addr, len, 0))
9191
return addr;
9292
addr = vmm->vm_end;
9393
if (flags & MAP_SHARED)

drivers/char/tpm/tpm_ibmvtpm.c

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,8 @@ static int tpm_ibmvtpm_remove(struct vio_dev *vdev)
295295
}
296296

297297
kfree(ibmvtpm);
298+
/* For tpm_ibmvtpm_get_desired_dma */
299+
dev_set_drvdata(&vdev->dev, NULL);
298300

299301
return 0;
300302
}
@@ -309,13 +311,16 @@ static int tpm_ibmvtpm_remove(struct vio_dev *vdev)
309311
static unsigned long tpm_ibmvtpm_get_desired_dma(struct vio_dev *vdev)
310312
{
311313
struct tpm_chip *chip = dev_get_drvdata(&vdev->dev);
312-
struct ibmvtpm_dev *ibmvtpm = dev_get_drvdata(&chip->dev);
314+
struct ibmvtpm_dev *ibmvtpm;
313315

314-
/* ibmvtpm initializes at probe time, so the data we are
315-
* asking for may not be set yet. Estimate that 4K required
316-
* for TCE-mapped buffer in addition to CRQ.
317-
*/
318-
if (!ibmvtpm)
316+
/*
317+
* ibmvtpm initializes at probe time, so the data we are
318+
* asking for may not be set yet. Estimate that 4K required
319+
* for TCE-mapped buffer in addition to CRQ.
320+
*/
321+
if (chip)
322+
ibmvtpm = dev_get_drvdata(&chip->dev);
323+
else
319324
return CRQ_RES_BUF_SIZE + PAGE_SIZE;
320325

321326
return CRQ_RES_BUF_SIZE + ibmvtpm->rtce_size;

drivers/cpufreq/cpufreq_conservative.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,8 @@ static ssize_t store_down_threshold(struct gov_attr_set *attr_set,
169169
int ret;
170170
ret = sscanf(buf, "%u", &input);
171171

172-
/* cannot be lower than 11 otherwise freq will not fall */
173-
if (ret != 1 || input < 11 || input > 100 ||
172+
/* cannot be lower than 1 otherwise freq will not fall */
173+
if (ret != 1 || input < 1 || input > 100 ||
174174
input >= dbs_data->up_threshold)
175175
return -EINVAL;
176176

drivers/gpu/drm/amd/amdgpu/dce_v10_0.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,8 +1290,11 @@ static void dce_v10_0_program_watermarks(struct amdgpu_device *adev,
12901290
u32 tmp, wm_mask, lb_vblank_lead_lines = 0;
12911291

12921292
if (amdgpu_crtc->base.enabled && num_heads && mode) {
1293-
active_time = 1000000UL * (u32)mode->crtc_hdisplay / (u32)mode->clock;
1294-
line_time = min((u32) (1000000UL * (u32)mode->crtc_htotal / (u32)mode->clock), (u32)65535);
1293+
active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
1294+
(u32)mode->clock);
1295+
line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
1296+
(u32)mode->clock);
1297+
line_time = min(line_time, (u32)65535);
12951298

12961299
/* watermark for high clocks */
12971300
if (adev->pm.dpm_enabled) {

drivers/gpu/drm/amd/amdgpu/dce_v11_0.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,8 +1257,11 @@ static void dce_v11_0_program_watermarks(struct amdgpu_device *adev,
12571257
u32 tmp, wm_mask, lb_vblank_lead_lines = 0;
12581258

12591259
if (amdgpu_crtc->base.enabled && num_heads && mode) {
1260-
active_time = 1000000UL * (u32)mode->crtc_hdisplay / (u32)mode->clock;
1261-
line_time = min((u32) (1000000UL * (u32)mode->crtc_htotal / (u32)mode->clock), (u32)65535);
1260+
active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
1261+
(u32)mode->clock);
1262+
line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
1263+
(u32)mode->clock);
1264+
line_time = min(line_time, (u32)65535);
12621265

12631266
/* watermark for high clocks */
12641267
if (adev->pm.dpm_enabled) {

drivers/gpu/drm/amd/amdgpu/dce_v6_0.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,8 +1054,11 @@ static void dce_v6_0_program_watermarks(struct amdgpu_device *adev,
10541054
fixed20_12 a, b, c;
10551055

10561056
if (amdgpu_crtc->base.enabled && num_heads && mode) {
1057-
active_time = 1000000UL * (u32)mode->crtc_hdisplay / (u32)mode->clock;
1058-
line_time = min((u32) (1000000UL * (u32)mode->crtc_htotal / (u32)mode->clock), (u32)65535);
1057+
active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
1058+
(u32)mode->clock);
1059+
line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
1060+
(u32)mode->clock);
1061+
line_time = min(line_time, (u32)65535);
10591062
priority_a_cnt = 0;
10601063
priority_b_cnt = 0;
10611064

drivers/gpu/drm/amd/amdgpu/dce_v8_0.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,8 +1211,11 @@ static void dce_v8_0_program_watermarks(struct amdgpu_device *adev,
12111211
u32 tmp, wm_mask, lb_vblank_lead_lines = 0;
12121212

12131213
if (amdgpu_crtc->base.enabled && num_heads && mode) {
1214-
active_time = 1000000UL * (u32)mode->crtc_hdisplay / (u32)mode->clock;
1215-
line_time = min((u32) (1000000UL * (u32)mode->crtc_htotal / (u32)mode->clock), (u32)65535);
1214+
active_time = (u32) div_u64((u64)mode->crtc_hdisplay * 1000000,
1215+
(u32)mode->clock);
1216+
line_time = (u32) div_u64((u64)mode->crtc_htotal * 1000000,
1217+
(u32)mode->clock);
1218+
line_time = min(line_time, (u32)65535);
12161219

12171220
/* watermark for high clocks */
12181221
if (adev->pm.dpm_enabled) {

drivers/gpu/drm/i915/i915_pvinfo.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,6 @@
3636
#define VGT_VERSION_MAJOR 1
3737
#define VGT_VERSION_MINOR 0
3838

39-
#define INTEL_VGT_IF_VERSION_ENCODE(major, minor) ((major) << 16 | (minor))
40-
#define INTEL_VGT_IF_VERSION \
41-
INTEL_VGT_IF_VERSION_ENCODE(VGT_VERSION_MAJOR, VGT_VERSION_MINOR)
42-
4339
/*
4440
* notifications from guest to vgpu device model
4541
*/
@@ -55,8 +51,8 @@ enum vgt_g2v_type {
5551

5652
struct vgt_if {
5753
u64 magic; /* VGT_MAGIC */
58-
uint16_t version_major;
59-
uint16_t version_minor;
54+
u16 version_major;
55+
u16 version_minor;
6056
u32 vgt_id; /* ID of vGT instance */
6157
u32 rsv1[12]; /* pad to offset 0x40 */
6258
/*

0 commit comments

Comments
 (0)