From aa35c08633e6fe904afbcff2a335675c25d24bab Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 2 Jun 2019 10:31:25 +0200 Subject: [PATCH] FileSystem: Only retrieve inode metadata once in VFS::chown(). --- Kernel/FileSystem/VirtualFileSystem.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Kernel/FileSystem/VirtualFileSystem.cpp b/Kernel/FileSystem/VirtualFileSystem.cpp index c2dd7736f6..820ad65def 100644 --- a/Kernel/FileSystem/VirtualFileSystem.cpp +++ b/Kernel/FileSystem/VirtualFileSystem.cpp @@ -413,11 +413,13 @@ KResult VFS::chown(StringView path, uid_t a_uid, gid_t a_gid, Custody& base) if (inode.fs().is_readonly()) return KResult(-EROFS); - if (current->process().euid() != inode.metadata().uid && !current->process().is_superuser()) + auto metadata = inode.metadata(); + + if (current->process().euid() != metadata.uid && !current->process().is_superuser()) return KResult(-EPERM); - uid_t new_uid = inode.metadata().uid; - gid_t new_gid = inode.metadata().gid; + uid_t new_uid = metadata.uid; + gid_t new_gid = metadata.gid; if (a_uid != (uid_t)-1) { if (current->process().euid() != a_uid && !current->process().is_superuser())