Commit b2062460 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'mm-hotfixes-stable-2026-02-04-15-55' of...

Merge tag 'mm-hotfixes-stable-2026-02-04-15-55' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Pull misc fixes from Andrew Morton:
 "Five hotfixes.  Two are cc:stable, two are for MM.

  All are singletons - please see the changelogs for details"

* tag 'mm-hotfixes-stable-2026-02-04-15-55' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
  Documentation: document liveupdate cmdline parameter
  mm, shmem: prevent infinite loop on truncate race
  mailmap: update Alexander Mikhalitsyn's emails
  liveupdate: luo_file: do not clear serialized_data on unfreeze
  x86/kfence: fix booting on 32bit non-PAE systems
parents f14faaf3 1a47837b
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ Alexander Lobakin <alobakin@pm.me> <alobakin@marvell.com>
Alexander Lobakin <alobakin@pm.me> <bloodyreaper@yandex.ru>
Alexander Mikhalitsyn <alexander@mihalicyn.com> <alexander.mikhalitsyn@virtuozzo.com>
Alexander Mikhalitsyn <alexander@mihalicyn.com> <aleksandr.mikhalitsyn@canonical.com>
Alexander Mikhalitsyn <alexander@mihalicyn.com> <aleksandr.mikhalitsyn@futurfusion.io>
Alexander Sverdlin <alexander.sverdlin@gmail.com> <alexander.sverdlin.ext@nsn.com>
Alexander Sverdlin <alexander.sverdlin@gmail.com> <alexander.sverdlin@gmx.de>
Alexander Sverdlin <alexander.sverdlin@gmail.com> <alexander.sverdlin@nokia.com>
+5 −0
Original line number Diff line number Diff line
@@ -3472,6 +3472,11 @@ Kernel parameters
			If there are multiple matching configurations changing
			the same attribute, the last one is used.

	liveupdate=	[KNL,EARLY]
			Format: <bool>
			Enable Live Update Orchestrator (LUO).
			Default: off.

	load_ramdisk=	[RAM] [Deprecated]

	lockd.nlm_grace_period=P  [NFS] Assign grace period.
+4 −3
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
{
	unsigned int level;
	pte_t *pte = lookup_address(addr, &level);
	pteval_t val;
	pteval_t val, new;

	if (WARN_ON(!pte || level != PG_LEVEL_4K))
		return false;
@@ -57,11 +57,12 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect)
		return true;

	/*
	 * Otherwise, invert the entire PTE.  This avoids writing out an
	 * Otherwise, flip the Present bit, taking care to avoid writing an
	 * L1TF-vulnerable PTE (not present, without the high address bits
	 * set).
	 */
	set_pte(pte, __pte(~val));
	new = val ^ _PAGE_PRESENT;
	set_pte(pte, __pte(flip_protnone_guard(val, new, PTE_PFN_MASK)));

	/*
	 * If the page was protected (non-present) and we're making it
+0 −2
Original line number Diff line number Diff line
@@ -402,8 +402,6 @@ static void luo_file_unfreeze_one(struct luo_file_set *file_set,

		luo_file->fh->ops->unfreeze(&args);
	}

	luo_file->serialized_data = 0;
}

static void __luo_file_unfreeze(struct luo_file_set *file_set,
+14 −9
Original line number Diff line number Diff line
@@ -1211,17 +1211,22 @@ static void shmem_undo_range(struct inode *inode, loff_t lstart, uoff_t lend,
				swaps_freed = shmem_free_swap(mapping, indices[i],
							      end - 1, folio);
				if (!swaps_freed) {
					/*
					 * If found a large swap entry cross the end border,
					 * skip it as the truncate_inode_partial_folio above
					 * should have at least zerod its content once.
					 */
					pgoff_t base = indices[i];

					order = shmem_confirm_swap(mapping, indices[i],
								   radix_to_swp_entry(folio));
					if (order > 0 && indices[i] + (1 << order) > end)
					/*
					 * If found a large swap entry cross the end or start
					 * border, skip it as the truncate_inode_partial_folio
					 * above should have at least zerod its content once.
					 */
					if (order > 0) {
						base = round_down(base, 1 << order);
						if (base < start || base + (1 << order) > end)
							continue;
					/* Swap was replaced by page: retry */
					index = indices[i];
					}
					/* Swap was replaced by page or extended, retry */
					index = base;
					break;
				}
				nr_swaps_freed += swaps_freed;