Commit 13b2d15d authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'mm-hotfixes-stable-2026-01-15-08-03' of...

Merge tag 'mm-hotfixes-stable-2026-01-15-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Pull misc fixes from Andrew Morton:

 - kerneldoc fixes from Bagas Sanjaya

 - DAMON fixes from SeongJae

 - mremap VMA-related fixes from Lorenzo

 - various singletons - please see the changelogs for details

* tag 'mm-hotfixes-stable-2026-01-15-08-03' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (30 commits)
  drivers/dax: add some missing kerneldoc comment fields for struct dev_dax
  mm: numa,memblock: include <asm/numa.h> for 'numa_nodes_parsed'
  mailmap: add entry for Daniel Thompson
  tools/testing/selftests: fix gup_longterm for unknown fs
  mm/page_alloc: prevent pcp corruption with SMP=n
  iommu/sva: include mmu_notifier.h header
  mm: kmsan: fix poisoning of high-order non-compound pages
  tools/testing/selftests: add forked (un)/faulted VMA merge tests
  mm/vma: enforce VMA fork limit on unfaulted,faulted mremap merge too
  tools/testing/selftests: add tests for !tgt, src mremap() merges
  mm/vma: fix anon_vma UAF on mremap() faulted, unfaulted merge
  mm/zswap: fix error pointer free in zswap_cpu_comp_prepare()
  mm/damon/sysfs-scheme: cleanup access_pattern subdirs on scheme dir setup failure
  mm/damon/sysfs-scheme: cleanup quotas subdirs on scheme dir setup failure
  mm/damon/sysfs: cleanup attrs subdirs on context dir setup failure
  mm/damon/sysfs: cleanup intervals subdirs on attrs dir setup failure
  mm/damon/core: remove call_control in inactive contexts
  powerpc/watchdog: add support for hardlockup_sys_info sysctl
  mips: fix HIGHMEM initialization
  mm/hugetlb: ignore hugepage kernel args if hugepages are unsupported
  ...
parents 9e995c57 3e8e590f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -207,6 +207,7 @@ Daniel Borkmann <daniel@iogearbox.net> <daniel.borkmann@tik.ee.ethz.ch>
Daniel Borkmann <daniel@iogearbox.net> <dborkmann@redhat.com>
Daniel Borkmann <daniel@iogearbox.net> <dborkman@redhat.com>
Daniel Borkmann <daniel@iogearbox.net> <dxchgb@gmail.com>
Daniel Thompson <danielt@kernel.org> <daniel.thompson@linaro.org>
Danilo Krummrich <dakr@kernel.org> <dakr@redhat.com>
David Brownell <david-b@pacbell.net>
David Collins <quic_collinsd@quicinc.com> <collinsd@codeaurora.org>
@@ -794,6 +795,7 @@ Sven Eckelmann <sven@narfation.org> <sven.eckelmann@open-mesh.com>
Sven Eckelmann <sven@narfation.org> <sven.eckelmann@openmesh.com>
Sven Eckelmann <sven@narfation.org> <sven@open-mesh.com>
Sven Peter <sven@kernel.org> <sven@svenpeter.dev>
Szymon Wilczek <swilczek.lx@gmail.com> <szymonwilczek@gmx.com>
Takashi YOSHII <takashi.yoshii.zj@renesas.com>
Tamizh Chelvam Raja <quic_tamizhr@quicinc.com> <tamizhr@codeaurora.org>
Taniya Das <quic_tdas@quicinc.com> <tdas@codeaurora.org>
+35 −0
Original line number Diff line number Diff line
@@ -2917,6 +2917,41 @@ Kernel parameters
			for Movable pages.  "nn[KMGTPE]", "nn%", and "mirror"
			are exclusive, so you cannot specify multiple forms.

	kfence.burst=	[MM,KFENCE] The number of additional successive
			allocations to be attempted through KFENCE for each
			sample interval.
			Format: <unsigned integer>
			Default: 0

	kfence.check_on_panic=
			[MM,KFENCE] Whether to check all KFENCE-managed objects'
			canaries on panic.
			Format: <bool>
			Default: false

	kfence.deferrable=
			[MM,KFENCE] Whether to use a deferrable timer to trigger
			allocations. This avoids forcing CPU wake-ups if the
			system is idle, at the risk of a less predictable
			sample interval.
			Format: <bool>
			Default: CONFIG_KFENCE_DEFERRABLE

	kfence.sample_interval=
			[MM,KFENCE] KFENCE's sample interval in milliseconds.
			Format: <unsigned integer>
			 0 - Disable KFENCE.
			>0 - Enabled KFENCE with given sample interval.
			Default: CONFIG_KFENCE_SAMPLE_INTERVAL

	kfence.skip_covered_thresh=
			[MM,KFENCE] If pool utilization reaches this threshold
			(pool usage%), KFENCE limits currently covered
			allocations of the same source from further filling
			up the pool.
			Format: <unsigned integer>
			Default: 75

	kgdbdbgp=	[KGDB,HW,EARLY] kgdb over EHCI usb debug port.
			Format: <Controller#>[,poll interval]
			The controller # is the number of the ehci usb debug
