return 0;
 }
 
-static ssize_t dlpar_store(struct class *class, struct class_attribute *attr,
+static ssize_t dlpar_store(const struct class *class, const struct class_attribute *attr,
                           const char *buf, size_t count)
 {
        struct pseries_hp_errorlog hp_elog;
        return rc ? rc : count;
 }
 
-static ssize_t dlpar_show(struct class *class, struct class_attribute *attr,
+static ssize_t dlpar_show(const struct class *class, const struct class_attribute *attr,
                          char *buf)
 {
        return sprintf(buf, "%s\n", "memory,cpu");
 
        return pseries_migrate_partition(handle);
 }
 
-static ssize_t migration_store(struct class *class,
-                              struct class_attribute *attr, const char *buf,
+static ssize_t migration_store(const struct class *class,
+                              const struct class_attribute *attr, const char *buf,
                               size_t count)
 {
        u64 streamid;
 
 }
 EXPORT_SYMBOL_GPL(class_interface_unregister);
 
-ssize_t show_class_attr_string(struct class *class,
-                              struct class_attribute *attr, char *buf)
+ssize_t show_class_attr_string(const struct class *class,
+                              const struct class_attribute *attr, char *buf)
 {
        struct class_attribute_string *cs;
 
 
        return 0;
 }
 
-static ssize_t disabled_show(struct class *class, struct class_attribute *attr,
+static ssize_t disabled_show(const struct class *class, const struct class_attribute *attr,
                             char *buf)
 {
        return sysfs_emit(buf, "%d\n", devcd_disabled);
  * so, above situation would not occur.
  */
 
-static ssize_t disabled_store(struct class *class, struct class_attribute *attr,
+static ssize_t disabled_store(const struct class *class, const struct class_attribute *attr,
                              const char *buf, size_t count)
 {
        long tmp = simple_strtol(buf, NULL, 10);
 
 }
 
 #ifdef CONFIG_FW_LOADER_USER_HELPER
-static ssize_t timeout_show(struct class *class, struct class_attribute *attr,
+static ssize_t timeout_show(const struct class *class, const struct class_attribute *attr,
                            char *buf)
 {
        return sysfs_emit(buf, "%d\n", __firmware_loading_timeout());
  *
  *     Note: zero means 'wait forever'.
  **/
-static ssize_t timeout_store(struct class *class, struct class_attribute *attr,
+static ssize_t timeout_store(const struct class *class, const struct class_attribute *attr,
                             const char *buf, size_t count)
 {
        int tmp_loading_timeout = simple_strtol(buf, NULL, 10);
 
        kfree(cls);
 }
 
-static ssize_t device_map_show(struct class *c, struct class_attribute *attr,
+static ssize_t device_map_show(const struct class *c, const struct class_attribute *attr,
                               char *data)
 {
        int n = 0;
 }
 static CLASS_ATTR_RO(device_map);
 
-static ssize_t add_store(struct class *c, struct class_attribute *attr,
+static ssize_t add_store(const struct class *c, const struct class_attribute *attr,
                         const char *buf, size_t count)
 {
        unsigned int major, minor;
 }
 static CLASS_ATTR_WO(add);
 
-static ssize_t remove_store(struct class *c, struct class_attribute *attr,
+static ssize_t remove_store(const struct class *c, const struct class_attribute *attr,
                            const char *buf, size_t count)
 {
        unsigned int major, minor;
 
  * creates a new un-initialized zram device and returns back this device's
  * device_id (or an error code if it fails to create a new device).
  */
-static ssize_t hot_add_show(struct class *class,
-                       struct class_attribute *attr,
+static ssize_t hot_add_show(const struct class *class,
+                       const struct class_attribute *attr,
                        char *buf)
 {
        int ret;
                return ret;
        return scnprintf(buf, PAGE_SIZE, "%d\n", ret);
 }
-static struct class_attribute class_attr_hot_add =
-       __ATTR(hot_add, 0400, hot_add_show, NULL);
+static CLASS_ATTR_RO(hot_add);
 
-static ssize_t hot_remove_store(struct class *class,
-                       struct class_attribute *attr,
+static ssize_t hot_remove_store(const struct class *class,
+                       const struct class_attribute *attr,
                        const char *buf,
                        size_t count)
 {
 
  * /sys/class/gpio/unexport ... write-only
  *     integer N ... number of GPIO to unexport
  */
-static ssize_t export_store(struct class *class,
-                               struct class_attribute *attr,
+static ssize_t export_store(const struct class *class,
+                               const struct class_attribute *attr,
                                const char *buf, size_t len)
 {
        long                    gpio;
 }
 static CLASS_ATTR_WO(export);
 
-static ssize_t unexport_store(struct class *class,
-                               struct class_attribute *attr,
+static ssize_t unexport_store(const struct class *class,
+                               const struct class_attribute *attr,
                                const char *buf, size_t len)
 {
        long                    gpio;
 
        return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev));
 }
 
-static ssize_t abi_version_show(struct class *class,
-                               struct class_attribute *attr, char *buf)
+static ssize_t abi_version_show(const struct class *class,
+                               const struct class_attribute *attr, char *buf)
 {
        return sysfs_emit(buf, "%d\n", IB_USER_MAD_ABI_VERSION);
 }
 
 
 /* "Show" method for files in '/<sysfs>/class/ubi/' */
 /* UBI version attribute ('/<sysfs>/class/ubi/version') */
-static ssize_t version_show(struct class *class, struct class_attribute *attr,
+static ssize_t version_show(const struct class *class, const struct class_attribute *attr,
                            char *buf)
 {
        return sprintf(buf, "%d\n", UBI_VERSION);
 
 /* "show" function for the bond_masters attribute.
  * The class parameter is ignored.
  */
-static ssize_t bonding_show_bonds(struct class *cls,
-                                 struct class_attribute *attr,
+static ssize_t bonding_show_bonds(const struct class *cls,
+                                 const struct class_attribute *attr,
                                  char *buf)
 {
-       struct bond_net *bn =
-               container_of(attr, struct bond_net, class_attr_bonding_masters);
+       const struct bond_net *bn =
+               container_of_const(attr, struct bond_net, class_attr_bonding_masters);
        int res = 0;
        struct bonding *bond;
 
        return res;
 }
 
-static struct net_device *bond_get_by_name(struct bond_net *bn, const char *ifname)
+static struct net_device *bond_get_by_name(const struct bond_net *bn, const char *ifname)
 {
        struct bonding *bond;
 
  *
  * The class parameter is ignored.
  */
-static ssize_t bonding_store_bonds(struct class *cls,
-                                  struct class_attribute *attr,
+static ssize_t bonding_store_bonds(const struct class *cls,
+                                  const struct class_attribute *attr,
                                   const char *buffer, size_t count)
 {
-       struct bond_net *bn =
-               container_of(attr, struct bond_net, class_attr_bonding_masters);
+       const struct bond_net *bn =
+               container_of_const(attr, struct bond_net, class_attr_bonding_masters);
        char command[IFNAMSIZ + 1] = {0, };
        char *ifname;
        int rv, res = count;
 
        NULL
 };
 
-static ssize_t zcdn_create_store(struct class *class,
-                                struct class_attribute *attr,
+static ssize_t zcdn_create_store(const struct class *class,
+                                const struct class_attribute *attr,
                                 const char *buf, size_t count)
 {
        int rc;
 static const struct class_attribute class_attr_zcdn_create =
        __ATTR(create, 0600, NULL, zcdn_create_store);
 
-static ssize_t zcdn_destroy_store(struct class *class,
-                                 struct class_attribute *attr,
+static ssize_t zcdn_destroy_store(const struct class *class,
+                                 const struct class_attribute *attr,
                                  const char *buf, size_t count)
 {
        int rc;
 
        return __queue_ctrl_work(SERVER_CTRL_TYPE_RESET);
 }
 
-static ssize_t stats_show(struct class *class, struct class_attribute *attr,
+static ssize_t stats_show(const struct class *class, const struct class_attribute *attr,
                          char *buf)
 {
        /*
                          server_conf.ipc_last_active / HZ);
 }
 
-static ssize_t kill_server_store(struct class *class,
-                                struct class_attribute *attr, const char *buf,
+static ssize_t kill_server_store(const struct class *class,
+                                const struct class_attribute *attr, const char *buf,
                                 size_t len)
 {
        if (!sysfs_streq(buf, "hard"))
                                                  "oplock", "ipc", "conn",
                                                  "rdma"};
 
-static ssize_t debug_show(struct class *class, struct class_attribute *attr,
+static ssize_t debug_show(const struct class *class, const struct class_attribute *attr,
                          char *buf)
 {
        ssize_t sz = 0;
        return sz;
 }
 
-static ssize_t debug_store(struct class *class, struct class_attribute *attr,
+static ssize_t debug_store(const struct class *class, const struct class_attribute *attr,
                           const char *buf, size_t len)
 {
        int i;
 
 
 struct class_attribute {
        struct attribute attr;
-       ssize_t (*show)(struct class *class, struct class_attribute *attr,
+       ssize_t (*show)(const struct class *class, const struct class_attribute *attr,
                        char *buf);
-       ssize_t (*store)(struct class *class, struct class_attribute *attr,
-                       const char *buf, size_t count);
+       ssize_t (*store)(const struct class *class, const struct class_attribute *attr,
+                        const char *buf, size_t count);
 };
 
 #define CLASS_ATTR_RW(_name) \
        struct class_attribute_string class_attr_##_name = \
                _CLASS_ATTR_STRING(_name, _mode, _str)
 
-ssize_t show_class_attr_string(struct class *class, struct class_attribute *attr, char *buf);
+ssize_t show_class_attr_string(const struct class *class, const struct class_attribute *attr,
+                              char *buf);
 
 struct class_interface {
        struct list_head        node;