kobject: make kobject_get_ownership() take a constant kobject *
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 21 Nov 2022 09:46:45 +0000 (10:46 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 22 Nov 2022 16:34:29 +0000 (17:34 +0100)
The call, kobject_get_ownership(), does not modify the kobject passed
into it, so make it const.  This propagates down into the kobj_type
function callbacks so make the kobject passed into them also const,
ensuring that nothing in the kobject is being changed here.

This helps make it more obvious what calls and callbacks do, and do not,
modify structures passed to them.

Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Anna Schumaker <anna@kernel.org>
Cc: Roopa Prabhu <roopa@nvidia.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Paolo Abeni <pabeni@redhat.com>
Cc: Chuck Lever <chuck.lever@oracle.com>
Cc: Jeff Layton <jlayton@kernel.org>
Cc: linux-nfs@vger.kernel.org
Cc: bridge@lists.linux-foundation.org
Cc: netdev@vger.kernel.org
Acked-by: Jakub Kicinski <kuba@kernel.org>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
Acked-by: Nikolay Aleksandrov <razor@blackwall.org>
Link: https://lore.kernel.org/r/20221121094649.1556002-1-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/base/class.c
drivers/base/core.c
fs/nfs/sysfs.c
include/linux/kobject.h
lib/kobject.c
net/bridge/br_if.c
net/core/net-sysfs.c
net/sunrpc/sysfs.c

index 8ceafb7d0203b26011c9e5ff84df914f0aba1f45..86ec554cfe6041982a22d0ca298892c77278886b 100644 (file)
@@ -62,7 +62,7 @@ static void class_release(struct kobject *kobj)
        kfree(cp);
 }
 
-static const struct kobj_ns_type_operations *class_child_ns_type(struct kobject *kobj)
+static const struct kobj_ns_type_operations *class_child_ns_type(const struct kobject *kobj)
 {
        struct subsys_private *cp = to_subsys_private(kobj);
        struct class *class = cp->class;
index ab01828fe6c1f7dd00dcfc32e4d99f05e1060b6b..a79b99ecf4d8be94f77c16568cf47da1457ed379 100644 (file)
@@ -2335,7 +2335,7 @@ static void device_release(struct kobject *kobj)
        kfree(p);
 }
 
-static const void *device_namespace(struct kobject *kobj)
+static const void *device_namespace(const struct kobject *kobj)
 {
        const struct device *dev = kobj_to_dev(kobj);
        const void *ns = NULL;
@@ -2346,7 +2346,7 @@ static const void *device_namespace(struct kobject *kobj)
        return ns;
 }
 
-static void device_get_ownership(struct kobject *kobj, kuid_t *uid, kgid_t *gid)
+static void device_get_ownership(const struct kobject *kobj, kuid_t *uid, kgid_t *gid)
 {
        const struct device *dev = kobj_to_dev(kobj);
 
@@ -2986,9 +2986,9 @@ static void class_dir_release(struct kobject *kobj)
 }
 
 static const
-struct kobj_ns_type_operations *class_dir_child_ns_type(struct kobject *kobj)
+struct kobj_ns_type_operations *class_dir_child_ns_type(const struct kobject *kobj)
 {
-       struct class_dir *dir = to_class_dir(kobj);
+       const struct class_dir *dir = to_class_dir(kobj);
        return dir->class->ns_type;
 }
 
index a6f740366963100b24a8fd8d6cdac139385283b3..67a87800b3a9724d177805c5ac87b28c4c76bbf7 100644 (file)
@@ -26,7 +26,7 @@ static void nfs_netns_object_release(struct kobject *kobj)
 }
 
 static const struct kobj_ns_type_operations *nfs_netns_object_child_ns_type(
-               struct kobject *kobj)
+               const struct kobject *kobj)
 {
        return &net_ns_type_operations;
 }
@@ -130,7 +130,7 @@ static void nfs_netns_client_release(struct kobject *kobj)
        kfree(c);
 }
 
-static const void *nfs_netns_client_namespace(struct kobject *kobj)
+static const void *nfs_netns_client_namespace(const struct kobject *kobj)
 {
        return container_of(kobj, struct nfs_netns_client, kobject)->net;
 }
