On Fri, Dec 06, 2019 at 05:54:31PM +0530, Sourabh Jain wrote: > +static struct kobj_attribute release_attr = __ATTR(release_mem, > 0200, NULL, > fadump_release_memory_store); > -static struct kobj_attribute fadump_attr = __ATTR(fadump_enabled, > +static struct kobj_attribute enable_attr = __ATTR(enabled, > 0444, fadump_enabled_show, > NULL); __ATTR_RO()? > -static struct kobj_attribute fadump_register_attr = __ATTR(fadump_registered, > +static struct kobj_attribute register_attr = __ATTR(registered, > 0644, fadump_register_show, > fadump_register_store); __ATTR_RW()? And then use an ATTRIBUTE_GROUP() macro to create a group so that you then can do: > @@ -1452,11 +1450,47 @@ static void fadump_init_files(void) > printk(KERN_ERR "fadump: unable to create debugfs file" > " fadump_region\n"); > > + rc = sysfs_create_file(fadump_kobj, &enable_attr.attr); > + if (rc) > + pr_err("unable to create enabled sysfs file (%d)\n", > + rc); > + rc = sysfs_create_file(fadump_kobj, ®ister_attr.attr); > + if (rc) > + pr_err("unable to create registered sysfs file (%d)\n", > + rc); > + if (fw_dump.dump_active) { > + rc = sysfs_create_file(fadump_kobj, &release_attr.attr); > + if (rc) > + pr_err("unable to create release_mem sysfs file (%d)\n", > + rc); > + } a single call to sysfs_create_groups() here instead of trying to unwind the mess if something went wrong. thanks, greg k-h