From 41ab3342f14399a85c3ad564ebd34d4c4cb3cc0b Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sat, 3 Jan 2015 15:21:04 +0000 Subject: [PATCH] syscall_fs2: fix inode reference count error on chmod/chown failure --- Kernel/syscall_fs2.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) 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); -- 2.34.1