From 11e98f1831460925fbcd80af11c894b30823e414 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 17 Jan 2022 14:15:13 +0100 Subject: executor: add extension point for adding non-mainline pseudo-syscalls Add an empty common_ext.h which is included into executor and C reproducers and can be used to add non-mainline pseudo-syscalls w/o changing any other files (by replacing common_ext.h file). It would be good to finish #2274 which allows to add pseudo-syscalls along with *.txt descriptions, but #2274 is large and there are several open design questions. So add this simple extension point for now. --- pkg/host/syscalls_linux.go | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'pkg/host/syscalls_linux.go') diff --git a/pkg/host/syscalls_linux.go b/pkg/host/syscalls_linux.go index c628d20ab..6425fcce7 100644 --- a/pkg/host/syscalls_linux.go +++ b/pkg/host/syscalls_linux.go @@ -327,6 +327,14 @@ func isSupportedSyzkall(c *prog.Syscall, target *prog.Target, sandbox string) (b return ok, reason } } + if strings.HasPrefix(c.CallName, "syz_ext_") { + // Non-mainline pseudo-syscalls in executor/common_ext.h can't have the checking function + // and are assumed to be unconditionally supported. + if syzkallSupport[c.CallName] != nil { + panic("syz_ext_ prefix is reserved for non-mainline pseudo-syscalls") + } + return true, "" + } if isSupported, ok := syzkallSupport[c.CallName]; ok { return isSupported(c, target, sandbox) } -- cgit mrf-deployment