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

Merge tag 'mm-hotfixes-stable-2026-03-09-16-36' of...

Merge tag 'mm-hotfixes-stable-2026-03-09-16-36' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

Pull misc fixes from Andrew Morton:
 "15 hotfixes. 6 are cc:stable. 14 are for MM.

  Singletons, with one doubleton - please see the changelogs for details"

* tag 'mm-hotfixes-stable-2026-03-09-16-36' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
  MAINTAINERS, mailmap: update email address for Lorenzo Stoakes
  mm/mmu_notifier: clean up mmu_notifier.h kernel-doc
  uaccess: correct kernel-doc parameter format
  mm/huge_memory: fix a folio_split() race condition with folio_try_get()
  MAINTAINERS: add co-maintainer and reviewer for SLAB ALLOCATOR
  MAINTAINERS: add RELAY entry
  memcg: fix slab accounting in refill_obj_stock() trylock path
  mm/hugetlb.c: use __pa() instead of virt_to_phys() in early bootmem alloc code
  zram: rename writeback_compressed device attr
  tools/testing: fix testing/vma and testing/radix-tree build
  Revert "ptdesc: remove references to folios from __pagetable_ctor() and pagetable_dtor()"
  mm/cma: move put_page_testzero() out of VM_WARN_ON in cma_release()
  mm/damon/core: clear walk_control on inactive context in damos_walk()
  mm: memfd_luo: always dirty all folios
  mm: memfd_luo: always make all folios uptodate
parents 1f318b96 b12bbe35
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -498,7 +498,8 @@ Lior David <quic_liord@quicinc.com> <liord@codeaurora.org>
Loic Poulain <loic.poulain@oss.qualcomm.com> <loic.poulain@linaro.org>
Loic Poulain <loic.poulain@oss.qualcomm.com> <loic.poulain@intel.com>
Lorenzo Pieralisi <lpieralisi@kernel.org> <lorenzo.pieralisi@arm.com>
Lorenzo Stoakes <lorenzo.stoakes@oracle.com> <lstoakes@gmail.com>
Lorenzo Stoakes <ljs@kernel.org> <lstoakes@gmail.com>
Lorenzo Stoakes <ljs@kernel.org> <lorenzo.stoakes@oracle.com>
Luca Ceresoli <luca.ceresoli@bootlin.com> <luca@lucaceresoli.net>
Luca Weiss <luca@lucaweiss.eu> <luca@z3ntu.xyz>
Lucas De Marchi <demarchi@kernel.org> <lucas.demarchi@intel.com>
+2 −2
Original line number Diff line number Diff line
@@ -151,11 +151,11 @@ Description:
		The algorithm_params file is write-only and is used to setup
		compression algorithm parameters.

What:		/sys/block/zram<id>/writeback_compressed
What:		/sys/block/zram<id>/compressed_writeback
Date:		Decemeber 2025
Contact:	Richard Chang <richardycc@google.com>
Description:
		The writeback_compressed device atrribute toggles compressed
		The compressed_writeback device atrribute toggles compressed
		writeback feature.

What:		/sys/block/zram<id>/writeback_batch_size
+3 −3
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ writeback_limit WO specifies the maximum amount of write IO zram
writeback_limit_enable  RW	show and set writeback_limit feature
writeback_batch_size	RW	show and set maximum number of in-flight
				writeback operations
writeback_compressed	RW	show and set compressed writeback feature
compressed_writeback	RW	show and set compressed writeback feature
comp_algorithm    	RW	show and change the compression algorithm
algorithm_params	WO	setup compression algorithm parameters
compact           	WO	trigger memory compaction
@@ -439,11 +439,11 @@ budget in next setting is user's job.
By default zram stores written back pages in decompressed (raw) form, which
means that writeback operation involves decompression of the page before
writing it to the backing device.  This behavior can be changed by enabling
`writeback_compressed` feature, which causes zram to write compressed pages
`compressed_writeback` feature, which causes zram to write compressed pages
to the backing device, thus avoiding decompression overhead.  To enable
this feature, execute::

	$ echo yes > /sys/block/zramX/writeback_compressed
	$ echo yes > /sys/block/zramX/compressed_writeback

