.store = _store, \
 };
 
-#define VAR_SUBSYS_ATTR(_name, _mode, _show, _store) \
-struct subsys_attribute var_subsys_attr_##_name = { \
-       .attr = {.name = __stringify(_name), .mode = _mode}, \
-       .show = _show, \
-       .store = _store, \
-};
-
 #define to_efivar_attr(_attr) container_of(_attr, struct efivar_attribute, attr)
 #define to_efivar_entry(obj)  container_of(obj, struct efivar_entry, kobj)
 
        .default_attrs = def_attrs,
 };
 
-static ssize_t
-dummy(struct kset *kset, char *buf)
-{
-       return -ENODEV;
-}
-
 static inline void
 efivar_unregister(struct efivar_entry *var)
 {
 }
 
 
-static ssize_t
-efivar_create(struct kset *kset, const char *buf, size_t count)
+static ssize_t efivar_create(struct kobject *kobj,
+                            struct bin_attribute *bin_attr,
+                            char *buf, loff_t pos, size_t count)
 {
        struct efi_variable *new_var = (struct efi_variable *)buf;
        struct efivar_entry *search_efivar, *n;
        return count;
 }
 
-static ssize_t
-efivar_delete(struct kset *kset, const char *buf, size_t count)
+static ssize_t efivar_delete(struct kobject *kobj,
+                            struct bin_attribute *bin_attr,
+                            char *buf, loff_t pos, size_t count)
 {
        struct efi_variable *del_var = (struct efi_variable *)buf;
        struct efivar_entry *search_efivar, *n;
        return count;
 }
 
-static VAR_SUBSYS_ATTR(new_var, 0200, dummy, efivar_create);
-static VAR_SUBSYS_ATTR(del_var, 0200, dummy, efivar_delete);
+static struct bin_attribute var_subsys_attr_new_var = {
+       .attr = {.name = "new_var", .mode = 0200},
+       .write = efivar_create,
+};
 
-static struct subsys_attribute *var_subsys_attrs[] = {
-       &var_subsys_attr_new_var,
-       &var_subsys_attr_del_var,
-       NULL,
+static struct bin_attribute var_subsys_attr_del_var = {
+       .attr = {.name = "del_var", .mode = 0200},
+       .write = efivar_delete,
 };
 
 /*
         * Now add attributes to allow creation of new vars
         * and deletion of existing ones...
         */
-
-       for (i = 0; (attr = var_subsys_attrs[i]) && !error; i++) {
-               if (attr->show && attr->store)
-                       error = subsys_create_file(&vars_subsys, attr);
-       }
+       error = sysfs_create_bin_file(&vars_subsys.kobj,
+                                     &var_subsys_attr_new_var);
+       if (error)
+               printk(KERN_ERR "efivars: unable to create new_var sysfs file"
+                       " due to error %d\n", error);
+       error = sysfs_create_bin_file(&vars_subsys.kobj,
+                                     &var_subsys_attr_del_var);
+       if (error)
+               printk(KERN_ERR "efivars: unable to create del_var sysfs file"
+                       " due to error %d\n", error);
 
        /* Don't forget the systab entry */