All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joe Lawrence <joe.lawrence@redhat.com>
To: Petr Mladek <pmladek@suse.com>, Yafang Shao <laoar.shao@gmail.com>
Cc: jpoimboe@kernel.org, jikos@kernel.org, mbenes@suse.cz,
	song@kernel.org, live-patching@vger.kernel.org
Subject: Re: [PATCH v3 2/2] selftests/livepatch: filter debug messages in check_result()
Date: Wed, 26 Aug 2026 16:26:57 -0400	[thread overview]
Message-ID: <fb7ed056-00d9-4484-9cb6-159cba97eb75@redhat.com> (raw)
In-Reply-To: <ao6bxf5D9O1U-JJ7@pathway.suse.cz>

On 8/26/26 3:54 AM, Petr Mladek wrote:
> On Fri 2026-08-21 11:16:48, Yafang Shao wrote:
>> CONFIG_DEBUG_KOBJECT makes kobject_add_internal(), kobject_uevent_env(),
>> fill_kobj_path() and friends emit pr_debug() messages, and
>> CONFIG_DEBUG_KOBJECT_RELEASE makes kobject_release() emit a pr_info()
>> for every delayed kobject free.  All of these carry the "kobject:" prefix
>> via pr_fmt(), e.g.:
>>
>>  # --- expected
>>  # +++ result
>>  # @@ -1,7 +1,13 @@
>>  #  % insmod test_modules/test_klp_livepatch.ko
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): kobject_add_internal: parent: 'module', set: 'module'
>>  # +kobject: 'holders' (000000002856f0ae): kobject_add_internal: parent: 'test_klp_livepatch', set: '<NULL>'
>>  # +kobject: 'test_klp_livepatch' (00000000dcae1113): kobject_add_internal: parent: 'livepatch', set: '<NULL>'
>>  # +kobject: 'vmlinux' (000000007b8837e6): kobject_add_internal: parent: 'test_klp_livepatch', set: '<NULL>'
>>  #  livepatch: enabling patch 'test_klp_livepatch'
>>  #  livepatch: 'test_klp_livepatch': initializing patching transition
>>  #  livepatch: 'test_klp_livepatch': starting patching transition
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): kobject_uevent_env
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): fill_kobj_path: path = '/module/test_klp_livepatch'
>>  #  livepatch: 'test_klp_livepatch': completing patching transition
>>  #  livepatch: 'test_klp_livepatch': patching complete
>>  #  % echo 0 > /sys/kernel/livepatch/test_klp_livepatch/enabled
>>  # @@ -9,4 +15,17 @@ livepatch: 'test_klp_livepatch': initial
>>  #  livepatch: 'test_klp_livepatch': starting unpatching transition
>>  #  livepatch: 'test_klp_livepatch': completing unpatching transition
>>  #  livepatch: 'test_klp_livepatch': unpatching complete
>>  # +kobject: 'test_klp_livepatch' (00000000dcae1113): kobject_release, parent 00000000f8785d63 (delayed 2000)
>>  # +kobject: 'test_klp_livepatch' (00000000dcae1113): kobject_cleanup, parent 00000000f8785d63
>>  # +kobject: 'test_klp_livepatch' (00000000dcae1113): auto cleanup kobject_del
>>  # +kobject: 'test_klp_livepatch' (00000000dcae1113): calling ktype release
>>  # +kobject: 'test_klp_livepatch': free name
>>  #  % rmmod test_klp_livepatch
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): kobject_release, parent 0000000052e5c022 (delayed 3000)
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): kobject_cleanup, parent 0000000052e5c022
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): auto cleanup kobject_del
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): auto cleanup 'remove' event
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): kobject_uevent_env
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): fill_kobj_path: path = '/module/test_klp_livepatch'
>>  # +kobject: 'test_klp_livepatch' (000000009dbf565e): calling ktype release
>>  # +kobject: 'test_klp_livepatch': free name
>>  #
>>  # ERROR: livepatch kselftest(s) failed
>>  not ok 1 selftests: livepatch: test-livepatch.sh # exit=1
>>
>> The livepatch test modules' kobjects are named "test_klp_*", so these
>> lines match the check_result() grep for "test_klp" and leak into the
>> result.  The extra lines no longer match the expected output, so the
>> selftests fail when either debug config is enabled.
>>
>> Filtering out every "kobject:" line also hides real WARN()s, e.g. the
>> one kobject_get() emits for an object whose refcount was not
>> initialized.  Filtering with "dmesg --level=..." is not enough either,
>> since the tests enable livepatch pr_debug() through dynamic_debug/control
>> and expect its messages.  Read the log with "dmesg --raw" and drop only
>> the debug-level messages without the "livepatch:" prefix, plus the
>> specific delayed-release info message.
>>
>> Suggested-by: Petr Mladek <pmladek@suse.com>
>> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> 
> I am not much familiar with awk. But the changes look good
> and selftests passed so:
> 

I translate the awk as:
- read through the steam, print nothing yet,
  - when the last_dmesg line is encountered, set the p variable
- continue through the stream and if p is set,
  - print a line if its initial field is "<7>" or "livepatch:"

which LGTM.


One dmesg nit: years ago someone complained about BusyBox vs. selftests
compatibility:

https://lore.kernel.org/live-patching/20200710183745.19730-1-joe.lawrence@redhat.com/

and my google-foo tells me that its dmesg only supports -r and not
--raw.  I don't know if it's worth using the short option without
testing it, but -r would also supported by util-linux's dmesg, fwiw.

-- 
Joe


  reply	other threads:[~2026-08-26 20:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-21  3:16 [PATCH v3 0/2] livepatch: Fix issues around CONFIG_DEBUG_KOBJECT_RELEASE Yafang Shao
2026-08-21  3:16 ` [PATCH v3 1/2] livepatch: Fix UAF of unregistered patch kobjects Yafang Shao
2026-08-21 20:45   ` Song Liu
2026-08-26  7:52   ` Petr Mladek
2026-08-21  3:16 ` [PATCH v3 2/2] selftests/livepatch: filter debug messages in check_result() Yafang Shao
2026-08-21 20:45   ` Song Liu
2026-08-26  7:54   ` Petr Mladek
2026-08-26 20:26     ` Joe Lawrence [this message]
2026-08-27  5:55       ` Yafang Shao
2026-08-26  7:56 ` [PATCH v3 0/2] livepatch: Fix issues around CONFIG_DEBUG_KOBJECT_RELEASE Petr Mladek

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=fb7ed056-00d9-4484-9cb6-159cba97eb75@redhat.com \
    --to=joe.lawrence@redhat.com \
    --cc=jikos@kernel.org \
    --cc=jpoimboe@kernel.org \
    --cc=laoar.shao@gmail.com \
    --cc=live-patching@vger.kernel.org \
    --cc=mbenes@suse.cz \
    --cc=pmladek@suse.com \
    --cc=song@kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.