+23 −0
Original line number Diff line number Diff line
@@ -425,6 +425,28 @@ void __init paging_init(void)
static struct kcore_list kcore_kseg0;
#endif

static inline void __init highmem_init(void)
{
#ifdef CONFIG_HIGHMEM
	unsigned long tmp;

	/*
	 * If CPU cannot support HIGHMEM discard the memory above highstart_pfn
	 */
	if (cpu_has_dc_aliases) {
		memblock_remove(PFN_PHYS(highstart_pfn), -1);
		return;
	}

	for (tmp = highstart_pfn; tmp < highend_pfn; tmp++) {
		struct page *page = pfn_to_page(tmp);

		if (!memblock_is_memory(PFN_PHYS(tmp)))
			SetPageReserved(page);
	}
#endif
}

void __init arch_mm_preinit(void)
{
	/*
@@ -435,6 +457,7 @@ void __init arch_mm_preinit(void)

	maar_init();
	setup_zero_pages();	/* Setup zeroed pages.  */
	highmem_init();

#ifdef CONFIG_64BIT
	if ((unsigned long) &_text > (unsigned long) CKSEG0)
+10 −5
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <linux/delay.h>
#include <linux/processor.h>
#include <linux/smp.h>
#include <linux/sys_info.h>

#include <asm/interrupt.h>
#include <asm/paca.h>
@@ -235,7 +236,11 @@ static void watchdog_smp_panic(int cpu)
	pr_emerg("CPU %d TB:%lld, last SMP heartbeat TB:%lld (%lldms ago)\n",
		 cpu, tb, last_reset, tb_to_ns(tb - last_reset) / 1000000);

	if (!sysctl_hardlockup_all_cpu_backtrace) {
	if (sysctl_hardlockup_all_cpu_backtrace ||
	    (hardlockup_si_mask & SYS_INFO_ALL_BT)) {
		trigger_allbutcpu_cpu_backtrace(cpu);
		cpumask_clear(&wd_smp_cpus_ipi);
	} else {
		/*
		 * Try to trigger the stuck CPUs, unless we are going to
		 * get a backtrace on all of them anyway.
@@ -244,11 +249,9 @@ static void watchdog_smp_panic(int cpu)
			smp_send_nmi_ipi(c, wd_lockup_ipi, 1000000);
			__cpumask_clear_cpu(c, &wd_smp_cpus_ipi);
		}
	} else {
		trigger_allbutcpu_cpu_backtrace(cpu);
		cpumask_clear(&wd_smp_cpus_ipi);
	}

	sys_info(hardlockup_si_mask & ~SYS_INFO_ALL_BT);
	if (hardlockup_panic)
		nmi_panic(NULL, "Hard LOCKUP");

@@ -415,9 +418,11 @@ DEFINE_INTERRUPT_HANDLER_NMI(soft_nmi_interrupt)

		xchg(&__wd_nmi_output, 1); // see wd_lockup_ipi

		if (sysctl_hardlockup_all_cpu_backtrace)
		if (sysctl_hardlockup_all_cpu_backtrace ||
		    (hardlockup_si_mask & SYS_INFO_ALL_BT))
			trigger_allbutcpu_cpu_backtrace(cpu);

		sys_info(hardlockup_si_mask & ~SYS_INFO_ALL_BT);
		if (hardlockup_panic)
			nmi_panic(regs, "Hard LOCKUP");

+6 −4
Original line number Diff line number Diff line
@@ -67,14 +67,16 @@ struct dev_dax_range {
/**
 * struct dev_dax - instance data for a subdivision of a dax region, and
 * data while the device is activated in the driver.
 * @region - parent region
 * @dax_dev - core dax functionality
 * @region: parent region
 * @dax_dev: core dax functionality
 * @align: alignment of this instance
 * @target_node: effective numa node if dev_dax memory range is onlined
 * @dyn_id: is this a dynamic or statically created instance
 * @id: ida allocated id when the dax_region is not static
 * @ida: mapping id allocator
 * @dev - device core
 * @pgmap - pgmap for memmap setup / lifetime (driver owned)
 * @dev: device core
 * @pgmap: pgmap for memmap setup / lifetime (driver owned)
 * @memmap_on_memory: allow kmem to put the memmap in the memory
 * @nr_range: size of @ranges
 * @ranges: range tuples of memory used
 */
Loading