From: sashiko-bot@kernel.org
To: jpoimboe@kernel.org, mbenes@suse.cz, song@kernel.org,
joe.lawrence@redhat.com, pmladek@suse.com, jikos@kernel.org
Cc: live-patching@vger.kernel.org, "Yafang Shao" <laoar.shao@gmail.com>
Subject: Re: [PATCH v5 2/9] livepatch: Make klp_find_func() non static
Date: Sun, 09 Aug 2026 09:32:13 +0000 [thread overview]
Message-ID: <20260809093214.169491F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260809091954.22930-3-laoar.shao@gmail.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
Pre-existing issues:
- [High] A malformed livepatch module with a missing `old_name` triggers a NULL pointer dereference in `klp_find_func()`.
--
--- Patch [2]: [PATCH v5 2/9] livepatch: Make klp_find_func() non static ---
commit c50e76ff358d6d9f27c1c156d6d6f492f2cdd3b1
Author: Yafang Shao <laoar.shao@gmail.com>
livepatch: Make klp_find_func() non static
This commit makes klp_find_func() non-static to allow its use in other
source files by an upcoming patch. It also renames the parameter @old_func
to @func.
> diff --git a/kernel/livepatch/core.c b/kernel/livepatch/core.c
> index 28d15ba58a26d..5d05d6fcbf57c 100644
> --- a/kernel/livepatch/core.c
> +++ b/kernel/livepatch/core.c
[ ... ]
> @@ -82,21 +82,21 @@ static bool klp_initialized(void)
> return !!klp_root_kobj;
> }
>
> -static struct klp_func *klp_find_func(struct klp_object *obj,
> - struct klp_func *old_func)
> +/* Check if @func is present in @obj. */
> +struct klp_func *klp_find_func(struct klp_object *obj, struct klp_func *func)
> {
> - struct klp_func *func;
> + struct klp_func *obj_func;
>
> - klp_for_each_func(obj, func) {
> + klp_for_each_func(obj, obj_func) {
> /*
> * Besides identical old_sympos, also consider old_sympos
> * of 0 and 1 are identical.
> */
> - if ((strcmp(old_func->old_name, func->old_name) == 0) &&
> - ((old_func->old_sympos == func->old_sympos) ||
> - (old_func->old_sympos == 0 && func->old_sympos == 1) ||
> - (old_func->old_sympos == 1 && func->old_sympos == 0))) {
> - return func;
> + if ((strcmp(obj_func->old_name, func->old_name) == 0) &&
[Severity: High]
This is a pre-existing issue, but could this strcmp() trigger a null pointer
dereference if a malformed livepatch module has a missing old_name field?
When loading a livepatch module where patch->replace is true, if a
struct klp_func element has .new_func defined but .old_name set to null,
klp_init_patch_early() adds this unvalidated function to obj->func_list.
Subsequently, klp_add_object_nops() calls klp_find_func() on the unvalidated
new patch object before klp_init_object() performs the expected null check:
kernel/livepatch/core.c:klp_add_object_nops() {
...
func = klp_find_func(obj, old_func);
...
}
This unconditionally passes the unvalidated, null obj_func->old_name to
strcmp().
Does this allow a malformed module to bypass validation and crash the
system instead of being gracefully rejected?
> + ((obj_func->old_sympos == func->old_sympos) ||
> + (obj_func->old_sympos == 0 && func->old_sympos == 1) ||
> + (obj_func->old_sympos == 1 && func->old_sympos == 0))) {
> + return obj_func;
> }
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260809091954.22930-1-laoar.shao@gmail.com?part=2
next prev parent reply other threads:[~2026-08-09 9:32 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-09 9:19 [PATCH v5 0/9] livepatch: Introduce replace set support Yafang Shao
2026-08-09 9:19 ` [PATCH v5 1/9] livepatch: Fix wrong index in funcs cleanup error path Yafang Shao
2026-08-09 9:28 ` sashiko-bot
2026-08-09 9:36 ` Yafang Shao
2026-08-09 9:19 ` [PATCH v5 2/9] livepatch: Make klp_find_func() non static Yafang Shao
2026-08-09 9:32 ` sashiko-bot [this message]
2026-08-09 9:39 ` Yafang Shao
2026-08-09 9:19 ` [PATCH v5 3/9] livepatch: Call klp_init_patch_early() earlier Yafang Shao
2026-08-09 9:40 ` sashiko-bot
2026-08-09 9:19 ` [PATCH v5 4/9] livepatch: Implement replace set for scoped atomic replace Yafang Shao
2026-08-09 9:33 ` sashiko-bot
2026-08-09 9:19 ` [PATCH v5 5/9] livepatch: Deprecate stack_order Yafang Shao
2026-08-09 9:19 ` [PATCH v5 6/9] selftests: livepatch: Adapt atomic replace tests to provides/obsoletes Yafang Shao
2026-08-09 9:33 ` sashiko-bot
2026-08-09 9:45 ` Yafang Shao
2026-08-09 9:19 ` [PATCH v5 7/9] selftests: livepatch: Add provides/obsoletes test scenarios Yafang Shao
2026-08-09 9:31 ` sashiko-bot
2026-08-09 9:19 ` [PATCH v5 8/9] selftests: livepatch: Add test for state ID conflict across provides Yafang Shao
2026-08-09 9:19 ` [PATCH v5 9/9] selftests: livepatch: Add test for function " Yafang Shao
2026-08-09 9:49 ` sashiko-bot
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=20260809093214.169491F000E9@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=jikos@kernel.org \
--cc=joe.lawrence@redhat.com \
--cc=jpoimboe@kernel.org \
--cc=laoar.shao@gmail.com \
--cc=live-patching@vger.kernel.org \
--cc=mbenes@suse.cz \
--cc=pmladek@suse.com \
--cc=sashiko-reviews@lists.linux.dev \
--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.