]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.1-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 Nov 2024 07:27:22 +0000 (08:27 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 6 Nov 2024 07:27:22 +0000 (08:27 +0100)
added patches:
loongarch-fix-build-errors-due-to-backported-timens.patch

queue-6.1/loongarch-fix-build-errors-due-to-backported-timens.patch [new file with mode: 0644]
queue-6.1/series

diff --git a/queue-6.1/loongarch-fix-build-errors-due-to-backported-timens.patch b/queue-6.1/loongarch-fix-build-errors-due-to-backported-timens.patch
new file mode 100644 (file)
index 0000000..ca02683
--- /dev/null
@@ -0,0 +1,91 @@
+From chenhuacai@loongson.cn  Wed Nov  6 08:26:52 2024
+From: Huacai Chen <chenhuacai@loongson.cn>
+Date: Sat,  2 Nov 2024 11:36:16 +0800
+Subject: LoongArch: Fix build errors due to backported TIMENS
+To: Huacai Chen <chenhuacai@kernel.org>
+Cc: Xuerui Wang <kernel@xen0n.name>, loongarch@lists.linux.dev, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Sasha Levin <sashal@kernel.org>, stable@vger.kernel.org, Jiaxun Yang <jiaxun.yang@flygoat.com>, linux-kernel@vger.kernel.org, Huacai Chen <chenhuacai@loongson.cn>
+Message-ID: <20241102033616.3517188-1-chenhuacai@loongson.cn>
+
+From: Huacai Chen <chenhuacai@loongson.cn>
+
+Commit eb3710efffce1dcff83761db4615f91d93aabfcb ("LoongArch: Add support
+to clone a time namespace") backports the TIMENS support for LoongArch
+(corresponding upstream commit aa5e65dc0818bbf676bf06927368ec46867778fd)
+but causes build errors:
+
+  CC      arch/loongarch/kernel/vdso.o
+arch/loongarch/kernel/vdso.c: In function ‘vvar_fault’:
+arch/loongarch/kernel/vdso.c:54:36: error: implicit declaration of
+function ‘find_timens_vvar_page’ [-Werror=implicit-function-declaration]
+   54 |         struct page *timens_page = find_timens_vvar_page(vma);
+      |                                    ^~~~~~~~~~~~~~~~~~~~~
+arch/loongarch/kernel/vdso.c:54:36: warning: initialization of ‘struct
+page *’ from ‘int’ makes pointer from integer without a cast
+[-Wint-conversion]
+arch/loongarch/kernel/vdso.c: In function ‘vdso_join_timens’:
+arch/loongarch/kernel/vdso.c:143:25: error: implicit declaration of
+function ‘zap_vma_pages’; did you mean ‘zap_vma_ptes’?
+[-Werror=implicit-function-declaration]
+  143 |                         zap_vma_pages(vma);
+      |                         ^~~~~~~~~~~~~
+      |                         zap_vma_ptes
+cc1: some warnings being treated as errors
+
+Because in 6.1.y we should define find_timens_vvar_page() by ourselves
+and use zap_page_range() instead of zap_vma_pages(), so fix it.
+
+Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
+---
+ arch/loongarch/kernel/vdso.c |   28 +++++++++++++++++++++++++++-
+ 1 file changed, 27 insertions(+), 1 deletion(-)
+
+--- a/arch/loongarch/kernel/vdso.c
++++ b/arch/loongarch/kernel/vdso.c
+@@ -40,6 +40,8 @@ static struct page *vdso_pages[] = { NUL
+ struct vdso_data *vdso_data = generic_vdso_data.data;
+ struct vdso_pcpu_data *vdso_pdata = loongarch_vdso_data.vdata.pdata;
++static struct page *find_timens_vvar_page(struct vm_area_struct *vma);
++
+ static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
+ {
+       current->mm->context.vdso = (void *)(new_vma->vm_start);
+@@ -139,13 +141,37 @@ int vdso_join_timens(struct task_struct
+       mmap_read_lock(mm);
+       for_each_vma(vmi, vma) {
++              unsigned long size = vma->vm_end - vma->vm_start;
++
+               if (vma_is_special_mapping(vma, &vdso_info.data_mapping))
+-                      zap_vma_pages(vma);
++                      zap_page_range(vma, vma->vm_start, size);
+       }
+       mmap_read_unlock(mm);
+       return 0;
+ }
++
++static struct page *find_timens_vvar_page(struct vm_area_struct *vma)
++{
++      if (likely(vma->vm_mm == current->mm))
++              return current->nsproxy->time_ns->vvar_page;
++
++      /*
++       * VM_PFNMAP | VM_IO protect .fault() handler from being called
++       * through interfaces like /proc/$pid/mem or
++       * process_vm_{readv,writev}() as long as there's no .access()
++       * in special_mapping_vmops.
++       * For more details check_vma_flags() and __access_remote_vm()
++       */
++      WARN(1, "vvar_page accessed remotely");
++
++      return NULL;
++}
++#else
++static struct page *find_timens_vvar_page(struct vm_area_struct *vma)
++{
++      return NULL;
++}
+ #endif
+ static unsigned long vdso_base(void)
index 67a76342112c0fdf681bca0573b321a7ea7dccfb..ec7dd69c1d02997076b3ee4f84c307c6c1393757 100644 (file)
@@ -117,3 +117,4 @@ wifi-mac80211-fix-null-dereference-at-band-check-in-starting-tx-ba-session.patch
 nilfs2-fix-kernel-bug-due-to-missing-clearing-of-checked-flag.patch
 wifi-iwlwifi-mvm-fix-6-ghz-scan-construction.patch
 mm-shmem-fix-data-race-in-shmem_getattr.patch
+loongarch-fix-build-errors-due-to-backported-timens.patch