index fc40fc81aeb1d3e90f8a1a5983beced63754587b..d978dbceb50d15fd357ff92a33626160bd57463f 100644 (file)
@@ -113,7 +113,7 @@ extern struct kobject * __must_check kobject_get_unless_zero(
 extern void kobject_put(struct kobject *kobj);
 
 extern const void *kobject_namespace(struct kobject *kobj);
-extern void kobject_get_ownership(struct kobject *kobj,
+extern void kobject_get_ownership(const struct kobject *kobj,
                                  kuid_t *uid, kgid_t *gid);
 extern char *kobject_get_path(const struct kobject *kobj, gfp_t flag);
 
@@ -121,9 +121,9 @@ struct kobj_type {
        void (*release)(struct kobject *kobj);
        const struct sysfs_ops *sysfs_ops;
        const struct attribute_group **default_groups;
-       const struct kobj_ns_type_operations *(*child_ns_type)(struct kobject *kobj);
-       const void *(*namespace)(struct kobject *kobj);
-       void (*get_ownership)(struct kobject *kobj, kuid_t *uid, kgid_t *gid);
+       const struct kobj_ns_type_operations *(*child_ns_type)(const struct kobject *kobj);
+       const void *(*namespace)(const struct kobject *kobj);
+       void (*get_ownership)(const struct kobject *kobj, kuid_t *uid, kgid_t *gid);
 };
 
 struct kobj_uevent_env {
index ba1017cd67d1608a895dc2f8cbfbe592757c91e7..26e744a46d24757a57f7565893bf0b7843342a02 100644 (file)
@@ -45,7 +45,7 @@ const void *kobject_namespace(struct kobject *kobj)
  * representation of given kobject. Normally used to adjust ownership of
  * objects in a container.
  */
-void kobject_get_ownership(struct kobject *kobj, kuid_t *uid, kgid_t *gid)
+void kobject_get_ownership(const struct kobject *kobj, kuid_t *uid, kgid_t *gid)
 {
        *uid = GLOBAL_ROOT_UID;
        *gid = GLOBAL_ROOT_GID;
@@ -907,7 +907,7 @@ static void kset_release(struct kobject *kobj)
        kfree(kset);
 }
 
-static void kset_get_ownership(struct kobject *kobj, kuid_t *uid, kgid_t *gid)
+static void kset_get_ownership(const struct kobject *kobj, kuid_t *uid, kgid_t *gid)
 {
        if (kobj->parent)
                kobject_get_ownership(kobj->parent, uid, gid);
index 228fd5b20f109e4190f6e0e169c77683c8d2ec61..ad13b48e3e08a3256c210475c901d943b57f057d 100644 (file)
@@ -262,7 +262,7 @@ static void release_nbp(struct kobject *kobj)
        kfree(p);
 }
 
-static void brport_get_ownership(struct kobject *kobj, kuid_t *uid, kgid_t *gid)
+static void brport_get_ownership(const struct kobject *kobj, kuid_t *uid, kgid_t *gid)
 {
        struct net_bridge_port *p = kobj_to_brport(kobj);
 
index a8c5a7cd9701d0df0b107865ab45cf98f099316d..9cfc80b8ed25f87ffedd9726165d89b1e8797d09 100644 (file)
@@ -1020,7 +1020,7 @@ static void rx_queue_release(struct kobject *kobj)
        netdev_put(queue->dev, &queue->dev_tracker);
 }
 
-static const void *rx_queue_namespace(struct kobject *kobj)
+static const void *rx_queue_namespace(const struct kobject *kobj)
 {
        struct netdev_rx_queue *queue = to_rx_queue(kobj);
        struct device *dev = &queue->dev->dev;
@@ -1032,7 +1032,7 @@ static const void *rx_queue_namespace(struct kobject *kobj)
        return ns;
 }
 
-static void rx_queue_get_ownership(struct kobject *kobj,
+static void rx_queue_get_ownership(const struct kobject *kobj,
                                   kuid_t *uid, kgid_t *gid)
 {
        const struct net *net = rx_queue_namespace(kobj);
@@ -1623,7 +1623,7 @@ static void netdev_queue_release(struct kobject *kobj)
        netdev_put(queue->dev, &queue->dev_tracker);
 }
 
-static const void *netdev_queue_namespace(struct kobject *kobj)
+static const void *netdev_queue_namespace(const struct kobject *kobj)
 {
        struct netdev_queue *queue = to_netdev_queue(kobj);
        struct device *dev = &queue->dev->dev;
@@ -1635,7 +1635,7 @@ static const void *netdev_queue_namespace(struct kobject *kobj)
        return ns;
 }
 
-static void netdev_queue_get_ownership(struct kobject *kobj,
+static void netdev_queue_get_ownership(const struct kobject *kobj,
                                       kuid_t *uid, kgid_t *gid)
 {
        const struct net *net = netdev_queue_namespace(kobj);
index c1f559892ae8a28cf2de96fe79593125c401a9fd..1e05a2d723f4cc1609c4e4876ee84f7aed2212f1 100644 (file)
@@ -31,7 +31,7 @@ static void rpc_sysfs_object_release(struct kobject *kobj)
 }
 
 static const struct kobj_ns_type_operations *
-rpc_sysfs_object_child_ns_type(struct kobject *kobj)
+rpc_sysfs_object_child_ns_type(const struct kobject *kobj)
 {
        return &net_ns_type_operations;
 }
@@ -381,17 +381,17 @@ static void rpc_sysfs_xprt_release(struct kobject *kobj)
        kfree(xprt);
 }
 
-static const void *rpc_sysfs_client_namespace(struct kobject *kobj)
+static const void *rpc_sysfs_client_namespace(const struct kobject *kobj)
 {
        return container_of(kobj, struct rpc_sysfs_client, kobject)->net;
 }
 
-static const void *rpc_sysfs_xprt_switch_namespace(struct kobject *kobj)
+static const void *rpc_sysfs_xprt_switch_namespace(const struct kobject *kobj)
 {
        return container_of(kobj, struct rpc_sysfs_xprt_switch, kobject)->net;
 }
 
-static const void *rpc_sysfs_xprt_namespace(struct kobject *kobj)
+static const void *rpc_sysfs_xprt_namespace(const struct kobject *kobj)
 {
        return container_of(kobj, struct rpc_sysfs_xprt,
                            kobject)->xprt->xprt_net;