aboutsummaryrefslogtreecommitdiffstats
path: root/fs/sysfs
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-09-11 23:19:13 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-09-26 18:33:18 -0400
commit388975cccaaf11abd47525f664c76891c440481a (patch)
tree597308874997808e7621ab4a56f0b1fd201e8639 /fs/sysfs
parentcb26a311578e67769e92a39a0a63476533cb7e12 (diff)
sysfs: clean up sysfs_get_dirent()
The pre-existing sysfs interfaces which take explicit namespace argument are weird in that they place the optional @ns in front of @name which is contrary to the established convention. For example, we end up forcing vast majority of sysfs_get_dirent() users to do sysfs_get_dirent(parent, NULL, name), which is silly and error-prone especially as @ns and @name may be interchanged without causing compilation warning. This renames sysfs_get_dirent() to sysfs_get_dirent_ns() and swap the positions of @name and @ns, and sysfs_get_dirent() is now a wrapper around sysfs_get_dirent_ns(). This makes confusions a lot less likely. There are other interfaces which take @ns before @name. They'll be updated by following patches. This patch doesn't introduce any functional changes. v2: EXPORT_SYMBOL_GPL() wasn't updated leading to undefined symbol error on module builds. Reported by build test robot. Fixed. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Eric W. Biederman <ebiederm@xmission.com> Cc: Kay Sievers <kay@vrfy.org> Cc: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'fs/sysfs')
-rw-r--r--fs/sysfs/dir.c11
-rw-r--r--fs/sysfs/file.c4
-rw-r--r--fs/sysfs/group.c10
-rw-r--r--fs/sysfs/symlink.c2
-rw-r--r--fs/sysfs/sysfs.h3
5 files changed, 14 insertions, 16 deletions
diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 1dfb4aaf9446..fee19d16e4a2 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -630,9 +630,10 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
630} 630}
631 631
632/** 632/**
633 * sysfs_get_dirent - find and get sysfs_dirent with the given name 633 * sysfs_get_dirent_ns - find and get sysfs_dirent with the given name
634 * @parent_sd: sysfs_dirent to search under 634 * @parent_sd: sysfs_dirent to search under
635 * @name: name to look for 635 * @name: name to look for
636 * @ns: the namespace tag to use
636 * 637 *
637 * Look for sysfs_dirent with name @name under @parent_sd and get 638 * Look for sysfs_dirent with name @name under @parent_sd and get
638 * it if found. 639 * it if found.
@@ -643,9 +644,9 @@ struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
643 * RETURNS: 644 * RETURNS:
644 * Pointer to sysfs_dirent if found, NULL if not. 645 * Pointer to sysfs_dirent if found, NULL if not.
645 */ 646 */
646struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd, 647struct sysfs_dirent *sysfs_get_dirent_ns(struct sysfs_dirent *parent_sd,
647 const void *ns, 648 const unsigned char *name,
648 const unsigned char *name) 649 const void *ns)
649{ 650{
650 struct sysfs_dirent *sd; 651 struct sysfs_dirent *sd;
651 652
@@ -656,7 +657,7 @@ struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
656 657
657 return sd; 658 return sd;
658} 659}
659EXPORT_SYMBOL_GPL(sysfs_get_dirent); 660EXPORT_SYMBOL_GPL(sysfs_get_dirent_ns);
660 661
661static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd, 662static int create_dir(struct kobject *kobj, struct sysfs_dirent *parent_sd,
662 const void *ns, const char *name, struct sysfs_dirent **p_sd) 663 const void *ns, const char *name, struct sysfs_dirent **p_sd)
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index e784340f1599..0f3214a70985 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -563,7 +563,7 @@ int sysfs_add_file_to_group(struct kobject *kobj,
563 int error; 563 int error;
564 564
565 if (group) 565 if (group)
566 dir_sd = sysfs_get_dirent(kobj->sd, NULL, group); 566 dir_sd = sysfs_get_dirent(kobj->sd, group);
567 else 567 else
568 dir_sd = sysfs_get(kobj->sd); 568 dir_sd = sysfs_get(kobj->sd);
569 569
@@ -645,7 +645,7 @@ void sysfs_remove_file_from_group(struct kobject *kobj,
645 struct sysfs_dirent *dir_sd; 645 struct sysfs_dirent *dir_sd;
646 646
647 if (group) 647 if (group)
648 dir_sd = sysfs_get_dirent(kobj->sd, NULL, group); 648 dir_sd = sysfs_get_dirent(kobj->sd, group);
649 else 649 else
650 dir_sd = sysfs_get(kobj->sd); 650 dir_sd = sysfs_get(kobj->sd);
651 if (dir_sd) { 651 if (dir_sd) {
diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c
index 25c78f23dae8..21102158ca33 100644
--- a/fs/sysfs/group.c
+++ b/fs/sysfs/group.c
@@ -207,7 +207,7 @@ void sysfs_remove_group(struct kobject *kobj,
207 struct sysfs_dirent *sd; 207 struct sysfs_dirent *sd;
208 208
209 if (grp->name) { 209 if (grp->name) {
210 sd = sysfs_get_dirent(dir_sd, NULL, grp->name); 210 sd = sysfs_get_dirent(dir_sd, grp->name);
211 if (!sd) { 211 if (!sd) {
212 WARN(!sd, KERN_WARNING 212 WARN(!sd, KERN_WARNING
213 "sysfs group %p not found for kobject '%s'\n", 213 "sysfs group %p not found for kobject '%s'\n",
@@ -262,7 +262,7 @@ int sysfs_merge_group(struct kobject *kobj,
262 struct attribute *const *attr; 262 struct attribute *const *attr;
263 int i; 263 int i;
264 264
265 dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name); 265 dir_sd = sysfs_get_dirent(kobj->sd, grp->name);
266 if (!dir_sd) 266 if (!dir_sd)
267 return -ENOENT; 267 return -ENOENT;
268 268
@@ -289,7 +289,7 @@ void sysfs_unmerge_group(struct kobject *kobj,
289 struct sysfs_dirent *dir_sd; 289 struct sysfs_dirent *dir_sd;
290 struct attribute *const *attr; 290 struct attribute *const *attr;
291 291
292 dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name); 292 dir_sd = sysfs_get_dirent(kobj->sd, grp->name);
293 if (dir_sd) { 293 if (dir_sd) {
294 for (attr = grp->attrs; *attr; ++attr) 294 for (attr = grp->attrs; *attr; ++attr)
295 sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name); 295 sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name);
@@ -311,7 +311,7 @@ int sysfs_add_link_to_group(struct kobject *kobj, const char *group_name,
311 struct sysfs_dirent *dir_sd; 311 struct sysfs_dirent *dir_sd;
312 int error = 0; 312 int error = 0;
313 313
314 dir_sd = sysfs_get_dirent(kobj->sd, NULL, group_name); 314 dir_sd = sysfs_get_dirent(kobj->sd, group_name);
315 if (!dir_sd) 315 if (!dir_sd)
316 return -ENOENT; 316 return -ENOENT;
317 317
@@ -333,7 +333,7 @@ void sysfs_remove_link_from_group(struct kobject *kobj, const char *group_name,
333{ 333{
334 struct sysfs_dirent *dir_sd; 334 struct sysfs_dirent *dir_sd;
335 335
336 dir_sd = sysfs_get_dirent(kobj->sd, NULL, group_name); 336 dir_sd = sysfs_get_dirent(kobj->sd, group_name);
337 if (dir_sd) { 337 if (dir_sd) {
338 sysfs_hash_and_remove(dir_sd, NULL, link_name); 338 sysfs_hash_and_remove(dir_sd, NULL, link_name);
339 sysfs_put(dir_sd); 339 sysfs_put(dir_sd);
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index 7d981ce2e87f..c96b31a16485 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -191,7 +191,7 @@ int sysfs_rename_link_ns(struct kobject *kobj, struct kobject *targ,
191 old_ns = targ->sd->s_ns; 191 old_ns = targ->sd->s_ns;
192 192
193 result = -ENOENT; 193 result = -ENOENT;
194 sd = sysfs_get_dirent(parent_sd, old_ns, old); 194 sd = sysfs_get_dirent_ns(parent_sd, old, old_ns);
195 if (!sd) 195 if (!sd)
196 goto out; 196 goto out;
197 197
diff --git a/fs/sysfs/sysfs.h b/fs/sysfs/sysfs.h
index 7664d1b3d594..6faacafda777 100644
--- a/fs/sysfs/sysfs.h
+++ b/fs/sysfs/sysfs.h
@@ -164,9 +164,6 @@ void sysfs_addrm_finish(struct sysfs_addrm_cxt *acxt);
164struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd, 164struct sysfs_dirent *sysfs_find_dirent(struct sysfs_dirent *parent_sd,
165 const void *ns, 165 const void *ns,
166 const unsigned char *name); 166 const unsigned char *name);
167struct sysfs_dirent *sysfs_get_dirent(struct sysfs_dirent *parent_sd,
168 const void *ns,
169 const unsigned char *name);
170struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type); 167struct sysfs_dirent *sysfs_new_dirent(const char *name, umode_t mode, int type);
171 168
172void release_sysfs_dirent(struct sysfs_dirent *sd); 169void release_sysfs_dirent(struct sysfs_dirent *sd);