kobject: Constify struct kset_uevent_ops
authorEmese Revfy <re.emese@gmail.com>
Thu, 31 Dec 2009 13:52:51 +0000 (14:52 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 8 Mar 2010 01:04:49 +0000 (17:04 -0800)
Constify struct kset_uevent_ops.

This is part of the ops structure constification
effort started by Arjan van de Ven et al.

Benefits of this constification:

 * prevents modification of data that is shared
   (referenced) by many other structure instances
   at runtime

 * detects/prevents accidental (but not intentional)
   modification attempts on archs that enforce
   read-only kernel data at runtime

 * potentially better optimized code as the compiler
   can assume that the const data cannot be changed

 * the compiler/linker move const data into .rodata
   and therefore exclude them from false sharing

Signed-off-by: Emese Revfy <re.emese@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/base/bus.c
drivers/base/core.c
drivers/base/memory.c
fs/gfs2/sys.c
include/linux/kobject.h
kernel/params.c
lib/kobject.c
lib/kobject_uevent.c
mm/slub.c

index c0c5a43d9fb3e6cadbd962b7272766be472741a6..2afe599eb35d4c6add13d302001c9791c500946a 100644 (file)
@@ -154,7 +154,7 @@ static int bus_uevent_filter(struct kset *kset, struct kobject *kobj)
        return 0;
 }
 
-static struct kset_uevent_ops bus_uevent_ops = {
+static const struct kset_uevent_ops bus_uevent_ops = {
        .filter = bus_uevent_filter,
 };
 
index f6c73a9e3d95776f4144e6bf3c4261f798fa48c8..58ec1069f4b02dda61d74566506fb3aa04641fec 100644 (file)
@@ -252,7 +252,7 @@ static int dev_uevent(struct kset *kset, struct kobject *kobj,
        return retval;
 }
 
-static struct kset_uevent_ops device_uevent_ops = {
+static const struct kset_uevent_ops device_uevent_ops = {
        .filter =       dev_uevent_filter,
        .name =         dev_uevent_name,
        .uevent =       dev_uevent,
index 495f15e92d4cf8fd54618671961116bc4fd6b623..2f8691511190f921e1e6a75beab9581d123d68d7 100644 (file)
@@ -44,7 +44,7 @@ static int memory_uevent(struct kset *kset, struct kobject *obj, struct kobj_uev
        return retval;
 }
 
-static struct kset_uevent_ops memory_uevent_ops = {
+static const struct kset_uevent_ops memory_uevent_ops = {
        .name           = memory_uevent_name,
        .uevent         = memory_uevent,
 };
index b5f1a46133c8f208804b35876823d1270a625e7c..543503010ed06fc9722c8caa2b3eb18be662e802 100644 (file)
@@ -574,7 +574,7 @@ static int gfs2_uevent(struct kset *kset, struct kobject *kobj,
        return 0;
 }
 
-static struct kset_uevent_ops gfs2_uevent_ops = {
+static const struct kset_uevent_ops gfs2_uevent_ops = {
        .uevent = gfs2_uevent,
 };
 
index 58ae8e00fcddd067b9815b8831c5c92986187584..57a1eaae90966102108c0aea76bc2d972d3c9eb1 100644 (file)
@@ -118,9 +118,9 @@ struct kobj_uevent_env {
 };
 
 struct kset_uevent_ops {
-       int (*filter)(struct kset *kset, struct kobject *kobj);
-       const char *(*name)(struct kset *kset, struct kobject *kobj);
-       int (*uevent)(struct kset *kset, struct kobject *kobj,
+       int (* const filter)(struct kset *kset, struct kobject *kobj);
+       const char *(* const name)(struct kset *kset, struct kobject *kobj);
+       int (* const uevent)(struct kset *kset, struct kobject *kobj,
                      struct kobj_uevent_env *env);
 };
 
@@ -155,14 +155,14 @@ struct kset {
        struct list_head list;
        spinlock_t list_lock;
        struct kobject kobj;
-       struct kset_uevent_ops *uevent_ops;
+       const struct kset_uevent_ops *uevent_ops;
 };
 
 extern void kset_init(struct kset *kset);
 extern int __must_check kset_register(struct kset *kset);
 extern void kset_unregister(struct kset *kset);
 extern struct kset * __must_check kset_create_and_add(const char *name,
-                                               struct kset_uevent_ops *u,
+                                               const struct kset_uevent_ops *u,
                                                struct kobject *parent_kobj);
 
 static inline struct kset *to_kset(struct kobject *kobj)
index 8d95f5451b227d17cb40e1290dea72b028ca0ec9..48370be3c0a18cf42fe15215cb67d6a57dc6c06a 100644 (file)
@@ -736,7 +736,7 @@ static int uevent_filter(struct kset *kset, struct kobject *kobj)
        return 0;
 }
 
-static struct kset_uevent_ops module_uevent_ops = {
+static const struct kset_uevent_ops module_uevent_ops = {
        .filter = uevent_filter,
 };
 
index b512b746d2aff464e1c18a01c53300ef7b6e68f4..cecf5a0ef6e1e001b5eb5efccd7e6c28da8c4aaa 100644 (file)
@@ -789,7 +789,7 @@ static struct kobj_type kset_ktype = {
  * If the kset was not able to be created, NULL will be returned.
  */
 static struct kset *kset_create(const char *name,
-                               struct kset_uevent_ops *uevent_ops,
+                               const struct kset_uevent_ops *uevent_ops,
                                struct kobject *parent_kobj)
 {
        struct kset *kset;
@@ -832,7 +832,7 @@ static struct kset *kset_create(const char *name,
  * If the kset was not able to be created, NULL will be returned.
  */
 struct kset *kset_create_and_add(const char *name,
-                                struct kset_uevent_ops *uevent_ops,
+                                const struct kset_uevent_ops *uevent_ops,
                                 struct kobject *parent_kobj)
 {
        struct kset *kset;
index 920a3ca6e2590ddc3d64950a729441758d0a5ce5..c9d3a3e8405d884c80eeb6e15a7379f48fd333f6 100644 (file)
@@ -95,7 +95,7 @@ int kobject_uevent_env(struct kobject *kobj, enum kobject_action action,
        const char *subsystem;
        struct kobject *top_kobj;
        struct kset *kset;
-       struct kset_uevent_ops *uevent_ops;
+       const struct kset_uevent_ops *uevent_ops;
        u64 seq;
        int i = 0;
        int retval = 0;
index 0bfd3863d521b29dfd25888bdd3692ef74ea4495..a26753c12dcddb35f73880a27dff29fe7c9bf9a8 100644 (file)
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4409,7 +4409,7 @@ static int uevent_filter(struct kset *kset, struct kobject *kobj)
        return 0;
 }
 
-static struct kset_uevent_ops slab_uevent_ops = {
+static const struct kset_uevent_ops slab_uevent_ops = {
        .filter = uevent_filter,
 };