diff options
| author | Baozeng Ding <sploving1@gmail.com> | 2016-06-10 21:57:19 +0800 |
|---|---|---|
| committer | Baozeng Ding <sploving1@gmail.com> | 2016-06-13 09:28:38 +0800 |
| commit | 1dbfdcf75749205d52b1aaacf59b2e66b3edaf63 (patch) | |
| tree | 01262826604e0296f040aa9c9e598fd9f1bebcf5 | |
| parent | 09a6b9531f64f3808e18a2801f0525808afee6f3 (diff) | |
sys: support kcm and netrom
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | sys/decl.go | 5 | ||||
| -rwxr-xr-x | sys/kcm.txt | 29 | ||||
| -rwxr-xr-x | sys/netrom.txt | 62 | ||||
| -rw-r--r-- | sysgen/sysgen.go | 4 |
5 files changed, 100 insertions, 2 deletions
@@ -42,7 +42,7 @@ upgrade: SYSCALL_FILES=sys/sys.txt sys/socket.txt sys/tty.txt sys/perf.txt \ sys/key.txt sys/bpf.txt sys/fuse.txt sys/dri.txt sys/kdbus.txt sys/sctp.txt \ sys/kvm.txt sys/sndseq.txt sys/sndtimer.txt sys/sndcontrol.txt sys/input.txt \ - sys/netlink.txt sys/tun.txt sys/random.txt + sys/netlink.txt sys/tun.txt sys/random.txt sys/kcm.txt sys/netrom.txt generate: bin/syz-sysgen $(SYSCALL_FILES) bin/syz-sysgen -linux=$(LINUX) -linuxbld=$(LINUXBLD) $(SYSCALL_FILES) bin/syz-sysgen: sysgen/*.go diff --git a/sys/decl.go b/sys/decl.go index 0705f0629..8115a1d6c 100644 --- a/sys/decl.go +++ b/sys/decl.go @@ -114,6 +114,8 @@ const ( FdInputEvent FdTun FdRandom + FdKcm + FdNetRom IPCMsq IPCSem @@ -143,7 +145,8 @@ func ResourceSubkinds(kind ResourceKind) []ResourceSubkind { FdDRI, FdFuse, FdKdbus, FdBpfMap, FdBpfProg, FdPerf, FdUserFault, FdAlg, FdAlgConn, FdNfcRaw, FdNfcLlcp, FdBtHci, FdBtSco, FdBtL2cap, FdBtRfcomm, FdBtHidp, FdBtCmtp, FdBtBnep, FdUnix, FdSctp, FdNetlink, FdKvm, FdKvmVm, - FdKvmCpu, FdSndSeq, FdSndTimer, FdSndControl, FdInputEvent, FdTun, FdRandom} + FdKvmCpu, FdSndSeq, FdSndTimer, FdSndControl, FdInputEvent, FdTun, FdRandom, FdKcm, + FdNetRom} case ResIPC: return []ResourceSubkind{IPCMsq, IPCSem, IPCShm} case ResIOCtx, ResKey, ResInotifyDesc, ResPid, ResUid, ResGid, ResTimerid, ResIocbPtr, ResDrmCtx: diff --git a/sys/kcm.txt b/sys/kcm.txt new file mode 100755 index 000000000..c4e603d77 --- /dev/null +++ b/sys/kcm.txt @@ -0,0 +1,29 @@ +# Copyright 2016 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +include <linux/kcm.h> + +socket$kcm(domain const[AF_KCM], type flags[kcm_socket_type], proto const[KCMPROTO_CONNECTED]) fd[kcm] +setsockopt$KCM_RECV_DISABLE(fd fd[kcm], level const[SOL_KCM], opt const[KCM_RECV_DISABLE], val ptr[in, int32], len len[val]) +getsockopt$KCM_RECV_DISABLE(fd fd[kcm], level const[SOL_KCM], opt const[KCM_RECV_DISABLE], val ptr[out, int32], len len[val]) +sendmsg$kcm(fd fd[kcm], msg ptr[in, send_msghdr], f flags[send_flags]) +recvmsg$kcm(fd fd[kcm], msg ptr[in, recv_msghdr], f flags[recv_flags]) + +ioctl$SIOCKCMATTACH(fd fd[kcm], cmd const[SIOCKCMATTACH], arg ptr[in, kcm_attach]) +ioctl$SIOCKCMUNATTACH(fd fd[kcm], cmd const[SIOCKCMUNATTACH], arg ptr[in, kcm_unattach]) +ioctl$SIOCKCMCLONE(fd fd[kcm], cmd const[SIOCKCMCLONE], arg ptr[inout, kcm_clone]) + +kcm_socket_type = SOCK_DGRAM, SOCK_SEQPACKET + +kcm_attach { + fd fd[sock] + bpf_fd int32 +} + +kcm_unattach { + fd fd[sock] +} + +kcm_clone { + fd fd[sock] +} diff --git a/sys/netrom.txt b/sys/netrom.txt new file mode 100755 index 000000000..630a6dbbb --- /dev/null +++ b/sys/netrom.txt @@ -0,0 +1,62 @@ +# Copyright 2016 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +include <linux/netrom.h> + +socket$netrom(domain const[AF_NETROM], type const[SOCK_SEQPACKET], proto const[0]) fd[netrom] +bind$netrom(fd fd[netrom], addr ptr[in, sockaddr_netrom], addrlen len[addr]) +connect$netrom(fd fd[netrom], addr ptr[in, sockaddr_netrom], addrlen len[addr]) +accept$netrom(fd fd[netrom], peer ptr[out, sockaddr_netrom, opt], peerlen ptr[inout, len[peer, int32]]) fd[netrom] +listen$netrom(fd fd[netrom], backlog int32) +sendmsg$netrom(fd fd[netrom], msg ptr[in, msghdr_netrom], f flags[send_flags]) +recvmsg$netrom(fd fd[netrom], msg ptr[in, msghdr_netrom], f flags[recv_flags]) +getsockname$netrom(fd fd[netrom], addr ptr[out, sockaddr_netrom], addrlen ptr[inout, len[addr, int32]]) +getpeername$netrom(fd fd[netrom], peer ptr[out, sockaddr_netrom], peerlen ptr[inout, len[peer, int32]]) + +setsockopt$NETROM_T1(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T1], arg ptr[in, int32], arglen len[arg]) +setsockopt$NETROM_T2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T2], arg ptr[in, int32], arglen len[arg]) +setsockopt$NETROM_N2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_N2], arg ptr[in, int32], arglen len[arg]) +setsockopt$NETROM_T4(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T4], arg ptr[in, int32], arglen len[arg]) +setsockopt$NETROM_IDLE(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_IDLE], arg ptr[in, int32], arglen len[arg]) + +getsockopt$NETROM_T1(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T1], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]]) +getsockopt$NETROM_T2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T2], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]]) +getsockopt$NETROM_N2(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_N2], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]]) +getsockopt$NETROM_T4(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_T4], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]]) +getsockopt$NETROM_IDLE(fd fd[netrom], level const[SOL_NETROM], opt const[NETROM_IDLE], arg ptr[in, int32], arglen ptr[inout, len[arg, int32]]) + +ioctl$NETROM_TIOCOUTQ(fd fd[netrom], cmd const[TIOCOUTQ], arg ptr[out, int32]) +ioctl$NETROM_TIOCINQ(fd fd[netrom], cmd const[TIOCINQ], arg ptr[out, int32]) +ioctl$NETROM_SIOCGSTAMP(fd fd[netrom], cmd const[SIOCGSTAMP], arg ptr[out, int32]) +ioctl$NETROM_SIOCGSTAMPNS(fd fd[netrom], cmd const[SIOCGSTAMPNS], arg ptr[out, int32]) +ioctl$NETROM_SIOCADDRT(fd fd[netrom], cmd const[SIOCADDRT], arg ptr[out, int32]) + +ax25_address { + call array[int8, 7] +} + +sockaddr_ax25 { + family const[AF_NETROM, int16] + call ax25_address + ndigis int32 +} + +full_sockaddr_ax25 { + ax25 sockaddr_ax25 + dig array[ax25_address, AX25_MAX_DIGIS] +} + +sockaddr_netrom [ + ax25 sockaddr_ax25 + full full_sockaddr_ax25 +] [varlen] + +msghdr_netrom { + addr ptr[in, sockaddr_netrom] + addrlen len[addr, int32] + vec ptr[in, array[iovec_in]] + vlen len[vec, intptr] + ctrl ptr[in, array[cmsghdr], opt] + ctrllen len[ctrl, intptr] + f flags[send_flags, int32] +} diff --git a/sysgen/sysgen.go b/sysgen/sysgen.go index 4fbb31755..6f3e5beef 100644 --- a/sysgen/sysgen.go +++ b/sysgen/sysgen.go @@ -470,6 +470,10 @@ func fmtFdKind(s string) string { return "FdTun" case "random": return "FdRandom" + case "kcm": + return "FdKcm" + case "netrom": + return "FdNetRom" default: failf("bad fd type %v", s) return "" |
