about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdhemerval Zanella Netto <adhemerval.zanella@linaro.org>2022-10-19 19:14:11 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-12-07 11:27:01 -0300
commit25ca6175bacb40b9704458e53ddee58865d8ab2b (patch)
treed48caceb2aaf5a65bc635063520e7996852caae2
parent842128f160a48e5545900ea3bc3ba2ce40539d11 (diff)
downloadglibc-25ca6175bacb40b9704458e53ddee58865d8ab2b.tar.gz
glibc-25ca6175bacb40b9704458e53ddee58865d8ab2b.tar.xz
glibc-25ca6175bacb40b9704458e53ddee58865d8ab2b.zip
Linux: consolidate lchown implementation
Use lchown syscall if defined, otherwise use fchownat.

Checked on x86_64-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
-rw-r--r--sysdeps/unix/sysv/linux/lchown.c (renamed from sysdeps/unix/sysv/linux/generic/lchown.c)11
1 files changed, 8 insertions, 3 deletions
diff --git a/sysdeps/unix/sysv/linux/generic/lchown.c b/sysdeps/unix/sysv/linux/lchown.c
index 996925d799..4888e5f194 100644
--- a/sysdeps/unix/sysv/linux/generic/lchown.c
+++ b/sysdeps/unix/sysv/linux/lchown.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2011-2022 Free Software Foundation, Inc.
+/* Change ownership of a file.  Linux version.
+   Copyright (C) 2011-2022 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -23,7 +24,11 @@
 int
 __lchown (const char *file, uid_t owner, gid_t group)
 {
-  return INLINE_SYSCALL (fchownat, 5, AT_FDCWD, file, owner, group,
-                         AT_SYMLINK_NOFOLLOW);
+#ifdef __NR_lchown
+  return INLINE_SYSCALL_CALL (lchown, file, owner, group);
+#else
+  return INLINE_SYSCALL_CALL (fchownat, AT_FDCWD, file, owner, group,
+			      AT_SYMLINK_NOFOLLOW);
+#endif
 }
 weak_alias (__lchown, lchown)