From: Alejandro Colomar <alx@kernel.org>
To: Marco Elver <elver@google.com>
Cc: linux-mm@kvack.org, linux-hardening@vger.kernel.org,
Kees Cook <kees@kernel.org>,
Christopher Bazley <chris.bazley.wg14@gmail.com>,
shadow <~hallyn/shadow@lists.sr.ht>,
linux-kernel@vger.kernel.org,
Andrew Morton <akpm@linux-foundation.org>,
kasan-dev@googlegroups.com, Dmitry Vyukov <dvyukov@google.com>,
Alexander Potapenko <glider@google.com>,
Christoph Lameter <cl@linux.com>,
David Rientjes <rientjes@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
Roman Gushchin <roman.gushchin@linux.dev>,
Harry Yoo <harry.yoo@oracle.com>,
Andrew Clayton <andrew@digital-domain.net>,
Sven Schnelle <svens@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Tvrtko Ursulin <tvrtko.ursulin@igalia.com>,
"Huang, Ying" <ying.huang@intel.com>,
Lee Schermerhorn <lee.schermerhorn@hp.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
Hyeonggon Yoo <42.hyeyoo@gmail.com>, Chao Yu <chao.yu@oppo.com>
Subject: Re: [RFC v3 3/7] mm: Use seprintf() instead of less ergonomic APIs
Date: Mon, 7 Jul 2025 22:53:26 +0200 [thread overview]
Message-ID: <t3wv6hlt7quhab7qqvxbx6zn4rh2oo6466urtu6tmnix63ju7v@hiwhnb5l4twf> (raw)
In-Reply-To: <CANpmjNO0_RAMgZJktaempOm-KdY6Q0iJYFz=YEibvBgh7hNPwg@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 17312 bytes --]
Hi Marco,
On Mon, Jul 07, 2025 at 09:08:29PM +0200, Marco Elver wrote:
> > > > > Did you run the tests? Do they pass?
> > > >
> > > > I don't know how to run them. I've only built the kernel. If you point
> > > > me to instructions on how to run them, I'll do so. Thanks!
> > >
> > > Should just be CONFIG_KFENCE_KUNIT_TEST=y -- then boot kernel and
> > > check that the test reports "ok".
> >
> > Hmmm, I can't see the results. Did I miss anything?
> >
> > alx@debian:~$ uname -a
> > Linux debian 6.15.0-seprintf-mm+ #5 SMP PREEMPT_DYNAMIC Mon Jul 7 19:16:40 CEST 2025 x86_64 GNU/Linux
> > alx@debian:~$ cat /boot/config-6.15.0-seprintf-mm+ | grep KFENCE
> > CONFIG_HAVE_ARCH_KFENCE=y
> > CONFIG_KFENCE=y
> > CONFIG_KFENCE_SAMPLE_INTERVAL=0
>
> ^^ This means KFENCE is off.
>
> Not sure why it's 0 (distro default config?), but if you switch it to
> something like:
Yup, Debian default config plus what you told me. :)
>
> CONFIG_KFENCE_SAMPLE_INTERVAL=10
Thanks! Now I see the tests.
I see no regressions. I've tested both v6.15 and my branch, and see no
differences:
This was generated with the kernel built from my branch:
$ sudo dmesg | grep -inC2 kfence | sed 's/^....//' > tmp/log_after
This was generated with a v6.15 kernel with the same exact config:
$ sudo dmesg | grep -inC2 kfence | sed 's/^....//' > tmp/log_before
And here's a diff, ignoring some numbers that were easy to filter out:
$ diff -U999 \
<(cat tmp/log_before \
| sed 's/0x[0-9a-f]*/0x????/g' \
| sed 's/[[:digit:]]\.[[:digit:]]\+/?.?/g' \
| sed 's/#[[:digit:]]\+/#???/g') \
<(cat tmp/log_after \
| sed 's/0x[0-9a-f]*/0x????/g' \
| sed 's/[[:digit:]]\.[[:digit:]]\+/?.?/g' \
| sed 's/#[[:digit:]]\+/#???/g');
--- /dev/fd/63 2025-07-07 22:47:37.395608776 +0200
+++ /dev/fd/62 2025-07-07 22:47:37.395608776 +0200
@@ -1,303 +1,303 @@
[ ?.?] NR_IRQS: 524544, nr_irqs: 1096, preallocated irqs: 16
[ ?.?] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[ ?.?] kfence: initialized - using 2097152 bytes for 255 objects at 0x????(____ptrval____)-0x????(____ptrval____)
[ ?.?] Console: colour dummy device 80x????
[ ?.?] printk: legacy console [tty0] enabled
--
[ ?.?] ok 7 sysctl_test
[ ?.?] KTAP version 1
[ ?.?] # Subtest: kfence
[ ?.?] 1..27
[ ?.?] # test_out_of_bounds_read: test_alloc: size=32, gfp=cc0, policy=left, cache=0
[ ?.?] ==================================================================
[ ?.?] BUG: KFENCE: out-of-bounds read in test_out_of_bounds_read+0x????/0x????
[ ?.?] Out-of-bounds read at 0x???? (1B left of kfence-#???):
[ ?.?] test_out_of_bounds_read+0x????/0x????
[ ?.?] kunit_try_run_case+0x????/0x????
--
[ ?.?] ret_from_fork_asm+0x????/0x????
[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-[ ?.?] allocated by task 281 on cpu 6 at ?.?s (?.?s ago):
+[ ?.?] allocated by task 286 on cpu 8 at ?.?s (?.?s ago):
--
[ ?.?] # test_out_of_bounds_read: test_alloc: size=32, gfp=cc0, policy=right, cache=0
[ ?.?] ==================================================================
[ ?.?] BUG: KFENCE: out-of-bounds read in test_out_of_bounds_read.cold+0x????/0x????
[ ?.?] Out-of-bounds read at 0x???? (32B right of kfence-#???):
[ ?.?] test_out_of_bounds_read.cold+0x????/0x????
[ ?.?] kunit_try_run_case+0x????/0x????
--
[ ?.?] ret_from_fork_asm+0x????/0x????
[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-[ ?.?] allocated by task 281 on cpu 6 at ?.?s (?.?s ago):
+[ ?.?] allocated by task 286 on cpu 11 at ?.?s (?.?s ago):
--
[ ?.?] # test_out_of_bounds_read-memcache: test_alloc: size=32, gfp=cc0, policy=left, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: out-of-bounds read in test_out_of_bounds_read+0x????/0x????
-
:[ ?.?] Out-of-bounds read at 0x???? (1B left of kfence-#???):
-[ ?.?] test_out_of_bounds_read+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 284 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 289 on cpu 8 at ?.?s (?.?s ago):
--
-[ ?.?] # test_out_of_bounds_read-memcache: test_alloc: size=32, gfp=cc0, policy=right, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: out-of-bounds read in test_out_of_bounds_read.cold+0x????/0x????
-
:[ ?.?] Out-of-bounds read at 0x???? (32B right of kfence-#???):
-[ ?.?] test_out_of_bounds_read.cold+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 284 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 289 on cpu 8 at ?.?s (?.?s ago):
--
-[ ?.?] # test_out_of_bounds_write: test_alloc: size=32, gfp=cc0, policy=left, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: out-of-bounds write in test_out_of_bounds_write+0x????/0x????
-
:[ ?.?] Out-of-bounds write at 0x???? (1B left of kfence-#???):
-[ ?.?] test_out_of_bounds_write+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-
--[ ?.?] allocated by task 288 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 291 on cpu 6 at ?.?s (?.?s ago):
--
--[ ?.?] # test_out_of_bounds_write-memcache: test_alloc: size=32, gfp=cc0, policy=left, cache=1
-[ ?.?] ==================================================================
+-[ ?.?] clocksource: tsc: mask: 0x???? max_cycles: 0x????, max_idle_ns: 881590599626 ns
:[ ?.?] BUG: KFENCE: out-of-bounds write in test_out_of_bounds_write+0x????/0x????
-
:[ ?.?] Out-of-bounds write at 0x???? (1B left of kfence-#???):
-[ ?.?] test_out_of_bounds_write+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 290 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 293 on cpu 10 at ?.?s (?.?s ago):
--
-[ ?.?] # test_use_after_free_read: test_alloc: size=32, gfp=cc0, policy=any, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: use-after-free read in test_use_after_free_read+0x????/0x????
-
:[ ?.?] Use-after-free read at 0x???? (in kfence-#???):
-[ ?.?] test_use_after_free_read+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-
--[ ?.?] allocated by task 292 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 296 on cpu 10 at ?.?s (?.?s ago):
--
-[ ?.?] # test_use_after_free_read-memcache: test_alloc: size=32, gfp=cc0, policy=any, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: use-after-free read in test_use_after_free_read+0x????/0x????
-
:[ ?.?] Use-after-free read at 0x???? (in kfence-#???):
-[ ?.?] test_use_after_free_read+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 294 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 298 on cpu 10 at ?.?s (?.?s ago):
--
-[ ?.?] # test_double_free: test_alloc: size=32, gfp=cc0, policy=any, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: invalid free in test_double_free+0x????/0x????
-
:[ ?.?] Invalid free of 0x???? (in kfence-#???):
-[ ?.?] test_double_free+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-
--[ ?.?] allocated by task 300 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 304 on cpu 6 at ?.?s (?.?s ago):
--
-[ ?.?] # test_double_free-memcache: test_alloc: size=32, gfp=cc0, policy=any, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: invalid free in test_double_free+0x????/0x????
-
:[ ?.?] Invalid free of 0x???? (in kfence-#???):
-[ ?.?] test_double_free+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 302 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 306 on cpu 8 at ?.?s (?.?s ago):
--
-[ ?.?] # test_invalid_addr_free: test_alloc: size=32, gfp=cc0, policy=any, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: invalid free in test_invalid_addr_free+0x????/0x????
-
:[ ?.?] Invalid free of 0x???? (in kfence-#???):
-[ ?.?] test_invalid_addr_free+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-
--[ ?.?] allocated by task 304 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 308 on cpu 8 at ?.?s (?.?s ago):
--
-[ ?.?] # test_invalid_addr_free-memcache: test_alloc: size=32, gfp=cc0, policy=any, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: invalid free in test_invalid_addr_free+0x????/0x????
-
:[ ?.?] Invalid free of 0x???? (in kfence-#???):
-[ ?.?] test_invalid_addr_free+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 306 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 310 on cpu 8 at ?.?s (?.?s ago):
--
-[ ?.?] # test_corruption: test_alloc: size=32, gfp=cc0, policy=left, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: memory corruption in test_corruption+0x????/0x????
-
:[ ?.?] Corrupted memory at 0x???? [ ! . . . . . . . . . . . . . . . ] (in kfence-#???):
-[ ?.?] test_corruption+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-
--[ ?.?] allocated by task 308 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 312 on cpu 6 at ?.?s (?.?s ago):
--
-[ ?.?] # test_corruption: test_alloc: size=32, gfp=cc0, policy=right, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: memory corruption in test_corruption+0x????/0x????
-
:[ ?.?] Corrupted memory at 0x???? [ ! ] (in kfence-#???):
-[ ?.?] test_corruption+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-
--[ ?.?] allocated by task 308 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 312 on cpu 6 at ?.?s (?.?s ago):
--
-[ ?.?] # test_corruption-memcache: test_alloc: size=32, gfp=cc0, policy=left, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: memory corruption in test_corruption+0x????/0x????
-
:[ ?.?] Corrupted memory at 0x???? [ ! . . . . . . . . . . . . . . . ] (in kfence-#???):
-[ ?.?] test_corruption+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 310 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 314 on cpu 6 at ?.?s (?.?s ago):
--
-[ ?.?] # test_corruption-memcache: test_alloc: size=32, gfp=cc0, policy=right, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: memory corruption in test_corruption+0x????/0x????
-
:[ ?.?] Corrupted memory at 0x???? [ ! ] (in kfence-#???):
-[ ?.?] test_corruption+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 310 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 314 on cpu 6 at ?.?s (?.?s ago):
--
-[ ?.?] # test_kmalloc_aligned_oob_read: test_alloc: size=73, gfp=cc0, policy=right, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: out-of-bounds read in test_kmalloc_aligned_oob_read+0x????/0x????
-
:[ ?.?] Out-of-bounds read at 0x???? (105B right of kfence-#???):
-[ ?.?] test_kmalloc_aligned_oob_read+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=73, cache=kmalloc-96
-
--[ ?.?] allocated by task 320 on cpu 10 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 326 on cpu 6 at ?.?s (?.?s ago):
--
-[ ?.?] # test_kmalloc_aligned_oob_write: test_alloc: size=73, gfp=cc0, policy=right, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: memory corruption in test_kmalloc_aligned_oob_write+0x????/0x????
-
:[ ?.?] Corrupted memory at 0x???? [ ! . . . . . . . . . . . . . . . ] (in kfence-#???):
-[ ?.?] test_kmalloc_aligned_oob_write+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=73, cache=kmalloc-96
-
--[ ?.?] allocated by task 326 on cpu 8 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 328 on cpu 4 at ?.?s (?.?s ago):
--
-[ ?.?] ok 22 test_memcache_ctor
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: invalid read in test_invalid_access+0x????/0x????
-
-[ ?.?] Invalid read at 0x????:
--
-[ ?.?] # test_memcache_typesafe_by_rcu: test_alloc: size=32, gfp=cc0, policy=any, cache=1
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: use-after-free read in test_memcache_typesafe_by_rcu.cold+0x????/0x????
-
:[ ?.?] Use-after-free read at 0x???? (in kfence-#???):
-[ ?.?] test_memcache_typesafe_by_rcu.cold+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=test
-
--[ ?.?] allocated by task 336 on cpu 6 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 338 on cpu 10 at ?.?s (?.?s ago):
--
-[ ?.?] # test_krealloc: test_alloc: size=32, gfp=cc0, policy=any, cache=0
-[ ?.?] ==================================================================
:[ ?.?] BUG: KFENCE: use-after-free read in test_krealloc+0x????/0x????
-
:[ ?.?] Use-after-free read at 0x???? (in kfence-#???):
-[ ?.?] test_krealloc+0x????/0x????
-[ ?.?] kunit_try_run_case+0x????/0x????
--
-[ ?.?] ret_from_fork_asm+0x????/0x????
-
:[ ?.?] kfence-#???: 0x????-0x????, size=32, cache=kmalloc-32
-
--[ ?.?] allocated by task 338 on cpu 4 at ?.?s (?.?s ago):
+-[ ?.?] allocated by task 340 on cpu 6 at ?.?s (?.?s ago):
--
-[ ?.?] # test_memcache_alloc_bulk: setup_test_cache: size=32, ctor=0x????
-[ ?.?] ok 27 test_memcache_alloc_bulk
:[ ?.?] # kfence: pass:25 fail:0 skip:2 total:27
-[ ?.?] # Totals: pass:25 fail:0 skip:2 total:27
:[ ?.?] ok 8 kfence
-[ ?.?] KTAP version 1
-[ ?.?] # Subtest: damon
If you'd like me to grep for something more specific, please let me
know.
Cheers,
Alex
--
<https://www.alejandro-colomar.es/>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2025-07-07 20:53 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-05 20:33 [RFC v1 0/3] Add and use seprintf() instead of less ergonomic APIs Alejandro Colomar
2025-07-05 20:33 ` [RFC v1 1/3] vsprintf: Add [v]seprintf(), [v]stprintf() Alejandro Colomar
2025-07-05 20:40 ` Alejandro Colomar
2025-07-07 9:47 ` Alexander Potapenko
2025-07-07 14:59 ` Alejandro Colomar
2025-07-05 20:33 ` [RFC v1 2/3] stacktrace, stackdepot: Add seprintf()-like variants of functions Alejandro Colomar
2025-07-05 20:33 ` [RFC v1 3/3] mm: Use seprintf() instead of less ergonomic APIs Alejandro Colomar
2025-07-05 21:54 ` Alejandro Colomar
2025-07-06 17:37 ` [RFC v2 0/5] Add and use " Alejandro Colomar
2025-07-06 17:37 ` [RFC v2 1/5] vsprintf: Add [v]seprintf(), [v]stprintf() Alejandro Colomar
2025-07-06 17:37 ` [RFC v2 2/5] stacktrace, stackdepot: Add seprintf()-like variants of functions Alejandro Colomar
2025-07-06 17:37 ` [RFC v2 3/5] mm: Use seprintf() instead of less ergonomic APIs Alejandro Colomar
2025-07-06 17:37 ` [RFC v2 4/5] array_size.h: Add ENDOF() Alejandro Colomar
2025-07-06 17:37 ` [RFC v2 5/5] mm: Fix benign off-by-one bugs Alejandro Colomar
2025-07-07 5:06 ` [RFC v3 0/7] Add and use seprintf() instead of less ergonomic APIs Alejandro Colomar
2025-07-07 5:06 ` [RFC v3 1/7] vsprintf: Add [v]seprintf(), [v]stprintf() Alejandro Colomar
2025-07-07 5:06 ` [RFC v3 2/7] stacktrace, stackdepot: Add seprintf()-like variants of functions Alejandro Colomar
2025-07-07 5:06 ` [RFC v3 3/7] mm: Use seprintf() instead of less ergonomic APIs Alejandro Colomar
2025-07-07 7:44 ` Marco Elver
2025-07-07 14:39 ` Alejandro Colomar
2025-07-07 14:58 ` Marco Elver
2025-07-07 18:51 ` Alejandro Colomar
2025-07-07 19:08 ` Marco Elver
2025-07-07 20:53 ` Alejandro Colomar [this message]
2025-07-07 19:17 ` Linus Torvalds
2025-07-07 19:35 ` Al Viro
2025-07-07 20:46 ` Linus Torvalds
2025-07-07 20:29 ` Alejandro Colomar
2025-07-07 20:49 ` Linus Torvalds
2025-07-07 21:05 ` Alejandro Colomar
2025-07-07 21:26 ` Alejandro Colomar
2025-07-07 22:17 ` Linus Torvalds
2025-07-08 2:20 ` Alejandro Colomar
2025-07-12 20:58 ` Christopher Bazley
2025-07-14 7:57 ` Christopher Bazley
2025-07-07 5:06 ` [RFC v3 4/7] array_size.h: Add ENDOF() Alejandro Colomar
2025-07-07 5:06 ` [RFC v3 5/7] mm: Fix benign off-by-one bugs Alejandro Colomar
2025-07-07 7:46 ` Marco Elver
2025-07-07 7:53 ` Michal Hocko
2025-07-07 14:42 ` Alejandro Colomar
2025-07-07 15:12 ` Michal Hocko
2025-07-07 15:29 ` Alejandro Colomar
2025-07-07 5:06 ` [RFC v3 6/7] sprintf: Add [V]STPRINTF() Alejandro Colomar
2025-07-07 5:06 ` [RFC v3 7/7] mm: Use [V]STPRINTF() to avoid specifying the array size Alejandro Colomar
2025-07-07 5:11 ` [RFC v3 0/7] Add and use seprintf() instead of less ergonomic APIs Alejandro Colomar
2025-07-10 2:47 ` [RFC v4 0/7] Add and use sprintf_end() " Alejandro Colomar
2025-07-10 2:47 ` alx-0049r2 - add seprintf() Alejandro Colomar
2025-07-10 2:48 ` [RFC v4 1/7] vsprintf: Add [v]sprintf_end() Alejandro Colomar
2025-07-10 2:48 ` [RFC v4 2/7] stacktrace, stackdepot: Add sprintf_end()-like variants of functions Alejandro Colomar
2025-07-10 2:48 ` [RFC v4 3/7] mm: Use sprintf_end() instead of less ergonomic APIs Alejandro Colomar
2025-07-10 2:48 ` [RFC v4 4/7] array_size.h: Add ENDOF() Alejandro Colomar
2025-07-10 2:48 ` [RFC v4 5/7] mm: Fix benign off-by-one bugs Alejandro Colomar
2025-07-10 2:48 ` [RFC v4 6/7] sprintf: Add [V]SPRINTF_END() Alejandro Colomar
2025-07-10 15:52 ` Linus Torvalds
2025-07-10 18:30 ` Alejandro Colomar
2025-07-10 21:21 ` Alejandro Colomar
2025-07-10 22:08 ` Linus Torvalds
2025-07-10 2:49 ` [RFC v4 7/7] mm: Use [V]SPRINTF_END() to avoid specifying the array size Alejandro Colomar
2025-07-10 21:30 ` [RFC v5 0/7] Add and use sprintf_{end,array}() instead of less ergonomic APIs Alejandro Colomar
2025-07-10 21:30 ` [RFC v5 1/7] vsprintf: Add [v]sprintf_end() Alejandro Colomar
2025-07-10 21:30 ` [RFC v5 2/7] stacktrace, stackdepot: Add sprintf_end()-like variants of functions Alejandro Colomar
2025-07-10 21:30 ` [RFC v5 3/7] mm: Use sprintf_end() instead of less ergonomic APIs Alejandro Colomar
2025-07-10 21:31 ` [RFC v5 4/7] array_size.h: Add ENDOF() Alejandro Colomar
2025-07-10 21:31 ` [RFC v5 5/7] mm: Fix benign off-by-one bugs Alejandro Colomar
2025-07-10 21:31 ` [RFC v5 6/7] sprintf: Add [v]sprintf_array() Alejandro Colomar
2025-07-10 21:58 ` Linus Torvalds
2025-07-10 23:23 ` Alejandro Colomar
2025-07-10 23:24 ` Alejandro Colomar
2025-07-11 0:19 ` Alejandro Colomar
2025-07-11 17:43 ` David Laight
2025-07-11 19:17 ` Alejandro Colomar
2025-07-11 19:21 ` Alejandro Colomar
2025-07-11 6:05 ` Martin Uecker
2025-07-11 6:19 ` Martin Uecker
2025-07-11 17:45 ` David Laight
2025-07-11 17:58 ` Linus Torvalds
2025-07-11 19:24 ` Matthew Wilcox
2025-07-15 5:19 ` Kees Cook
2025-07-15 6:24 ` Martin Uecker
2025-07-17 23:44 ` Kees Cook
2025-07-15 7:08 ` Alejandro Colomar
2025-07-17 23:47 ` Kees Cook
2025-07-18 0:56 ` Alejandro Colomar
2025-07-11 18:01 ` Martin Uecker
2025-07-10 21:31 ` [RFC v5 7/7] mm: Use [v]sprintf_array() to avoid specifying the array size Alejandro Colomar
2025-07-11 1:56 ` [RFC v6 0/8] Add and use sprintf_{end,trunc,array}() instead of less ergonomic APIs Alejandro Colomar
2025-07-11 1:56 ` [RFC v6 1/8] vsprintf: Add [v]sprintf_trunc() Alejandro Colomar
2025-07-11 1:56 ` [RFC v6 2/8] vsprintf: Add [v]sprintf_end() Alejandro Colomar
2025-07-11 1:56 ` [RFC v6 3/8] sprintf: Add [v]sprintf_array() Alejandro Colomar
2025-07-11 1:56 ` [RFC v6 4/8] stacktrace, stackdepot: Add sprintf_end()-like variants of functions Alejandro Colomar
2025-07-11 1:57 ` [RFC v6 5/8] mm: Use sprintf_end() instead of less ergonomic APIs Alejandro Colomar
2025-07-11 1:57 ` [RFC v6 6/8] array_size.h: Add ENDOF() Alejandro Colomar
2025-07-11 1:57 ` [RFC v6 7/8] mm: Fix benign off-by-one bugs Alejandro Colomar
2025-07-11 1:57 ` [RFC v6 8/8] mm: Use [v]sprintf_array() to avoid specifying the array size Alejandro Colomar
2025-07-08 6:43 ` [RFC v1 0/3] Add and use seprintf() instead of less ergonomic APIs Rasmus Villemoes
2025-07-08 11:36 ` Alejandro Colomar
2025-07-08 13:51 ` Rasmus Villemoes
2025-07-08 16:14 ` Alejandro Colomar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=t3wv6hlt7quhab7qqvxbx6zn4rh2oo6466urtu6tmnix63ju7v@hiwhnb5l4twf \
--to=alx@kernel.org \
--cc=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andrew@digital-domain.net \
--cc=chao.yu@oppo.com \
--cc=chris.bazley.wg14@gmail.com \
--cc=christophe.jaillet@wanadoo.fr \
--cc=cl@linux.com \
--cc=dvyukov@google.com \
--cc=elver@google.com \
--cc=glider@google.com \
--cc=harry.yoo@oracle.com \
--cc=hca@linux.ibm.com \
--cc=kasan-dev@googlegroups.com \
--cc=kees@kernel.org \
--cc=lee.schermerhorn@hp.com \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=svens@linux.ibm.com \
--cc=torvalds@linux-foundation.org \
--cc=tvrtko.ursulin@igalia.com \
--cc=vbabka@suse.cz \
--cc=ying.huang@intel.com \
--cc=~hallyn/shadow@lists.sr.ht \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).