2019-11-14 09:45:56 +00:00
|
|
|
# Copyright 2019 The Chromium OS Authors. All rights reserved.
|
|
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
|
|
# found in the LICENSE file.
|
|
|
|
|
|
|
|
@include /usr/share/policy/crosvm/common_device.policy
|
|
|
|
|
2020-03-17 09:20:10 +00:00
|
|
|
copy_file_range: 1
|
2020-03-05 06:29:41 +00:00
|
|
|
fallocate: 1
|
fs: Don't use path-based operations
There are no *at variants for the xattr syscalls so we were using the
path-based variants by reading the /proc/self/fd symlink. While this
symlink can track renames it cannot track if the user hard links the
file to some other location and then unlinks the original location. In
this case the symlink simply shows that the path was deleted even though
the fd is still valid.
To deal with this, stop using the path-based method. For regular files
and directories, we can simply open them and then make the appropriate
f{get,set,list,remove}xattr syscall. For non-regular files and
directories we can emulate an *at syscall by changing the CWD to /proc
and then making the path-based syscall via the self/fd path. Even
though the symlink is no longer valid, manipulating the fd via this path
still works.
BUG=b:168689429
TEST=Create a file, set an xattr, hard link it to a new location,
unlink the original, and then verify that {get,set}fattr still
works on the new link
Change-Id: Ic291f432b96f18e3e7ccbcf27737d5f8fd240a65
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2437684
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
2020-09-29 07:54:17 +00:00
|
|
|
fchdir: 1
|
2020-05-27 08:18:07 +00:00
|
|
|
fchmod: 1
|
2019-11-14 09:45:56 +00:00
|
|
|
fchmodat: 1
|
2020-05-27 08:18:07 +00:00
|
|
|
fchown: 1
|
2019-11-14 09:45:56 +00:00
|
|
|
fchownat: 1
|
2020-03-05 06:29:41 +00:00
|
|
|
fdatasync: 1
|
fs: Don't use path-based operations
There are no *at variants for the xattr syscalls so we were using the
path-based variants by reading the /proc/self/fd symlink. While this
symlink can track renames it cannot track if the user hard links the
file to some other location and then unlinks the original location. In
this case the symlink simply shows that the path was deleted even though
the fd is still valid.
To deal with this, stop using the path-based method. For regular files
and directories, we can simply open them and then make the appropriate
f{get,set,list,remove}xattr syscall. For non-regular files and
directories we can emulate an *at syscall by changing the CWD to /proc
and then making the path-based syscall via the self/fd path. Even
though the symlink is no longer valid, manipulating the fd via this path
still works.
BUG=b:168689429
TEST=Create a file, set an xattr, hard link it to a new location,
unlink the original, and then verify that {get,set}fattr still
works on the new link
Change-Id: Ic291f432b96f18e3e7ccbcf27737d5f8fd240a65
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2437684
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Commit-Queue: Chirantan Ekbote <chirantan@chromium.org>
2020-09-29 07:54:17 +00:00
|
|
|
fgetxattr: 1
|
|
|
|
getxattr: 1
|
|
|
|
fsetxattr: 1
|
|
|
|
setxattr: 1
|
|
|
|
flistxattr: 1
|
|
|
|
listxattr: 1
|
|
|
|
fremovexattr: 1
|
|
|
|
removexattr: 1
|
2019-11-14 09:45:56 +00:00
|
|
|
fstatfs: 1
|
2020-03-05 06:29:41 +00:00
|
|
|
fsync: 1
|
2019-11-14 09:45:56 +00:00
|
|
|
ftruncate: 1
|
|
|
|
getdents64: 1
|
|
|
|
getegid: 1
|
|
|
|
geteuid: 1
|
2020-06-23 08:12:03 +00:00
|
|
|
getrandom: 1
|
2020-12-04 10:19:24 +00:00
|
|
|
ioctl: arg1 == FS_IOC_FSGETXATTR || \
|
|
|
|
arg1 == FS_IOC_FSSETXATTR || \
|
|
|
|
arg1 == FS_IOC_GETFLAGS || \
|
2020-11-26 10:49:15 +00:00
|
|
|
arg1 == FS_IOC_SETFLAGS || \
|
|
|
|
arg1 == FS_IOC_GET_ENCRYPTION_POLICY_EX
|
2019-11-14 09:45:56 +00:00
|
|
|
linkat: 1
|
|
|
|
lseek: 1
|
2020-05-27 08:18:07 +00:00
|
|
|
mkdir: 1
|
2019-11-14 09:45:56 +00:00
|
|
|
mkdirat: 1
|
|
|
|
mknodat: 1
|
|
|
|
newfstatat: 1
|
2019-11-15 01:48:44 +00:00
|
|
|
open: return ENOENT
|
|
|
|
openat: 1
|
2019-11-14 09:45:56 +00:00
|
|
|
preadv: 1
|
|
|
|
pwritev: 1
|
|
|
|
readlinkat: 1
|
|
|
|
renameat2: 1
|
|
|
|
setresgid: 1
|
|
|
|
setresuid: 1
|
|
|
|
symlinkat: 1
|
2020-01-15 21:34:09 +00:00
|
|
|
statx: 1
|
2019-11-14 09:45:56 +00:00
|
|
|
umask: 1
|
|
|
|
unlinkat: 1
|
|
|
|
utimensat: 1
|