Re: [PATCH v3 2/4] kernel: refactor lookup_or_create_module_kobject()
From: Petr Pavlu
Date: Thu Feb 13 2025 - 11:02:02 EST
On 2/11/25 22:48, Shyam Saini wrote:
> In the unlikely event of the allocation failing, it is better to let
> the machine boot with a not fully populated sysfs than to kill it with
> this BUG_ON(). All callers are already prepared for
> lookup_or_create_module_kobject() returning NULL.
>
> This is also preparation for calling this function from non __init
> code, where using BUG_ON for allocation failure handling is not
> acceptable.
I think some error reporting should be cleaned up here.
The current situation is that locate_module_kobject() can fail in
several cases and all these situations are loudly reported by the
function, either by BUG_ON() or pr_crit(). Consistently with that, both
its current callers version_sysfs_builtin() and kernel_add_sysfs_param()
don't do any reporting if locate_module_kobject() fails; they simply
return.
The series seems to introduce two somewhat suboptimal cases.
With this patch, when either version_sysfs_builtin() or
kernel_add_sysfs_param() calls lookup_or_create_module_kobject() and it
fails because of a potential kzalloc() error, the problem is silently
ignored.
Similarly, in the patch #4, when module_add_driver() calls
lookup_or_create_module_kobject() and the function fails, the problem
may or may not be reported, depending on the error.
I'd suggest something as follows:
* Drop the pr_crit() reporting in lookup_or_create_module_kobject().
* Have version_sysfs_builtin() and kernel_add_sysfs_param() log an error
when lookup_or_create_module_kobject() fails. Using BUG_ON() might be
appropriate, as that is already what is used in
kernel_add_sysfs_param()?
* Update module_add_driver() to propagate any error from
lookup_or_create_module_kobject() up the stack.
--
Thanks,
Petr