summary refs log tree commit diff
path: root/seccomp
diff options
context:
space:
mode:
authorDavid Riley <davidriley@chromium.org>2019-07-24 12:09:07 -0700
committerCommit Bot <commit-bot@chromium.org>2019-08-01 19:34:04 +0000
commit06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c (patch)
treed6a599b5d4f205f61f65e1340067d2dde1995b37 /seccomp
parent62c533c9a3c60a7fcee2d49d987f955b75a67c99 (diff)
downloadcrosvm-06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c.tar
crosvm-06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c.tar.gz
crosvm-06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c.tar.bz2
crosvm-06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c.tar.lz
crosvm-06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c.tar.xz
crosvm-06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c.tar.zst
crosvm-06787c5b6c0d1d878d7cef5f9fbdb14813c5e80c.zip
gpu: Add sandboxing support for mali/ARM.
ARM platforms have different library locations and also required GPU
devices to be availble to the GPU process.

BUG=chromium:892280
TEST=glxgears with virtio-gpu on kevin and nami

Change-Id: If1baeb1edda76d057e88ab5e88ce22f02e5d30a0
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1717738
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Tested-by: David Riley <davidriley@chromium.org>
Commit-Queue: David Riley <davidriley@chromium.org>
Auto-Submit: David Riley <davidriley@chromium.org>
Diffstat (limited to 'seccomp')
-rw-r--r--seccomp/arm/gpu_device.policy64
1 files changed, 64 insertions, 0 deletions
diff --git a/seccomp/arm/gpu_device.policy b/seccomp/arm/gpu_device.policy
new file mode 100644
index 0000000..2e3e1ba
--- /dev/null
+++ b/seccomp/arm/gpu_device.policy
@@ -0,0 +1,64 @@
+# 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.
+
+# Rules from common_device.policy with some rules removed because they block certain flags needed
+# for gpu.
+brk: 1
+clone: arg0 & CLONE_THREAD
+close: 1
+dup2: 1
+dup: 1
+epoll_create1: 1
+epoll_ctl: 1
+epoll_wait: 1
+eventfd2: 1
+exit: 1
+exit_group: 1
+futex: 1
+getpid: 1
+gettimeofday: 1
+kill: 1
+madvise: arg2 == MADV_DONTNEED || arg2 == MADV_DONTDUMP || arg2 == MADV_REMOVE
+mremap: 1
+munmap: 1
+nanosleep: 1
+open: return ENOENT
+openat: return ENOENT
+pipe2: 1
+poll: 1
+ppoll: 1
+prctl: arg0 == PR_SET_NAME
+read: 1
+readv: 1
+recv: 1
+recvfrom: 1
+recvmsg: 1
+restart_syscall: 1
+rt_sigaction: 1
+rt_sigprocmask: 1
+rt_sigreturn: 1
+sched_getaffinity: 1
+sendmsg: 1
+sendto: 1
+set_robust_list: 1
+sigaltstack: 1
+write: 1
+
+## Rules specific to gpu
+connect: 1
+getrandom: 1
+openat: 1
+socket: arg0 == 1 && arg1 == 0x80001 && arg2 == 0
+_llseek: 1
+ftruncate64: 1
+stat64: 1
+fstat64: 1
+getdents64: 1
+
+# 0x6400 == DRM_IOCTL_BASE, 0x8000 = KBASE_IOCTL_TYPE (mali)
+ioctl: arg1 & 0x6400 || arg1 & 0x8000
+
+## mmap/mprotect/open/openat differ from the common_device.policy
+mmap2: arg2 == PROT_READ|PROT_WRITE || arg2 == PROT_NONE || arg2 == PROT_READ|PROT_EXEC || arg2 == PROT_WRITE || arg2 == PROT_READ
+mprotect: arg2 == PROT_READ|PROT_WRITE || arg2 == PROT_NONE || arg2 == PROT_READ