From: Alan Cox Date: Sat, 3 Jan 2015 15:21:04 +0000 (+0000) Subject: syscall_fs2: fix inode reference count error on chmod/chown failure X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=41ab3342f14399a85c3ad564ebd34d4c4cb3cc0b;p=FUZIX.git syscall_fs2: fix inode reference count error on chmod/chown failure --- diff --git a/Kernel/syscall_fs2.c b/Kernel/syscall_fs2.c index e0fbb7f1..c9af2e05 100644 --- a/Kernel/syscall_fs2.c +++ b/Kernel/syscall_fs2.c @@ -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);