this repo has no description
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Pass `AT_SYMLINK_NOFOLLOW` to Linux's `utimensat` when we're told not to follow symlinks

+9 -5
+9 -5
src/kernel/emulation/linux/xattr/setattrlist_generic.c
··· 45 45 { 46 46 int rv; 47 47 char* next; 48 + int linux_at_flag = 0; 49 + 50 + if (options & FSOPT_NOFOLLOW) 51 + linux_at_flag |= LINUX_AT_SYMLINK_NOFOLLOW; 48 52 49 53 if (!alist) 50 54 return -EFAULT; ··· 93 97 *ts 94 98 }; 95 99 #if HAS_PATH 96 - rv = LINUX_SYSCALL(__NR_utimensat, LINUX_AT_FDCWD, vc.path, times, 0); 100 + rv = LINUX_SYSCALL(__NR_utimensat, LINUX_AT_FDCWD, vc.path, times, linux_at_flag); 97 101 #else 98 - rv = LINUX_SYSCALL(__NR_utimensat, fd, 0, times, 0); 102 + rv = LINUX_SYSCALL(__NR_utimensat, fd, 0, times, linux_at_flag); 99 103 #endif 100 104 if (rv < 0) 101 105 return errno_linux_to_bsd(rv); ··· 114 118 { LINUX_UTIME_OMIT, LINUX_UTIME_OMIT } 115 119 }; 116 120 #if HAS_PATH 117 - rv = LINUX_SYSCALL(__NR_utimensat, LINUX_AT_FDCWD, vc.path, times, 0); 121 + rv = LINUX_SYSCALL(__NR_utimensat, LINUX_AT_FDCWD, vc.path, times, linux_at_flag); 118 122 #else 119 - rv = LINUX_SYSCALL(__NR_utimensat, fd, 0, times, 0); 123 + rv = LINUX_SYSCALL(__NR_utimensat, fd, 0, times, linux_at_flag); 120 124 #endif 121 125 if (rv < 0) 122 126 return errno_linux_to_bsd(rv); ··· 126 130 { 127 131 int perms = *((int*) next); 128 132 #if HAS_PATH 129 - rv = do_linux_fchmodat(LINUX_AT_FDCWD, vc.path, perms, LINUX_AT_SYMLINK_NOFOLLOW); 133 + rv = do_linux_fchmodat(LINUX_AT_FDCWD, vc.path, perms, linux_at_flag); 130 134 #else 131 135 rv = LINUX_SYSCALL(__NR_fchmod, fd, perms); 132 136 #endif