Re: [PATCH v2 16/16] kobject: kset_uevent_ops: make uevent() callback take a const *

From: Rafael J. Wysocki
Date: Wed Jan 11 2023 - 12:39:47 EST


On Wed, Jan 11, 2023 at 12:30 PM Greg Kroah-Hartman
<gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> The uevent() callback in struct kset_uevent_ops does not modify the
> kobject passed into it, so make the pointer const to enforce this
> restriction. When doing so, fix up all existing uevent() callbacks to
> have the correct signature to preserve the build.
>
> Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>
> Cc: Christine Caulfield <ccaulfie@xxxxxxxxxx>
> Cc: David Teigland <teigland@xxxxxxxxxx>
> Cc: Bob Peterson <rpeterso@xxxxxxxxxx>
> Cc: Andreas Gruenbacher <agruenba@xxxxxxxxxx>
> Cc: cluster-devel@xxxxxxxxxx
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

Acked-by: Rafael J. Wysocki <rafael@xxxxxxxxxx>

> ---
> drivers/base/core.c | 4 ++--
> fs/dlm/lockspace.c | 4 ++--
> fs/gfs2/sys.c | 6 +++---
> include/linux/kobject.h | 2 +-
> 4 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/base/core.c b/drivers/base/core.c
> index 72ec54a8a4e1..b0cee0f30d8d 100644
> --- a/drivers/base/core.c
> +++ b/drivers/base/core.c
> @@ -2387,9 +2387,9 @@ static const char *dev_uevent_name(const struct kobject *kobj)
> return NULL;
> }
>
> -static int dev_uevent(struct kobject *kobj, struct kobj_uevent_env *env)
> +static int dev_uevent(const struct kobject *kobj, struct kobj_uevent_env *env)
> {
> - struct device *dev = kobj_to_dev(kobj);
> + const struct device *dev = kobj_to_dev(kobj);
> int retval = 0;
>
> /* add device node properties if present */
> diff --git a/fs/dlm/lockspace.c b/fs/dlm/lockspace.c
> index d0b4e2181a5f..9b6cfc4c30e3 100644
> --- a/fs/dlm/lockspace.c
> +++ b/fs/dlm/lockspace.c
> @@ -215,9 +215,9 @@ static int do_uevent(struct dlm_ls *ls, int in)
> return ls->ls_uevent_result;
> }
>
> -static int dlm_uevent(struct kobject *kobj, struct kobj_uevent_env *env)
> +static int dlm_uevent(const struct kobject *kobj, struct kobj_uevent_env *env)
> {
> - struct dlm_ls *ls = container_of(kobj, struct dlm_ls, ls_kobj);
> + const struct dlm_ls *ls = container_of(kobj, struct dlm_ls, ls_kobj);
>
> add_uevent_var(env, "LOCKSPACE=%s", ls->ls_name);
> return 0;
> diff --git a/fs/gfs2/sys.c b/fs/gfs2/sys.c
> index d87ea98cf535..d8dfabb0bc12 100644
> --- a/fs/gfs2/sys.c
> +++ b/fs/gfs2/sys.c
> @@ -767,10 +767,10 @@ void gfs2_sys_fs_del(struct gfs2_sbd *sdp)
> wait_for_completion(&sdp->sd_kobj_unregister);
> }
>
> -static int gfs2_uevent(struct kobject *kobj, struct kobj_uevent_env *env)
> +static int gfs2_uevent(const struct kobject *kobj, struct kobj_uevent_env *env)
> {
> - struct gfs2_sbd *sdp = container_of(kobj, struct gfs2_sbd, sd_kobj);
> - struct super_block *s = sdp->sd_vfs;
> + const struct gfs2_sbd *sdp = container_of(kobj, struct gfs2_sbd, sd_kobj);
> + const struct super_block *s = sdp->sd_vfs;
>
> add_uevent_var(env, "LOCKTABLE=%s", sdp->sd_table_name);
> add_uevent_var(env, "LOCKPROTO=%s", sdp->sd_proto_name);
> diff --git a/include/linux/kobject.h b/include/linux/kobject.h
> index 58a5b75612e3..bdab370a24f4 100644
> --- a/include/linux/kobject.h
> +++ b/include/linux/kobject.h
> @@ -137,7 +137,7 @@ struct kobj_uevent_env {
> struct kset_uevent_ops {
> int (* const filter)(const struct kobject *kobj);
> const char *(* const name)(const struct kobject *kobj);
> - int (* const uevent)(struct kobject *kobj, struct kobj_uevent_env *env);
> + int (* const uevent)(const struct kobject *kobj, struct kobj_uevent_env *env);
> };
>
> struct kobj_attribute {
> --
> 2.39.0
>