[PATCH 3/3] zonefs: convert to use kobject_is_added()

From: Yangtao Li
Date: Thu Apr 06 2023 - 05:31:32 EST


Use kobject_is_added() instead of local `s_sysfs_registered` variables.
BTW kill kobject_del() directly, because kobject_put() actually covers
kobject removal automatically.

Signed-off-by: Yangtao Li <frank.li@xxxxxxxx>
---
fs/zonefs/sysfs.c | 11 +++++------
fs/zonefs/zonefs.h | 1 -
2 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/fs/zonefs/sysfs.c b/fs/zonefs/sysfs.c
index 8ccb65c2b419..f0783bf7a25c 100644
--- a/fs/zonefs/sysfs.c
+++ b/fs/zonefs/sysfs.c
@@ -101,8 +101,6 @@ int zonefs_sysfs_register(struct super_block *sb)
return ret;
}

- sbi->s_sysfs_registered = true;
-
return 0;
}

@@ -110,12 +108,13 @@ void zonefs_sysfs_unregister(struct super_block *sb)
{
struct zonefs_sb_info *sbi = ZONEFS_SB(sb);

- if (!sbi || !sbi->s_sysfs_registered)
+ if (!sbi)
return;

- kobject_del(&sbi->s_kobj);
- kobject_put(&sbi->s_kobj);
- wait_for_completion(&sbi->s_kobj_unregister);
+ if (kobject_is_added(&sbi->s_kobj)) {
+ kobject_put(&sbi->s_kobj);
+ wait_for_completion(&sbi->s_kobj_unregister);
+ }
}

int __init zonefs_sysfs_init(void)
diff --git a/fs/zonefs/zonefs.h b/fs/zonefs/zonefs.h
index 8175652241b5..4db0ea173220 100644
--- a/fs/zonefs/zonefs.h
+++ b/fs/zonefs/zonefs.h
@@ -238,7 +238,6 @@ struct zonefs_sb_info {
unsigned int s_max_active_seq_files;
atomic_t s_active_seq_files;

- bool s_sysfs_registered;
struct kobject s_kobj;
struct completion s_kobj_unregister;
};
--
2.35.1