Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=967e35dcc9ac194b4a6fad69a5a51f93d69bb0d1
Commit:     967e35dcc9ac194b4a6fad69a5a51f93d69bb0d1
Parent:     a1da4dfe35bc36c3bc9716d995c85b7983c38a76
Author:     Tejun Heo <[EMAIL PROTECTED]>
AuthorDate: Wed Jul 18 16:38:11 2007 +0900
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Wed Jul 18 15:49:50 2007 -0700

    sysfs: cosmetic clean up on node creation failure paths
    
    Node addition failure is detected by testing return value of
    sysfs_addfm_finish() which returns the number of added and removed
    nodes.  As the function is called as the last step of addition right
    on top of error handling block, the if blocks looked like the
    following.
    
        if (sysfs_addrm_finish(&acxt))
                success handling, usually return;
        /* fall through to error handling */
    
    This is the opposite of usual convention in sysfs and makes the code
    difficult to understand.  This patch inverts the test and makes those
    blocks look more like others.
    
    Signed-off-by: Tejun Heo <[EMAIL PROTECTED]>
    Cc: Gabriel C <[EMAIL PROTECTED]>
    Cc: Miles Lane <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 fs/sysfs/dir.c     |   12 +++++++-----
 fs/sysfs/file.c    |    9 +++++----
 fs/sysfs/symlink.c |   10 ++++++----
 3 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/fs/sysfs/dir.c b/fs/sysfs/dir.c
index 2e6775a..048e605 100644
--- a/fs/sysfs/dir.c
+++ b/fs/sysfs/dir.c
@@ -699,17 +699,19 @@ static int create_dir(struct kobject *kobj, struct 
sysfs_dirent *parent_sd,
 
        /* link in */
        sysfs_addrm_start(&acxt, parent_sd);
+
        if (!sysfs_find_dirent(parent_sd, name)) {
                sysfs_add_one(&acxt, sd);
                sysfs_link_sibling(sd);
        }
-       if (sysfs_addrm_finish(&acxt)) {
-               *p_sd = sd;
-               return 0;
+
+       if (!sysfs_addrm_finish(&acxt)) {
+               sysfs_put(sd);
+               return -EEXIST;
        }
 
-       sysfs_put(sd);
-       return -EEXIST;
+       *p_sd = sd;
+       return 0;
 }
 
 int sysfs_create_subdir(struct kobject *kobj, const char *name,
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index cc49799..3e1cc06 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -410,11 +410,12 @@ int sysfs_add_file(struct sysfs_dirent *dir_sd, const 
struct attribute *attr,
                sysfs_link_sibling(sd);
        }
 
-       if (sysfs_addrm_finish(&acxt))
-               return 0;
+       if (!sysfs_addrm_finish(&acxt)) {
+               sysfs_put(sd);
+               return -EEXIST;
+       }
 
-       sysfs_put(sd);
-       return -EEXIST;
+       return 0;
 }
 
 
diff --git a/fs/sysfs/symlink.c b/fs/sysfs/symlink.c
index d056e96..4ce687f 100644
--- a/fs/sysfs/symlink.c
+++ b/fs/sysfs/symlink.c
@@ -97,11 +97,13 @@ int sysfs_create_link(struct kobject * kobj, struct kobject 
* target, const char
                sysfs_link_sibling(sd);
        }
 
-       if (sysfs_addrm_finish(&acxt))
-               return 0;
+       if (!sysfs_addrm_finish(&acxt)) {
+               error = -EEXIST;
+               goto out_put;
+       }
+
+       return 0;
 
-       error = -EEXIST;
-       /* fall through */
  out_put:
        sysfs_put(target_sd);
        sysfs_put(sd);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to