Note that this feature should be configured before the `zramX` device is
initialized.
+22 −11
Original line number Diff line number Diff line
@@ -16643,7 +16643,7 @@ F: mm/balloon.c
MEMORY MANAGEMENT - CORE
M:	Andrew Morton <akpm@linux-foundation.org>
M:	David Hildenbrand <david@kernel.org>
R:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
R:	Lorenzo Stoakes <ljs@kernel.org>
R:	Liam R. Howlett <Liam.Howlett@oracle.com>
R:	Vlastimil Babka <vbabka@kernel.org>
R:	Mike Rapoport <rppt@kernel.org>
@@ -16773,7 +16773,7 @@ F: mm/workingset.c
MEMORY MANAGEMENT - MISC
M:	Andrew Morton <akpm@linux-foundation.org>
M:	David Hildenbrand <david@kernel.org>
R:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
R:	Lorenzo Stoakes <ljs@kernel.org>
R:	Liam R. Howlett <Liam.Howlett@oracle.com>
R:	Vlastimil Babka <vbabka@kernel.org>
R:	Mike Rapoport <rppt@kernel.org>
@@ -16864,7 +16864,7 @@ R: David Hildenbrand <david@kernel.org>
R:	Michal Hocko <mhocko@kernel.org>
R:	Qi Zheng <zhengqi.arch@bytedance.com>
R:	Shakeel Butt <shakeel.butt@linux.dev>
R:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
R:	Lorenzo Stoakes <ljs@kernel.org>
L:	linux-mm@kvack.org
S:	Maintained
F:	mm/vmscan.c
@@ -16873,7 +16873,7 @@ F: mm/workingset.c
MEMORY MANAGEMENT - RMAP (REVERSE MAPPING)
M:	Andrew Morton <akpm@linux-foundation.org>
M:	David Hildenbrand <david@kernel.org>
M:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
M:	Lorenzo Stoakes <ljs@kernel.org>
R:	Rik van Riel <riel@surriel.com>
R:	Liam R. Howlett <Liam.Howlett@oracle.com>
R:	Vlastimil Babka <vbabka@kernel.org>
@@ -16918,7 +16918,7 @@ F: mm/swapfile.c
MEMORY MANAGEMENT - THP (TRANSPARENT HUGE PAGE)
M:	Andrew Morton <akpm@linux-foundation.org>
M:	David Hildenbrand <david@kernel.org>
M:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
M:	Lorenzo Stoakes <ljs@kernel.org>
R:	Zi Yan <ziy@nvidia.com>
R:	Baolin Wang <baolin.wang@linux.alibaba.com>
R:	Liam R. Howlett <Liam.Howlett@oracle.com>
@@ -16958,7 +16958,7 @@ F: tools/testing/selftests/mm/uffd-*.[ch]
MEMORY MANAGEMENT - RUST
M:	Alice Ryhl <aliceryhl@google.com>
R:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
R:	Lorenzo Stoakes <ljs@kernel.org>
R:	Liam R. Howlett <Liam.Howlett@oracle.com>
L:	linux-mm@kvack.org
L:	rust-for-linux@vger.kernel.org
@@ -16974,7 +16974,7 @@ F: rust/kernel/page.rs
MEMORY MAPPING
M:	Andrew Morton <akpm@linux-foundation.org>
M:	Liam R. Howlett <Liam.Howlett@oracle.com>
M:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
M:	Lorenzo Stoakes <ljs@kernel.org>
R:	Vlastimil Babka <vbabka@kernel.org>
R:	Jann Horn <jannh@google.com>
R:	Pedro Falcato <pfalcato@suse.de>
@@ -17004,7 +17004,7 @@ MEMORY MAPPING - LOCKING
M:	Andrew Morton <akpm@linux-foundation.org>
M:	Suren Baghdasaryan <surenb@google.com>
M:	Liam R. Howlett <Liam.Howlett@oracle.com>
M:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
M:	Lorenzo Stoakes <ljs@kernel.org>
R:	Vlastimil Babka <vbabka@kernel.org>
R:	Shakeel Butt <shakeel.butt@linux.dev>
L:	linux-mm@kvack.org
@@ -17019,7 +17019,7 @@ F: mm/mmap_lock.c
MEMORY MAPPING - MADVISE (MEMORY ADVICE)
M:	Andrew Morton <akpm@linux-foundation.org>
M:	Liam R. Howlett <Liam.Howlett@oracle.com>
M:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
M:	Lorenzo Stoakes <ljs@kernel.org>
M:	David Hildenbrand <david@kernel.org>
R:	Vlastimil Babka <vbabka@kernel.org>
R:	Jann Horn <jannh@google.com>
@@ -22267,6 +22267,16 @@ L: linux-wireless@vger.kernel.org
S:	Orphan
F:	drivers/net/wireless/rsi/
RELAY
M:	Andrew Morton <akpm@linux-foundation.org>
M:	Jens Axboe <axboe@kernel.dk>
M:	Jason Xing <kernelxing@tencent.com>
L:	linux-kernel@vger.kernel.org
S:	Maintained
F:	Documentation/filesystems/relay.rst
F:	include/linux/relay.h
F:	kernel/relay.c
REGISTER MAP ABSTRACTION
M:	Mark Brown <broonie@kernel.org>
L:	linux-kernel@vger.kernel.org
@@ -23156,7 +23166,7 @@ K: \b(?i:rust)\b
RUST [ALLOC]
M:	Danilo Krummrich <dakr@kernel.org>
R:	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
R:	Lorenzo Stoakes <ljs@kernel.org>
R:	Vlastimil Babka <vbabka@kernel.org>
R:	Liam R. Howlett <Liam.Howlett@oracle.com>
R:	Uladzislau Rezki <urezki@gmail.com>
@@ -24333,11 +24343,12 @@ F: drivers/nvmem/layouts/sl28vpd.c
SLAB ALLOCATOR
M:	Vlastimil Babka <vbabka@kernel.org>
M:	Harry Yoo <harry.yoo@oracle.com>
M:	Andrew Morton <akpm@linux-foundation.org>
R:	Hao Li <hao.li@linux.dev>
R:	Christoph Lameter <cl@gentwo.org>
R:	David Rientjes <rientjes@google.com>
R:	Roman Gushchin <roman.gushchin@linux.dev>
R:	Harry Yoo <harry.yoo@oracle.com>
L:	linux-mm@kvack.org
S:	Maintained
T:	git git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab.git
+12 −12
Original line number Diff line number Diff line
@@ -549,7 +549,7 @@ static ssize_t bd_stat_show(struct device *dev, struct device_attribute *attr,
	return ret;
}

