syscall_fs2: fix inode reference count error on chmod/chown failure
authorAlan Cox <alan@linux.intel.com>
Sat, 3 Jan 2015 15:21:04 +0000 (15:21 +0000)
committerAlan Cox <alan@linux.intel.com>
Sat, 3 Jan 2015 15:21:04 +0000 (15:21 +0000)
Kernel/syscall_fs2.c

index e0fbb7f..c9af2e0 100644 (file)
@@ -183,10 +183,8 @@ int16_t _access(void)
 
 static int16_t chmod_op(inoptr ino)
 {
-       if (ino->c_node.i_uid != udata.u_euid && esuper()) {
-               i_deref(ino);
+       if (ino->c_node.i_uid != udata.u_euid && esuper())
                return (-1);
-       }
 
        ino->c_node.i_mode =
            (mode & MODE_MASK) | (ino->c_node.i_mode & F_MASK);
@@ -241,10 +239,8 @@ int16_t _fchmod(void)
 
 static int chown_op(inoptr ino)
 {
-       if (ino->c_node.i_uid != udata.u_euid && esuper()) {
-               i_deref(ino);
+       if (ino->c_node.i_uid != udata.u_euid && esuper())
                return (-1);
-       }
        ino->c_node.i_uid = owner;
        ino->c_node.i_gid = group;
        setftime(ino, C_TIME);