aboutsummaryrefslogtreecommitdiffstats
path: root/executor
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2016-01-11 22:16:14 +0100
committerDmitry Vyukov <dvyukov@google.com>2016-01-11 22:26:09 +0100
commit15128d47bd7de318bea5ecf0fb15a45deb794c9d (patch)
treec4a1dc12dc0cd3ae937ab98f65af901221583161 /executor
parent4d906f05d4d76e153e71a56eccf91eab24286f3a (diff)
sys: support /dev/snd/seq
Diffstat (limited to 'executor')
-rw-r--r--executor/executor.cc6
-rw-r--r--executor/syscalls.h66
2 files changed, 72 insertions, 0 deletions
diff --git a/executor/executor.cc b/executor/executor.cc
index 7ef506f08..20beb728f 100644
--- a/executor/executor.cc
+++ b/executor/executor.cc
@@ -361,7 +361,13 @@ thread_t* schedule_call(int n, int call_index, int call_num, uint64_t num_args,
case __NR_syz_fuse_mount:
case __NR_syz_fuseblk_mount:
root = true;
+ default:
+ if (strcmp(syscalls[call_num]
+ .name,
+ "open$sndseq") == 0)
+ root = true;
}
+
// Find a spare thread to execute the call.
int i;
for (i = 0; i < kMaxThreads; i++) {
diff --git a/executor/syscalls.h b/executor/syscalls.h
index 8a8c98c86..a5c0b28b9 100644
--- a/executor/syscalls.h
+++ b/executor/syscalls.h
@@ -799,6 +799,39 @@ call_t syscalls[] = {
{"ioctl$KVM_SET_GUEST_DEBUG", 16},
{"ioctl$KVM_SMI", 16},
{"open$xenevtchn", 2},
+ {"open$sndseq", 2},
+ {"write$sndseq", 1},
+ {"ioctl$SNDRV_SEQ_IOCTL_PVERSION", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_CLIENT_ID", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SYSTEM_INFO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_RUNNING_MODE", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_CLIENT_INFO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_CLIENT_INFO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_CREATE_PORT", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_DELETE_PORT", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_PORT_INFO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_PORT_INFO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_CREATE_QUEUE", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_DELETE_QUEUE", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_CLIENT_POOL", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_CLIENT_POOL", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_REMOVE_EVENTS", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_QUERY_SUBS", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT", 16},
+ {"ioctl$SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT", 16},
};
#endif
@@ -1590,6 +1623,39 @@ call_t syscalls[] = {
{"ioctl$KVM_SET_GUEST_DEBUG", 29},
{"ioctl$KVM_SMI", 29},
{"open$xenevtchn", -1},
+ {"open$sndseq", -1},
+ {"write$sndseq", 64},
+ {"ioctl$SNDRV_SEQ_IOCTL_PVERSION", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_CLIENT_ID", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SYSTEM_INFO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_RUNNING_MODE", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_CLIENT_INFO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_CLIENT_INFO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_CREATE_PORT", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_DELETE_PORT", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_PORT_INFO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_PORT_INFO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_UNSUBSCRIBE_PORT", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_CREATE_QUEUE", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_DELETE_QUEUE", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_INFO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_INFO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_NAMED_QUEUE", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_TEMPO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_TEMPO", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_TIMER", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_TIMER", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_QUEUE_CLIENT", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_QUEUE_CLIENT", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_CLIENT_POOL", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_SET_CLIENT_POOL", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_REMOVE_EVENTS", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_QUERY_SUBS", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_GET_SUBSCRIPTION", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT", 29},
+ {"ioctl$SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT", 29},
};
#endif