static ssize_t writeback_compressed_store(struct device *dev,
static ssize_t compressed_writeback_store(struct device *dev,
					  struct device_attribute *attr,
					  const char *buf, size_t len)
{
@@ -564,12 +564,12 @@ static ssize_t writeback_compressed_store(struct device *dev,
		return -EBUSY;
	}

	zram->wb_compressed = val;
	zram->compressed_wb = val;

	return len;
}

static ssize_t writeback_compressed_show(struct device *dev,
static ssize_t compressed_writeback_show(struct device *dev,
					 struct device_attribute *attr,
					 char *buf)
{
@@ -577,7 +577,7 @@ static ssize_t writeback_compressed_show(struct device *dev,
	struct zram *zram = dev_to_zram(dev);

	guard(rwsem_read)(&zram->dev_lock);
	val = zram->wb_compressed;
	val = zram->compressed_wb;

	return sysfs_emit(buf, "%d\n", val);
}
@@ -946,7 +946,7 @@ static int zram_writeback_complete(struct zram *zram, struct zram_wb_req *req)
		goto out;
	}

	if (zram->wb_compressed) {
	if (zram->compressed_wb) {
		/*
		 * ZRAM_WB slots get freed, we need to preserve data required
		 * for read decompression.
@@ -960,7 +960,7 @@ static int zram_writeback_complete(struct zram *zram, struct zram_wb_req *req)
	set_slot_flag(zram, index, ZRAM_WB);
	set_slot_handle(zram, index, req->blk_idx);

	if (zram->wb_compressed) {
	if (zram->compressed_wb) {
		if (huge)
			set_slot_flag(zram, index, ZRAM_HUGE);
		set_slot_size(zram, index, size);
@@ -1100,7 +1100,7 @@ static int zram_writeback_slots(struct zram *zram,
		 */
		if (!test_slot_flag(zram, index, ZRAM_PP_SLOT))
			goto next;
		if (zram->wb_compressed)
		if (zram->compressed_wb)
			err = read_from_zspool_raw(zram, req->page, index);
		else
			err = read_from_zspool(zram, req->page, index);
@@ -1429,7 +1429,7 @@ static void zram_async_read_endio(struct bio *bio)
	 *
	 * Keep the existing behavior for now.
	 */
	if (zram->wb_compressed == false) {
	if (zram->compressed_wb == false) {
		/* No decompression needed, complete the parent IO */
		bio_endio(req->parent);
		bio_put(bio);
@@ -1508,7 +1508,7 @@ static int read_from_bdev_sync(struct zram *zram, struct page *page, u32 index,
	flush_work(&req.work);
	destroy_work_on_stack(&req.work);

	if (req.error || zram->wb_compressed == false)
	if (req.error || zram->compressed_wb == false)
		return req.error;

	return decompress_bdev_page(zram, page, index);
@@ -3007,7 +3007,7 @@ static DEVICE_ATTR_WO(writeback);
static DEVICE_ATTR_RW(writeback_limit);
static DEVICE_ATTR_RW(writeback_limit_enable);
static DEVICE_ATTR_RW(writeback_batch_size);
static DEVICE_ATTR_RW(writeback_compressed);
static DEVICE_ATTR_RW(compressed_writeback);
#endif
#ifdef CONFIG_ZRAM_MULTI_COMP
static DEVICE_ATTR_RW(recomp_algorithm);
@@ -3031,7 +3031,7 @@ static struct attribute *zram_disk_attrs[] = {
	&dev_attr_writeback_limit.attr,
	&dev_attr_writeback_limit_enable.attr,
	&dev_attr_writeback_batch_size.attr,
	&dev_attr_writeback_compressed.attr,
	&dev_attr_compressed_writeback.attr,
#endif
	&dev_attr_io_stat.attr,
	&dev_attr_mm_stat.attr,
@@ -3091,7 +3091,7 @@ static int zram_add(void)
	init_rwsem(&zram->dev_lock);
#ifdef CONFIG_ZRAM_WRITEBACK
	zram->wb_batch_size = 32;
	zram->wb_compressed = false;
	zram->compressed_wb = false;
#endif

	/* gendisk structure */
Loading