From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Allen Webb <allenwebb@google.com>
Cc: "linux-modules@vger.kernel.org" <linux-modules@vger.kernel.org>,
"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Luis Chamberlain <mcgrof@kernel.org>,
"Rafael J. Wysocki" <rafael@kernel.org>
Subject: Re: [PATCH v6 1/5] module: Add empty modalias sysfs attribute
Date: Mon, 5 Dec 2022 16:42:19 +0100 [thread overview]
Message-ID: <Y44RW8Fd/WnW/4Ub@kroah.com> (raw)
In-Reply-To: <20221202224744.1447448-1-allenwebb@google.com>
On Fri, Dec 02, 2022 at 04:47:40PM -0600, Allen Webb wrote:
> This adds the modalias sysfs attribute in preparation for its
> implementation.
What implementation?
This changelog doesn't make too much sense on it's own, and that's not
good. Please explain what this attribute is for and what it is going to
do, AND include the documentation for the attribute please.
>
> Signed-off-by: Allen Webb <allenwebb@google.com>
> ---
> include/linux/module.h | 1 +
> kernel/module/internal.h | 2 ++
> kernel/module/sysfs.c | 33 +++++++++++++++++++++++++++++++++
> kernel/params.c | 7 +++++++
> 4 files changed, 43 insertions(+)
>
> diff --git a/include/linux/module.h b/include/linux/module.h
> index ec61fb53979a9..0bfa859a21566 100644
> --- a/include/linux/module.h
> +++ b/include/linux/module.h
> @@ -47,6 +47,7 @@ struct module_kobject {
> struct kobject *drivers_dir;
> struct module_param_attrs *mp;
> struct completion *kobj_completion;
> + struct bin_attribute modalias_attr;
> } __randomize_layout;
>
> struct module_attribute {
> diff --git a/kernel/module/internal.h b/kernel/module/internal.h
> index 2e2bf236f5582..8d7ae37584868 100644
> --- a/kernel/module/internal.h
> +++ b/kernel/module/internal.h
> @@ -259,11 +259,13 @@ static inline void add_kallsyms(struct module *mod, const struct load_info *info
> #endif /* CONFIG_KALLSYMS */
>
> #ifdef CONFIG_SYSFS
> +void add_modalias_attr(struct module_kobject *mk);
This can not fail?
> +static ssize_t module_modalias_read(struct file *filp, struct kobject *kobj,
> + struct bin_attribute *bin_attr,
> + char *buf, loff_t pos, size_t count)
> +{
> + return 0;
> +}
> +
> +/* Used in kernel/params.c for builtin modules.
> + *
> + * `struct module_kobject` is used instead of `struct module` because for
> + * builtin modules, the `struct module` is not available when this is called.
> + */
> +void add_modalias_attr(struct module_kobject *mk)
> +{
> + sysfs_bin_attr_init(&mk->modalias_attr);
> + mk->modalias_attr.attr.name = "modalias";
> + mk->modalias_attr.attr.mode = 0444;
> + mk->modalias_attr.read = module_modalias_read;
> + if (sysfs_create_bin_file(&mk->kobj, &mk->modalias_attr)) {
> + /* We shouldn't ignore the return type, but there is nothing to
> + * do.
> + */
Odd commenting style.
And yes, if this fails, that is NOT good, please fix that up.
But why is this a static attribute like this as part of the
module_kobject structure and not just a "normal" attribute that is
shared by all kobjects?
> + return;
> + }
> +}
> +
> +static void remove_modalias_attr(struct module_kobject *mk)
> +{
> + sysfs_remove_bin_file(&mk->kobj, &mk->modalias_attr);
Why? Isn't this automatically cleaned up by the kobject core?
> +}
> +
> static void del_usage_links(struct module *mod)
> {
> #ifdef CONFIG_MODULE_UNLOAD
> @@ -398,6 +429,7 @@ int mod_sysfs_setup(struct module *mod,
>
> add_sect_attrs(mod, info);
> add_notes_attrs(mod, info);
> + add_modalias_attr(&mod->mkobj);
Again, error checking :(
>
> return 0;
>
> @@ -415,6 +447,7 @@ int mod_sysfs_setup(struct module *mod,
>
> static void mod_sysfs_fini(struct module *mod)
> {
> + remove_modalias_attr(&mod->mkobj);
> remove_notes_attrs(mod);
> remove_sect_attrs(mod);
> mod_kobject_put(mod);
> diff --git a/kernel/params.c b/kernel/params.c
> index 5b92310425c50..b7fd5313a3118 100644
> --- a/kernel/params.c
> +++ b/kernel/params.c
> @@ -14,6 +14,12 @@
> #include <linux/ctype.h>
> #include <linux/security.h>
>
> +#ifdef CONFIG_MODULES
> +#include "module/internal.h"
> +#else
> +static inline void add_modalias_attr(struct module_kobject *mk) {}
> +#endif /* !CONFIG_MODULES */
#ifdef does not belong in .c files, and mucking around in kernel/params
to go into module/internal.h feels like a layering problem.
> +
> #ifdef CONFIG_SYSFS
> /* Protects all built-in parameters, modules use their own param_lock */
> static DEFINE_MUTEX(param_lock);
> @@ -815,6 +821,7 @@ static void __init kernel_add_sysfs_param(const char *name,
> BUG_ON(err);
> kobject_uevent(&mk->kobj, KOBJ_ADD);
> kobject_put(&mk->kobj);
> + add_modalias_attr(mk);
You drop the reference on a kobject and then add a sysfs file to it?
Why is this being called here at all?
thanks,
greg k-h
next prev parent reply other threads:[~2022-12-05 15:42 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAJzde07w6U83U_63eaF0-6zaq0cOkaymuLb3CBZ++JQi+Y9JdA@mail.gmail.com>
2022-12-01 21:16 ` [PATCH v5 0/1] Fix CONFIG_USB=y && CONFIG_MODULES not set Allen Webb
2022-12-02 12:45 ` Greg Kroah-Hartman
2022-12-02 12:46 ` Greg Kroah-Hartman
2022-12-01 21:16 ` [PATCH v5 1/1] modules: add modalias file to sysfs for modules Allen Webb
2022-12-02 12:49 ` Greg Kroah-Hartman
2022-12-02 22:45 ` [PATCH v6 0/5] Add sysfs match-id modalias attribute for USB modules Allen Webb
2022-12-02 22:47 ` [PATCH v6 1/5] module: Add empty modalias sysfs attribute Allen Webb
2022-12-02 22:47 ` [PATCH v6 2/5] drivers: Add bus_for_each for iterating over the subsystems Allen Webb
2022-12-03 18:07 ` Christophe Leroy
2022-12-05 15:45 ` Greg Kroah-Hartman
2022-12-02 22:47 ` [PATCH v6 3/5] Implement modalias sysfs attribute for modules Allen Webb
2022-12-03 18:12 ` Christophe Leroy
2022-12-05 15:51 ` Greg Kroah-Hartman
2022-12-02 22:47 ` [PATCH v6 4/5] docs: Add entry for /sys/module/*/modalias Allen Webb
2022-12-02 22:47 ` [PATCH v6 5/5] drivers: Implement module modaliases for USB Allen Webb
2022-12-03 18:25 ` Christophe Leroy
2022-12-04 8:27 ` Greg Kroah-Hartman
2022-12-05 15:53 ` Greg Kroah-Hartman
2022-12-03 18:05 ` [PATCH v6 1/5] module: Add empty modalias sysfs attribute Christophe Leroy
2022-12-05 15:42 ` Greg Kroah-Hartman [this message]
2022-12-11 10:44 ` [PATCH v5 1/1] modules: add modalias file to sysfs for modules kernel test robot
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=Y44RW8Fd/WnW/4Ub@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=allenwebb@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-modules@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=rafael@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 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).