summarylogtreecommitdiffstats
path: root/0013-kernel-6.3.patch
diff options
context:
space:
mode:
Diffstat (limited to '0013-kernel-6.3.patch')
-rw-r--r--0013-kernel-6.3.patch106
1 files changed, 106 insertions, 0 deletions
diff --git a/0013-kernel-6.3.patch b/0013-kernel-6.3.patch
new file mode 100644
index 000000000000..86bdc01f9917
--- /dev/null
+++ b/0013-kernel-6.3.patch
@@ -0,0 +1,106 @@
+--- a/kernel/nv-mmap.c 2023-05-03 11:48:48.481814709 +0200
++++ b/kernel/nv-mmap.c 2023-05-03 11:51:39.220313386 +0200
+@@ -312,7 +312,11 @@
+ goto done;
+ }
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ vm_flags_set(vma, VM_IO);
++#else
+ vma->vm_flags |= VM_IO;
++#endif
+ }
+ else
+ {
+@@ -363,8 +367,13 @@
+
+ NV_PRINT_AT(NV_DBG_MEMINFO, at);
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ vm_flags_set(vma, VM_IO | VM_LOCKED | VM_RESERVED);
++ vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
++#else
+ vma->vm_flags |= (VM_IO | VM_LOCKED | VM_RESERVED);
+ vma->vm_flags |= (VM_DONTEXPAND | VM_DONTDUMP);
++#endif
+ }
+
+ if (status == 0)
+@@ -374,8 +383,13 @@
+ if ((prot & NV_PROTECT_WRITEABLE) == 0)
+ {
+ vma->vm_page_prot = NV_PGPROT_READ_ONLY(vma->vm_page_prot);
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ vm_flags_clear(vma, VM_WRITE);
++ vm_flags_clear(vma, VM_MAYWRITE);
++#else
+ vma->vm_flags &= ~VM_WRITE;
+ vma->vm_flags &= ~VM_MAYWRITE;
++#endif
+ }
+
+ vma->vm_ops = &nv_vm_ops;
+--- a/kernel/uvm/nvidia_uvm_lite.c 2023-05-03 12:00:17.508256190 +0200
++++ b/kernel/uvm/nvidia_uvm_lite.c 2023-05-03 12:03:59.160897071 +0200
+@@ -1524,10 +1524,17 @@
+
+ vma->vm_ops = &uvmlite_vma_ops;
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ // Prohibit copying the vma on fork().
++ vm_flags_set(vma, VM_DONTCOPY);
++ // Prohibt mremap() that would expand the vma.
++ vm_flags_set(vma, VM_DONTEXPAND);
++#else
+ // Prohibit copying the vma on fork().
+ vma->vm_flags |= VM_DONTCOPY;
+ // Prohibt mremap() that would expand the vma.
+ vma->vm_flags |= VM_DONTEXPAND;
++#endif
+
+ // Other cases of vma modification are detected in _mmap_open().
+
+@@ -1546,9 +1553,15 @@
+ return -EINVAL;
+
+ vma->vm_ops = &counters_vma_ops;
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ vm_flags_clear(vma, VM_MAYWRITE);
++ // prevent vm_insert_page from modifying the vma's flags:
++ vm_flags_set(vma, VM_MIXEDMAP);
++#else
+ vma->vm_flags &= ~VM_MAYWRITE;
+ // prevent vm_insert_page from modifying the vma's flags:
+ vma->vm_flags |= VM_MIXEDMAP;
++#endif
+ ret = 0;
+ }
+ UVM_DBG_PRINT_RL("vma 0x%p [0x%p, 0x%p) ret %d pgoff"
+@@ -2527,8 +2540,13 @@
+ // Subsequent access from userspace after the pages are unmapped will cause
+ // a SIGSEGV.
+ //
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ vm_flags_clear(vma, VM_READ|VM_MAYREAD);
++ vm_flags_clear(vma, VM_WRITE|VM_MAYWRITE);
++#else
+ vma->vm_flags &= ~(VM_READ|VM_MAYREAD);
+ vma->vm_flags &= ~(VM_WRITE|VM_MAYWRITE);
++#endif
+ }
+
+ //
+@@ -2536,8 +2554,13 @@
+ //
+ static void _set_vma_accessible(struct vm_area_struct * vma)
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 3, 0)
++ vm_flags_set(vma, VM_READ|VM_MAYREAD);
++ vm_flags_set(vma, VM_WRITE|VM_MAYWRITE);
++#else
+ vma->vm_flags |= (VM_READ|VM_MAYREAD);
+ vma->vm_flags |= (VM_WRITE|VM_MAYWRITE);
++#endif
+ }
+
+ //