Linux 6.4.3
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.4.3 kernel.
All users of the 6.4 kernel series must upgrade.
The updated 6.4.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.4.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Makefile | 2 +- include/linux/bootmem_info.h | 2 ++ kernel/fork.c | 1 + mm/memory.c | 7 +++++++ mm/mmap.c | 6 ++++++ 5 files changed, 17 insertions(+), 1 deletion(-)
Greg Kroah-Hartman (1):
Linux 6.4.3
Hugh Dickins (1):
mm: lock newly mapped VMA with corrected ordering
Liu Shixin (1):
bootmem: remove the vmemmap pages from kmemleak in free_bootmem_page
Peter Collingbourne (1):
mm: call arch_swap_restore() from do_swap_page()
Suren Baghdasaryan (3):
mm: lock a vma before stack expansion
mm: lock newly mapped VMA which can be modified after it becomes visible
fork: lock VMAs of the parent process when forking
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 4 -SUBLEVEL = 2 +SUBLEVEL = 3 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
include/linux/bootmem_info.h +2 -0
@@ -3,6 +3,7 @@#define __LINUX_BOOTMEM_INFO_H#include <linux/mm.h> +#include <linux/kmemleak.h> /* * Types for free bootmem stored in page->lru.next. These have to be in
@@ -59,6 +60,7 @@ static inline void get_page_bootmem(unsigned long info, struct page *page,static inline void free_bootmem_page (struct page *page) { +kmemleak_free_part (page_to_virt (page),PAGE_SIZE );free_reserved_page (page); }#endif
kernel/fork.c +1 -0
@@ -690,6 +690,7 @@ static __latent_entropy int dup_mmap(struct mm_struct *mm,for_each_vma (old_vmi, mpnt) {struct file *file; +vma_start_write (mpnt);if (mpnt->vm_flags &VM_DONTCOPY ) {vm_stat_account (mm, mpnt->vm_flags, -vma_pages (mpnt));continue ;
mm/memory.c +7 -0
@@ -3932,6 +3932,13 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) } } +/* +* Some architectures may have to restore extra metadata to the page +* when reading from swap. This metadata may be indexed by swap entry +* so this must be called before swap_free(). +*/ +arch_swap_restore (entry, folio); +/* * Remove the swap entry and conditionally try to free up the swapcache. * We're already holding a reference on the page but haven't mapped it
mm/mmap.c +6 -0
@@ -1975,6 +1975,8 @@ static int expand_upwards(struct vm_area_struct *vma, unsigned long address)return -ENOMEM ; } +/* Lock the VMA before expanding to prevent concurrent page faults */ +vma_start_write (vma);/* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_lock in read mode. We need the
@@ -2062,6 +2064,8 @@ int expand_downwards(struct vm_area_struct *vma, unsigned long address)return -ENOMEM ; } +/* Lock the VMA before expanding to prevent concurrent page faults */ +vma_start_write (vma);/* * vma->vm_start/vm_end cannot change under us because the caller * is required to hold the mmap_lock in read mode. We need the
@@ -2797,6 +2801,8 @@ unsigned long mmap_region(struct file *file, unsigned long addr,if (vma_iter_prealloc (&vmi)) goto close_and_free_vma; +/* Lock the VMA since it is modified after insertion into VMA tree */ +vma_start_write (vma);if (vma->vm_file)i_mmap_lock_write (vma->vm_file->f_mapping);