aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux
diff options
context:
space:
mode:
authorRicardo Cañuelo <ricardo.canuelo@collabora.com>2020-06-08 12:57:25 +0200
committerDmitry Vyukov <dvyukov@google.com>2020-06-09 15:58:40 +0200
commitc5e085d96d1cdc855365b7fd9c1825b886f266f6 (patch)
tree181b25942ec6919a7839a65b24b12f2711b277ab /sys/linux
parent092934c131705d77c23b65df2a846fcd49d98469 (diff)
sys/linux: specific descriptions for vim2m (v4l2)
Add a set of descriptions to focus the fuzzing process on the V4L2 vim2m test driver. This should be useful to test the M2M framework. The syscalls are based on a specific file descriptor for the vim2m device and a selection of v4l2 ioctls that operate on it. Some of the existing v4l2 data structure definitions have been extended to allow restricting and selecting some options in order to narrow down the fuzzing process. Initial support for Request API added.
Diffstat (limited to 'sys/linux')
-rw-r--r--sys/linux/dev_video4linux.txt55
-rw-r--r--sys/linux/dev_video4linux_amd64.const93
-rw-r--r--sys/linux/dev_video4linux_arm64.const93
-rw-r--r--sys/linux/dev_video4linux_vim2m.txt58
-rw-r--r--sys/linux/dev_video4linux_vim2m_amd64.const22
-rw-r--r--sys/linux/dev_video4linux_vim2m_arm64.const22
-rw-r--r--sys/linux/sys.txt2
7 files changed, 231 insertions, 114 deletions
diff --git a/sys/linux/dev_video4linux.txt b/sys/linux/dev_video4linux.txt
index 92fc34c7f..83aa76dd6 100644
--- a/sys/linux/dev_video4linux.txt
+++ b/sys/linux/dev_video4linux.txt
@@ -14,10 +14,13 @@ include <uapi/linux/v4l2-subdev.h>
include <uapi/linux/v4l2-mediabus.h>
include <uapi/linux/media-bus-format.h>
include <uapi/linux/v4l2-controls.h>
+include <uapi/linux/media.h>
resource fd_video[fd]
resource fd_dmabuf[fd]
resource fd_v4l2_buffer[fd]
+resource fd_media[fd]
+resource fd_request[fd]
syz_open_dev$video(dev ptr[in, string["/dev/video#"]], id intptr, flags flags[open_flags]) fd_video
syz_open_dev$video4linux(dev ptr[in, string["/dev/v4l-subdev#"]], id intptr, flags flags[open_flags]) fd_video
@@ -32,7 +35,6 @@ openat$vimc0(fd const[AT_FDCWD], file ptr[in, string["/dev/video0"]], flags cons
openat$vimc1(fd const[AT_FDCWD], file ptr[in, string["/dev/video1"]], flags const[O_RDWR], mode const[0]) fd_video
openat$vimc2(fd const[AT_FDCWD], file ptr[in, string["/dev/video2"]], flags const[O_RDWR], mode const[0]) fd_video
syz_open_dev$vivid(dev ptr[in, string["/dev/video#"]], id proc[3, 4], flags const[O_RDWR]) fd_video
-openat$vim2m(fd const[AT_FDCWD], file ptr[in, string["/dev/video35"]], flags const[O_RDWR], mode const[0]) fd_video
openat$vicodec0(fd const[AT_FDCWD], file ptr[in, string["/dev/video36"]], flags const[O_RDWR], mode const[0]) fd_video
openat$vicodec1(fd const[AT_FDCWD], file ptr[in, string["/dev/video37"]], flags const[O_RDWR], mode const[0]) fd_video
# TODO: there are some complex rules as to what ioctl's are applicable to what devices
@@ -45,17 +47,17 @@ syz_open_dev$cec(dev ptr[in, string["/dev/cec#"]], id proc[0, 4], flags const[O_
ioctl$VIDIOC_QUERYCAP(fd fd_video, cmd const[VIDIOC_QUERYCAP], arg ptr[out, v4l2_capability])
ioctl$VIDIOC_RESERVED(fd fd_video, cmd const[VIDIOC_RESERVED], arg const[0])
-ioctl$VIDIOC_ENUM_FMT(fd fd_video, cmd const[VIDIOC_ENUM_FMT], arg ptr[inout, v4l2_fmtdesc])
-ioctl$VIDIOC_G_FMT(fd fd_video, cmd const[VIDIOC_G_FMT], arg ptr[inout, v4l2_format])
-ioctl$VIDIOC_S_FMT(fd fd_video, cmd const[VIDIOC_S_FMT], arg ptr[inout, v4l2_format])
-ioctl$VIDIOC_REQBUFS(fd fd_video, cmd const[VIDIOC_REQBUFS], arg ptr[inout, v4l2_requestbuffers])
-ioctl$VIDIOC_QUERYBUF(fd fd_video, cmd const[VIDIOC_QUERYBUF], arg ptr[inout, v4l2_buffer])
+ioctl$VIDIOC_ENUM_FMT(fd fd_video, cmd const[VIDIOC_ENUM_FMT], arg ptr[inout, v4l2_fmtdesc[v4l2_buf_type]])
+ioctl$VIDIOC_G_FMT(fd fd_video, cmd const[VIDIOC_G_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type]])
+ioctl$VIDIOC_S_FMT(fd fd_video, cmd const[VIDIOC_S_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type]])
+ioctl$VIDIOC_REQBUFS(fd fd_video, cmd const[VIDIOC_REQBUFS], arg ptr[inout, v4l2_requestbuffers[v4l2_buf_type]])
+ioctl$VIDIOC_QUERYBUF(fd fd_video, cmd const[VIDIOC_QUERYBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
ioctl$VIDIOC_G_FBUF(fd fd_video, cmd const[VIDIOC_G_FBUF], arg ptr[inout, v4l2_framebuffer])
ioctl$VIDIOC_S_FBUF(fd fd_video, cmd const[VIDIOC_S_FBUF], arg ptr[in, v4l2_framebuffer])
ioctl$VIDIOC_OVERLAY(fd fd_video, cmd const[VIDIOC_OVERLAY], arg ptr[in, int32])
-ioctl$VIDIOC_QBUF(fd fd_video, cmd const[VIDIOC_QBUF], arg ptr[inout, v4l2_buffer])
-ioctl$VIDIOC_EXPBUF(fd fd_video, cmd const[VIDIOC_EXPBUF], arg ptr[inout, v4l2_exportbuffer])
-ioctl$VIDIOC_DQBUF(fd fd_video, cmd const[VIDIOC_DQBUF], arg ptr[inout, v4l2_buffer])
+ioctl$VIDIOC_QBUF(fd fd_video, cmd const[VIDIOC_QBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
+ioctl$VIDIOC_EXPBUF(fd fd_video, cmd const[VIDIOC_EXPBUF], arg ptr[inout, v4l2_exportbuffer[v4l2_buf_type]])
+ioctl$VIDIOC_DQBUF(fd fd_video, cmd const[VIDIOC_DQBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
ioctl$VIDIOC_STREAMON(fd fd_video, cmd const[VIDIOC_STREAMON], arg ptr[in, int32])
ioctl$VIDIOC_STREAMOFF(fd fd_video, cmd const[VIDIOC_STREAMOFF], arg ptr[in, int32])
ioctl$VIDIOC_G_PARM(fd fd_video, cmd const[VIDIOC_G_PARM], arg ptr[inout, v4l2_streamparm])
@@ -91,7 +93,7 @@ ioctl$VIDIOC_S_CROP(fd fd_video, cmd const[VIDIOC_S_CROP], arg ptr[in, v4l2_crop
ioctl$VIDIOC_G_JPEGCOMP(fd fd_video, cmd const[VIDIOC_G_JPEGCOMP], arg ptr[out, v4l2_jpegcompression])
ioctl$VIDIOC_S_JPEGCOMP(fd fd_video, cmd const[VIDIOC_S_JPEGCOMP], arg ptr[in, v4l2_jpegcompression])
ioctl$VIDIOC_QUERYSTD(fd fd_video, cmd const[VIDIOC_QUERYSTD], arg ptr[out, v4l2_std_id])
-ioctl$VIDIOC_TRY_FMT(fd fd_video, cmd const[VIDIOC_TRY_FMT], arg ptr[inout, v4l2_format])
+ioctl$VIDIOC_TRY_FMT(fd fd_video, cmd const[VIDIOC_TRY_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type]])
ioctl$VIDIOC_ENUMAUDIO(fd fd_video, cmd const[VIDIOC_ENUMAUDIO], arg ptr[inout, v4l2_audio])
ioctl$VIDIOC_ENUMAUDOUT(fd fd_video, cmd const[VIDIOC_ENUMAUDOUT], arg ptr[inout, v4l2_audioout])
ioctl$VIDIOC_G_PRIORITY(fd fd_video, cmd const[VIDIOC_G_PRIORITY], arg flags[v4l2_priority])
@@ -114,8 +116,8 @@ ioctl$VIDIOC_G_DV_TIMINGS(fd fd_video, cmd const[VIDIOC_G_DV_TIMINGS], arg ptr[i
ioctl$VIDIOC_DQEVENT(fd fd_video, cmd const[VIDIOC_DQEVENT], arg ptr[out, v4l2_event])
ioctl$VIDIOC_SUBSCRIBE_EVENT(fd fd_video, cmd const[VIDIOC_SUBSCRIBE_EVENT], arg ptr[in, v4l2_event_subscription])
ioctl$VIDIOC_UNSUBSCRIBE_EVENT(fd fd_video, cmd const[VIDIOC_UNSUBSCRIBE_EVENT], arg ptr[in, v4l2_event_subscription])
-ioctl$VIDIOC_CREATE_BUFS(fd fd_video, cmd const[VIDIOC_CREATE_BUFS], arg ptr[inout, v4l2_create_buffers])
-ioctl$VIDIOC_PREPARE_BUF(fd fd_video, cmd const[VIDIOC_PREPARE_BUF], arg ptr[inout, v4l2_buffer])
+ioctl$VIDIOC_CREATE_BUFS(fd fd_video, cmd const[VIDIOC_CREATE_BUFS], arg ptr[inout, v4l2_create_buffers[v4l2_buf_type]])
+ioctl$VIDIOC_PREPARE_BUF(fd fd_video, cmd const[VIDIOC_PREPARE_BUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type, fd]])
ioctl$VIDIOC_G_SELECTION(fd fd_video, cmd const[VIDIOC_G_SELECTION], arg ptr[inout, v4l2_selection])
ioctl$VIDIOC_S_SELECTION(fd fd_video, cmd const[VIDIOC_S_SELECTION], arg ptr[inout, v4l2_selection])
ioctl$VIDIOC_DECODER_CMD(fd fd_video, cmd const[VIDIOC_DECODER_CMD], arg ptr[inout, v4l2_decoder_cmd])
@@ -145,6 +147,9 @@ ioctl$VIDIOC_SUBDEV_ENUM_DV_TIMINGS(fd fd_video, cmd const[VIDIOC_SUBDEV_ENUM_DV
ioctl$VIDIOC_SUBDEV_QUERY_DV_TIMINGS(fd fd_video, cmd const[VIDIOC_SUBDEV_QUERY_DV_TIMINGS], arg ptr[out, v4l2_dv_timings])
ioctl$VIDIOC_SUBDEV_DV_TIMINGS_CAP(fd fd_video, cmd const[VIDIOC_SUBDEV_DV_TIMINGS_CAP], arg ptr[inout, v4l2_dv_timings_cap])
+ioctl$MEDIA_IOC_REQUEST_ALLOC(fd fd_media, cmd const[MEDIA_IOC_REQUEST_ALLOC], arg ptr[out, fd_request])
+ioctl$MEDIA_REQUEST_IOC_QUEUE(fd fd_request, cmd const[MEDIA_REQUEST_IOC_QUEUE], arg const[0])
+
v4l2_capability {
driver array[int8, 16]
card array[int8, 32]
@@ -155,17 +160,17 @@ v4l2_capability {
reserved array[const[0, int32], 3]
}
-v4l2_fmtdesc {
+type v4l2_fmtdesc[BUF_TYPE] {
index int32
- type flags[v4l2_buf_type, int32]
+ type flags[BUF_TYPE, int32]
flags flags[v4l2_fmtdesc_flags, int32]
description array[int8, 32]
pixelformat flags[v4l2_pix_format_pixelformat, int32]
reserved array[const[0, int32], 4]
}
-v4l2_format {
- type flags[v4l2_buf_type, int32]
+type v4l2_format[BUF_TYPE] {
+ type flags[BUF_TYPE, int32]
fmt v4l2_format_fmt
}
@@ -261,17 +266,17 @@ v4l2_sdr_format {
reserved array[const[0, int8], 24]
} [packed]
-v4l2_requestbuffers {
+type v4l2_requestbuffers[BUF_TYPE] {
count int32
- type flags[v4l2_buf_type, int32]
+ type flags[BUF_TYPE, int32]
memory flags[v4l2_memory, int32]
capabilities const[0, int32]
reserved const[0, int32]
}
-v4l2_buffer {
+type v4l2_buffer[BUF_TYPE, FD_TYPE] {
index int32
- type flags[v4l2_buf_type, int32]
+ type flags[BUF_TYPE, int32]
bytesused len[type, int32]
flags flags[v4l2_buffer_flags, int32]
field int32
@@ -282,7 +287,7 @@ v4l2_buffer {
m v4l2_buffer_union
length int32
reserved2 const[0, int32]
- request_fd fd[opt]
+ request_fd FD_TYPE[opt]
}
v4l2_buffer_union [
@@ -334,8 +339,8 @@ v4l2_framebuffer_union {
priv int32
}
-v4l2_exportbuffer {
- type flags[v4l2_buf_type, int32]
+type v4l2_exportbuffer[BUF_TYPE] {
+ type flags[BUF_TYPE, int32]
index int32
plane int32
flags flags[pipe_flags, int32]
@@ -707,11 +712,11 @@ v4l2_event_subscription {
reserved array[const[0, int32], 5]
}
-v4l2_create_buffers {
+type v4l2_create_buffers[BUF_TYPE] {
index int32
count int32
memory flags[v4l2_memory, int32]
- format v4l2_format
+ format v4l2_format[BUF_TYPE]
capabilities int32
reserved array[const[0, int32], 7]
}
diff --git a/sys/linux/dev_video4linux_amd64.const b/sys/linux/dev_video4linux_amd64.const
index a8088890c..a732812f6 100644
--- a/sys/linux/dev_video4linux_amd64.const
+++ b/sys/linux/dev_video4linux_amd64.const
@@ -1,4 +1,5 @@
# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
MEDIA_BUS_FMT_AHSV8888_1X32 = 24577
MEDIA_BUS_FMT_ARGB8888_1X32 = 4109
MEDIA_BUS_FMT_AYUV8_1X32 = 8215
@@ -87,6 +88,9 @@ MEDIA_BUS_FMT_YVYU12_2X12 = 8223
MEDIA_BUS_FMT_YVYU8_1X16 = 8210
MEDIA_BUS_FMT_YVYU8_1_5X8 = 8197
MEDIA_BUS_FMT_YVYU8_2X8 = 8201
+MEDIA_IOC_REQUEST_ALLOC = 2147777541
+MEDIA_REQUEST_IOC_QUEUE = 31872
+O_RDWR = 2
V4L2_AUDCAP_AVL = 2
V4L2_AUDCAP_STEREO = 1
V4L2_AUDMODE_AVL = 1
@@ -441,7 +445,7 @@ V4L2_CID_ZOOM_CONTINUOUS = 10094863
V4L2_CID_ZOOM_RELATIVE = 10094862
V4L2_COLORSPACE_470_SYSTEM_BG = 6
V4L2_COLORSPACE_470_SYSTEM_M = 5
-V4L2_COLORSPACE_ADOBERGB = 9
+# V4L2_COLORSPACE_ADOBERGB is not set
V4L2_COLORSPACE_BT2020 = 10
V4L2_COLORSPACE_BT878 = 4
V4L2_COLORSPACE_DCI_P3 = 12
@@ -501,7 +505,7 @@ V4L2_DEC_CMD_START_MUTE_AUDIO = 1
V4L2_DEC_CMD_STOP = 1
V4L2_DEC_CMD_STOP_IMMEDIATELY = 2
V4L2_DEC_CMD_STOP_TO_BLACK = 1
-V4L2_DEC_QCOM_CMD_RECONFIG_HINT = 5
+# V4L2_DEC_QCOM_CMD_RECONFIG_HINT is not set
V4L2_DEC_START_FMT_GOP = 1
V4L2_DEC_START_FMT_NONE = 0
V4L2_DV_BT_656_1120 = 0
@@ -542,17 +546,17 @@ V4L2_EVENT_EOS = 2
V4L2_EVENT_FRAME_SYNC = 4
V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ = 1
V4L2_EVENT_MOTION_DET = 6
-V4L2_EVENT_MSM_VIDC_FLUSH_DONE = 134221825
-V4L2_EVENT_MSM_VIDC_HW_OVERLOAD = 134221832
-V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED = 134221834
-V4L2_EVENT_MSM_VIDC_MAX_CLIENTS = 134221833
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT = 134221828
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT = 134221827
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT = 134221826
-V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE = 134221830
-V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER = 134221831
-V4L2_EVENT_MSM_VIDC_START = 134221824
-V4L2_EVENT_MSM_VIDC_SYS_ERROR = 134221829
+# V4L2_EVENT_MSM_VIDC_FLUSH_DONE is not set
+# V4L2_EVENT_MSM_VIDC_HW_OVERLOAD is not set
+# V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED is not set
+# V4L2_EVENT_MSM_VIDC_MAX_CLIENTS is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER is not set
+# V4L2_EVENT_MSM_VIDC_START is not set
+# V4L2_EVENT_MSM_VIDC_SYS_ERROR is not set
V4L2_EVENT_PRIVATE_START = 134217728
V4L2_EVENT_SOURCE_CHANGE = 5
V4L2_EVENT_SRC_CH_RESOLUTION = 1
@@ -624,7 +628,7 @@ V4L2_MEMORY_MMAP = 1
V4L2_MEMORY_OVERLAY = 3
V4L2_MEMORY_USERPTR = 2
V4L2_MODE_HIGHQUALITY = 1
-V4L2_MSM_BUF_FLAG_DEFER = 1073741824
+# V4L2_MSM_BUF_FLAG_DEFER is not set
V4L2_OUTPUT_TYPE_ANALOG = 2
V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY = 3
V4L2_OUTPUT_TYPE_MODULATOR = 1
@@ -668,9 +672,9 @@ V4L2_PIX_FMT_NV12 = 842094158
V4L2_PIX_FMT_NV12M = 842091854
V4L2_PIX_FMT_NV12MT = 842091860
V4L2_PIX_FMT_NV12MT_16X16 = 842091862
-V4L2_PIX_FMT_NV12_P010_UBWC = 1110585681
-V4L2_PIX_FMT_NV12_TP10_UBWC = 1093808465
-V4L2_PIX_FMT_NV12_UBWC = 942813521
+# V4L2_PIX_FMT_NV12_P010_UBWC is not set
+# V4L2_PIX_FMT_NV12_TP10_UBWC is not set
+# V4L2_PIX_FMT_NV12_UBWC is not set
V4L2_PIX_FMT_NV16 = 909203022
V4L2_PIX_FMT_NV16M = 909200718
V4L2_PIX_FMT_NV21 = 825382478
@@ -694,7 +698,7 @@ V4L2_PIX_FMT_RGB555 = 1329743698
V4L2_PIX_FMT_RGB555X = 1363298130
V4L2_PIX_FMT_RGB565 = 1346520914
V4L2_PIX_FMT_RGB565X = 1380075346
-V4L2_PIX_FMT_RGBA8888_UBWC = 1111970385
+# V4L2_PIX_FMT_RGBA8888_UBWC is not set
V4L2_PIX_FMT_S5C_UYVY_JPG = 1229141331
V4L2_PIX_FMT_SBGGR10 = 808535874
V4L2_PIX_FMT_SBGGR10ALAW8 = 943800929
@@ -732,7 +736,7 @@ V4L2_PIX_FMT_SRGGB12 = 842090322
V4L2_PIX_FMT_SRGGB8 = 1111967570
V4L2_PIX_FMT_STV0680 = 808990291
V4L2_PIX_FMT_TM6000 = 808865108
-V4L2_PIX_FMT_TME = 809848148
+# V4L2_PIX_FMT_TME is not set
V4L2_PIX_FMT_UV8 = 540563029
V4L2_PIX_FMT_UYVY = 1498831189
V4L2_PIX_FMT_VC1_ANNEX_G = 1194410838
@@ -782,20 +786,20 @@ V4L2_PRIORITY_DEFAULT = 2
V4L2_PRIORITY_INTERACTIVE = 2
V4L2_PRIORITY_RECORD = 3
V4L2_PRIORITY_UNSET = 0
-V4L2_QCOM_BUF_DATA_CORRUPT = 4194304
-V4L2_QCOM_BUF_FLAG_CODECCONFIG = 131072
-V4L2_QCOM_BUF_FLAG_DECODEONLY = 2097152
-V4L2_QCOM_BUF_FLAG_EOS = 33554432
-V4L2_QCOM_BUF_FLAG_EOSEQ = 262144
-V4L2_QCOM_BUF_FLAG_IDRFRAME = 2147483648
-V4L2_QCOM_BUF_FLAG_PERF_MODE = 536870912
-V4L2_QCOM_BUF_FLAG_READONLY = 67108864
-V4L2_QCOM_BUF_INPUT_UNSUPPORTED = 16777216
-V4L2_QCOM_BUF_TIMESTAMP_INVALID = 524288
-V4L2_QCOM_CMD_FLUSH = 4
-V4L2_QCOM_CMD_FLUSH_CAPTURE = 2
-V4L2_QCOM_CMD_FLUSH_OUTPUT = 1
-V4L2_QCOM_CMD_SESSION_CONTINUE = 6
+# V4L2_QCOM_BUF_DATA_CORRUPT is not set
+# V4L2_QCOM_BUF_FLAG_CODECCONFIG is not set
+# V4L2_QCOM_BUF_FLAG_DECODEONLY is not set
+# V4L2_QCOM_BUF_FLAG_EOS is not set
+# V4L2_QCOM_BUF_FLAG_EOSEQ is not set
+# V4L2_QCOM_BUF_FLAG_IDRFRAME is not set
+# V4L2_QCOM_BUF_FLAG_PERF_MODE is not set
+# V4L2_QCOM_BUF_FLAG_READONLY is not set
+# V4L2_QCOM_BUF_INPUT_UNSUPPORTED is not set
+# V4L2_QCOM_BUF_TIMESTAMP_INVALID is not set
+# V4L2_QCOM_CMD_FLUSH is not set
+# V4L2_QCOM_CMD_FLUSH_CAPTURE is not set
+# V4L2_QCOM_CMD_FLUSH_OUTPUT is not set
+# V4L2_QCOM_CMD_SESSION_CONTINUE is not set
V4L2_QUANTIZATION_DEFAULT = 0
V4L2_QUANTIZATION_FULL_RANGE = 1
V4L2_QUANTIZATION_LIM_RANGE = 2
@@ -803,12 +807,12 @@ V4L2_SEL_FLAG_GE = 1
V4L2_SEL_FLAG_KEEP_CONFIG = 4
V4L2_SEL_FLAG_LE = 2
V4L2_SEL_TGT_COMPOSE = 256
-V4L2_SEL_TGT_COMPOSE_ACTIVE = 256
+# V4L2_SEL_TGT_COMPOSE_ACTIVE is not set
V4L2_SEL_TGT_COMPOSE_BOUNDS = 258
V4L2_SEL_TGT_COMPOSE_DEFAULT = 257
V4L2_SEL_TGT_COMPOSE_PADDED = 259
V4L2_SEL_TGT_CROP = 0
-V4L2_SEL_TGT_CROP_ACTIVE = 0
+# V4L2_SEL_TGT_CROP_ACTIVE is not set
V4L2_SEL_TGT_CROP_BOUNDS = 2
V4L2_SEL_TGT_CROP_DEFAULT = 1
V4L2_SEL_TGT_NATIVE_SIZE = 3
@@ -860,13 +864,13 @@ V4L2_STD_SECAM_LC = 8388608
V4L2_STD_UNKNOWN = 0
V4L2_SUBDEV_FORMAT_ACTIVE = 1
V4L2_SUBDEV_FORMAT_TRY = 0
-V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG = 4
-V4L2_SUBDEV_SEL_FLAG_SIZE_GE = 1
-V4L2_SUBDEV_SEL_FLAG_SIZE_LE = 2
-V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL = 256
-V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS = 258
-V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL = 0
-V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS = 2
+# V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_GE is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_LE is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS is not set
V4L2_TC_FLAG_COLORFRAME = 2
V4L2_TC_FLAG_DROPFRAME = 1
V4L2_TC_TYPE_24FPS = 1
@@ -915,7 +919,7 @@ V4L2_VBI_ITU_625_F1_START = 1
V4L2_VBI_ITU_625_F2_START = 314
V4L2_VBI_UNSYNC = 1
V4L2_XFER_FUNC_709 = 1
-V4L2_XFER_FUNC_ADOBERGB = 3
+# V4L2_XFER_FUNC_ADOBERGB is not set
V4L2_XFER_FUNC_DCI_P3 = 6
V4L2_XFER_FUNC_DEFAULT = 0
V4L2_XFER_FUNC_NONE = 5
@@ -984,7 +988,7 @@ VIDIOC_QUERYSTD = 2148030015
VIDIOC_QUERY_DV_TIMINGS = 2156156515
VIDIOC_QUERY_EXT_CTRL = 3236451943
VIDIOC_REQBUFS = 3222558216
-VIDIOC_RESERVED = 22017
+# VIDIOC_RESERVED is not set
VIDIOC_STREAMOFF = 1074026003
VIDIOC_STREAMON = 1074026002
VIDIOC_SUBDEV_DV_TIMINGS_CAP = 3230684772
@@ -1032,3 +1036,4 @@ VIDIOC_TRY_EXT_CTRLS = 3223344713
VIDIOC_TRY_FMT = 3234879040
VIDIOC_UNSUBSCRIBE_EVENT = 1075861083
__NR_ioctl = 16
+__NR_openat = 257
diff --git a/sys/linux/dev_video4linux_arm64.const b/sys/linux/dev_video4linux_arm64.const
index c18bacdbe..2d505d23f 100644
--- a/sys/linux/dev_video4linux_arm64.const
+++ b/sys/linux/dev_video4linux_arm64.const
@@ -1,4 +1,5 @@
# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
MEDIA_BUS_FMT_AHSV8888_1X32 = 24577
MEDIA_BUS_FMT_ARGB8888_1X32 = 4109
MEDIA_BUS_FMT_AYUV8_1X32 = 8215
@@ -87,6 +88,9 @@ MEDIA_BUS_FMT_YVYU12_2X12 = 8223
MEDIA_BUS_FMT_YVYU8_1X16 = 8210
MEDIA_BUS_FMT_YVYU8_1_5X8 = 8197
MEDIA_BUS_FMT_YVYU8_2X8 = 8201
+MEDIA_IOC_REQUEST_ALLOC = 2147777541
+MEDIA_REQUEST_IOC_QUEUE = 31872
+O_RDWR = 2
V4L2_AUDCAP_AVL = 2
V4L2_AUDCAP_STEREO = 1
V4L2_AUDMODE_AVL = 1
@@ -441,7 +445,7 @@ V4L2_CID_ZOOM_CONTINUOUS = 10094863
V4L2_CID_ZOOM_RELATIVE = 10094862
V4L2_COLORSPACE_470_SYSTEM_BG = 6
V4L2_COLORSPACE_470_SYSTEM_M = 5
-V4L2_COLORSPACE_ADOBERGB = 9
+# V4L2_COLORSPACE_ADOBERGB is not set
V4L2_COLORSPACE_BT2020 = 10
V4L2_COLORSPACE_BT878 = 4
V4L2_COLORSPACE_DCI_P3 = 12
@@ -501,7 +505,7 @@ V4L2_DEC_CMD_START_MUTE_AUDIO = 1
V4L2_DEC_CMD_STOP = 1
V4L2_DEC_CMD_STOP_IMMEDIATELY = 2
V4L2_DEC_CMD_STOP_TO_BLACK = 1
-V4L2_DEC_QCOM_CMD_RECONFIG_HINT = 5
+# V4L2_DEC_QCOM_CMD_RECONFIG_HINT is not set
V4L2_DEC_START_FMT_GOP = 1
V4L2_DEC_START_FMT_NONE = 0
V4L2_DV_BT_656_1120 = 0
@@ -542,17 +546,17 @@ V4L2_EVENT_EOS = 2
V4L2_EVENT_FRAME_SYNC = 4
V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ = 1
V4L2_EVENT_MOTION_DET = 6
-V4L2_EVENT_MSM_VIDC_FLUSH_DONE = 134221825
-V4L2_EVENT_MSM_VIDC_HW_OVERLOAD = 134221832
-V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED = 134221834
-V4L2_EVENT_MSM_VIDC_MAX_CLIENTS = 134221833
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT = 134221828
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT = 134221827
-V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT = 134221826
-V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE = 134221830
-V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER = 134221831
-V4L2_EVENT_MSM_VIDC_START = 134221824
-V4L2_EVENT_MSM_VIDC_SYS_ERROR = 134221829
+# V4L2_EVENT_MSM_VIDC_FLUSH_DONE is not set
+# V4L2_EVENT_MSM_VIDC_HW_OVERLOAD is not set
+# V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED is not set
+# V4L2_EVENT_MSM_VIDC_MAX_CLIENTS is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE is not set
+# V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER is not set
+# V4L2_EVENT_MSM_VIDC_START is not set
+# V4L2_EVENT_MSM_VIDC_SYS_ERROR is not set
V4L2_EVENT_PRIVATE_START = 134217728
V4L2_EVENT_SOURCE_CHANGE = 5
V4L2_EVENT_SRC_CH_RESOLUTION = 1
@@ -624,7 +628,7 @@ V4L2_MEMORY_MMAP = 1
V4L2_MEMORY_OVERLAY = 3
V4L2_MEMORY_USERPTR = 2
V4L2_MODE_HIGHQUALITY = 1
-V4L2_MSM_BUF_FLAG_DEFER = 1073741824
+# V4L2_MSM_BUF_FLAG_DEFER is not set
V4L2_OUTPUT_TYPE_ANALOG = 2
V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY = 3
V4L2_OUTPUT_TYPE_MODULATOR = 1
@@ -668,9 +672,9 @@ V4L2_PIX_FMT_NV12 = 842094158
V4L2_PIX_FMT_NV12M = 842091854
V4L2_PIX_FMT_NV12MT = 842091860
V4L2_PIX_FMT_NV12MT_16X16 = 842091862
-V4L2_PIX_FMT_NV12_P010_UBWC = 1110585681
-V4L2_PIX_FMT_NV12_TP10_UBWC = 1093808465
-V4L2_PIX_FMT_NV12_UBWC = 942813521
+# V4L2_PIX_FMT_NV12_P010_UBWC is not set
+# V4L2_PIX_FMT_NV12_TP10_UBWC is not set
+# V4L2_PIX_FMT_NV12_UBWC is not set
V4L2_PIX_FMT_NV16 = 909203022
V4L2_PIX_FMT_NV16M = 909200718
V4L2_PIX_FMT_NV21 = 825382478
@@ -694,7 +698,7 @@ V4L2_PIX_FMT_RGB555 = 1329743698
V4L2_PIX_FMT_RGB555X = 1363298130
V4L2_PIX_FMT_RGB565 = 1346520914
V4L2_PIX_FMT_RGB565X = 1380075346
-V4L2_PIX_FMT_RGBA8888_UBWC = 1111970385
+# V4L2_PIX_FMT_RGBA8888_UBWC is not set
V4L2_PIX_FMT_S5C_UYVY_JPG = 1229141331
V4L2_PIX_FMT_SBGGR10 = 808535874
V4L2_PIX_FMT_SBGGR10ALAW8 = 943800929
@@ -732,7 +736,7 @@ V4L2_PIX_FMT_SRGGB12 = 842090322
V4L2_PIX_FMT_SRGGB8 = 1111967570
V4L2_PIX_FMT_STV0680 = 808990291
V4L2_PIX_FMT_TM6000 = 808865108
-V4L2_PIX_FMT_TME = 809848148
+# V4L2_PIX_FMT_TME is not set
V4L2_PIX_FMT_UV8 = 540563029
V4L2_PIX_FMT_UYVY = 1498831189
V4L2_PIX_FMT_VC1_ANNEX_G = 1194410838
@@ -782,20 +786,20 @@ V4L2_PRIORITY_DEFAULT = 2
V4L2_PRIORITY_INTERACTIVE = 2
V4L2_PRIORITY_RECORD = 3
V4L2_PRIORITY_UNSET = 0
-V4L2_QCOM_BUF_DATA_CORRUPT = 4194304
-V4L2_QCOM_BUF_FLAG_CODECCONFIG = 131072
-V4L2_QCOM_BUF_FLAG_DECODEONLY = 2097152
-V4L2_QCOM_BUF_FLAG_EOS = 33554432
-V4L2_QCOM_BUF_FLAG_EOSEQ = 262144
-V4L2_QCOM_BUF_FLAG_IDRFRAME = 2147483648
-V4L2_QCOM_BUF_FLAG_PERF_MODE = 536870912
-V4L2_QCOM_BUF_FLAG_READONLY = 67108864
-V4L2_QCOM_BUF_INPUT_UNSUPPORTED = 16777216
-V4L2_QCOM_BUF_TIMESTAMP_INVALID = 524288
-V4L2_QCOM_CMD_FLUSH = 4
-V4L2_QCOM_CMD_FLUSH_CAPTURE = 2
-V4L2_QCOM_CMD_FLUSH_OUTPUT = 1
-V4L2_QCOM_CMD_SESSION_CONTINUE = 6
+# V4L2_QCOM_BUF_DATA_CORRUPT is not set
+# V4L2_QCOM_BUF_FLAG_CODECCONFIG is not set
+# V4L2_QCOM_BUF_FLAG_DECODEONLY is not set
+# V4L2_QCOM_BUF_FLAG_EOS is not set
+# V4L2_QCOM_BUF_FLAG_EOSEQ is not set
+# V4L2_QCOM_BUF_FLAG_IDRFRAME is not set
+# V4L2_QCOM_BUF_FLAG_PERF_MODE is not set
+# V4L2_QCOM_BUF_FLAG_READONLY is not set
+# V4L2_QCOM_BUF_INPUT_UNSUPPORTED is not set
+# V4L2_QCOM_BUF_TIMESTAMP_INVALID is not set
+# V4L2_QCOM_CMD_FLUSH is not set
+# V4L2_QCOM_CMD_FLUSH_CAPTURE is not set
+# V4L2_QCOM_CMD_FLUSH_OUTPUT is not set
+# V4L2_QCOM_CMD_SESSION_CONTINUE is not set
V4L2_QUANTIZATION_DEFAULT = 0
V4L2_QUANTIZATION_FULL_RANGE = 1
V4L2_QUANTIZATION_LIM_RANGE = 2
@@ -803,12 +807,12 @@ V4L2_SEL_FLAG_GE = 1
V4L2_SEL_FLAG_KEEP_CONFIG = 4
V4L2_SEL_FLAG_LE = 2
V4L2_SEL_TGT_COMPOSE = 256
-V4L2_SEL_TGT_COMPOSE_ACTIVE = 256
+# V4L2_SEL_TGT_COMPOSE_ACTIVE is not set
V4L2_SEL_TGT_COMPOSE_BOUNDS = 258
V4L2_SEL_TGT_COMPOSE_DEFAULT = 257
V4L2_SEL_TGT_COMPOSE_PADDED = 259
V4L2_SEL_TGT_CROP = 0
-V4L2_SEL_TGT_CROP_ACTIVE = 0
+# V4L2_SEL_TGT_CROP_ACTIVE is not set
V4L2_SEL_TGT_CROP_BOUNDS = 2
V4L2_SEL_TGT_CROP_DEFAULT = 1
V4L2_SEL_TGT_NATIVE_SIZE = 3
@@ -860,13 +864,13 @@ V4L2_STD_SECAM_LC = 8388608
V4L2_STD_UNKNOWN = 0
V4L2_SUBDEV_FORMAT_ACTIVE = 1
V4L2_SUBDEV_FORMAT_TRY = 0
-V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG = 4
-V4L2_SUBDEV_SEL_FLAG_SIZE_GE = 1
-V4L2_SUBDEV_SEL_FLAG_SIZE_LE = 2
-V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL = 256
-V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS = 258
-V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL = 0
-V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS = 2
+# V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_GE is not set
+# V4L2_SUBDEV_SEL_FLAG_SIZE_LE is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL is not set
+# V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS is not set
V4L2_TC_FLAG_COLORFRAME = 2
V4L2_TC_FLAG_DROPFRAME = 1
V4L2_TC_TYPE_24FPS = 1
@@ -915,7 +919,7 @@ V4L2_VBI_ITU_625_F1_START = 1
V4L2_VBI_ITU_625_F2_START = 314
V4L2_VBI_UNSYNC = 1
V4L2_XFER_FUNC_709 = 1
-V4L2_XFER_FUNC_ADOBERGB = 3
+# V4L2_XFER_FUNC_ADOBERGB is not set
V4L2_XFER_FUNC_DCI_P3 = 6
V4L2_XFER_FUNC_DEFAULT = 0
V4L2_XFER_FUNC_NONE = 5
@@ -984,7 +988,7 @@ VIDIOC_QUERYSTD = 2148030015
VIDIOC_QUERY_DV_TIMINGS = 2156156515
VIDIOC_QUERY_EXT_CTRL = 3236451943
VIDIOC_REQBUFS = 3222558216
-VIDIOC_RESERVED = 22017
+# VIDIOC_RESERVED is not set
VIDIOC_STREAMOFF = 1074026003
VIDIOC_STREAMON = 1074026002
VIDIOC_SUBDEV_DV_TIMINGS_CAP = 3230684772
@@ -1032,3 +1036,4 @@ VIDIOC_TRY_EXT_CTRLS = 3223344713
VIDIOC_TRY_FMT = 3234879040
VIDIOC_UNSUBSCRIBE_EVENT = 1075861083
__NR_ioctl = 29
+__NR_openat = 56
diff --git a/sys/linux/dev_video4linux_vim2m.txt b/sys/linux/dev_video4linux_vim2m.txt
new file mode 100644
index 000000000..d0eb6fd43
--- /dev/null
+++ b/sys/linux/dev_video4linux_vim2m.txt
@@ -0,0 +1,58 @@
+# Copyright 2020 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.
+
+# V4L2 specific support for the vim2m driver.
+#
+# These descriptions narrow the search space to focus on the M2M
+# framework code. The vim2m driver should be built into the kernel
+# (CONFIG_VIDEO_VI2M2=y)
+
+include <linux/time.h>
+include <linux/types.h>
+include <uapi/asm/ioctl.h>
+include <uapi/linux/fcntl.h>
+include <uapi/linux/videodev2.h>
+include <uapi/linux/v4l2-common.h>
+include <uapi/linux/v4l2-subdev.h>
+include <uapi/linux/v4l2-mediabus.h>
+include <uapi/linux/media-bus-format.h>
+include <uapi/linux/v4l2-controls.h>
+
+resource fd_vim2m[fd]
+
+# syz_open_dev will use devices from /dev/video0 to /dev/video10
+# openat$vim2m assumes a symlink (/dev/vim2m) to the appropriate vim2m device
+# This can be set with a udev rule such as this:
+#
+# ATTR{name}=="vim2m", SYMLINK+="vim2m"
+
+syz_open_dev$vim2m(dev ptr[in, string["/dev/video#"]], id intptr, flags const[O_RDWR]) fd_vim2m
+openat$vim2m(fd const[AT_FDCWD], file ptr[in, string["/dev/vim2m"]], flags const[O_RDWR], mode const[0]) fd_vim2m
+
+# Specialized ioctls for vim2m
+
+ioctl$vim2m_VIDIOC_QUERYCAP(fd fd_vim2m, cmd const[VIDIOC_QUERYCAP], arg ptr[out, v4l2_capability])
+ioctl$vim2m_VIDIOC_ENUM_FMT(fd fd_vim2m, cmd const[VIDIOC_ENUM_FMT], arg ptr[inout, v4l2_fmtdesc[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_ENUM_FRAMESIZES(fd fd_vim2m, cmd const[VIDIOC_ENUM_FRAMESIZES], arg ptr[inout, v4l2_frmsizeenum])
+ioctl$vim2m_VIDIOC_G_FMT(fd fd_vim2m, cmd const[VIDIOC_G_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_TRY_FMT(fd fd_vim2m, cmd const[VIDIOC_TRY_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_S_FMT(fd fd_vim2m, cmd const[VIDIOC_S_FMT], arg ptr[inout, v4l2_format[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_REQBUFS(fd fd_vim2m, cmd const[VIDIOC_REQBUFS], arg ptr[inout, v4l2_requestbuffers[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_QUERYBUF(fd fd_vim2m, cmd const[VIDIOC_QUERYBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_QBUF(fd fd_vim2m, cmd const[VIDIOC_QBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_DQBUF(fd fd_vim2m, cmd const[VIDIOC_DQBUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_PREPARE_BUF(fd fd_vim2m, cmd const[VIDIOC_PREPARE_BUF], arg ptr[inout, v4l2_buffer[v4l2_buf_type_vim2m, fd_request]])
+ioctl$vim2m_VIDIOC_CREATE_BUFS(fd fd_vim2m, cmd const[VIDIOC_CREATE_BUFS], arg ptr[inout, v4l2_create_buffers[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_EXPBUF(fd fd_vim2m, cmd const[VIDIOC_EXPBUF], arg ptr[inout, v4l2_exportbuffer[v4l2_buf_type_vim2m]])
+ioctl$vim2m_VIDIOC_S_CTRL(fd fd_vim2m, cmd const[VIDIOC_S_CTRL], arg ptr[inout, v4l2_control])
+ioctl$vim2m_VIDIOC_STREAMON(fd fd_vim2m, cmd const[VIDIOC_STREAMON], arg ptr[in, vim2m_qtype])
+ioctl$vim2m_VIDIOC_STREAMOFF(fd fd_vim2m, cmd const[VIDIOC_STREAMON], arg ptr[in, vim2m_qtype])
+
+# Limit buffer types to OUTPUT and CAPTURE
+
+vim2m_qtype [
+ output const[V4L2_BUF_TYPE_VIDEO_OUTPUT, int32]
+ capture const[V4L2_BUF_TYPE_VIDEO_CAPTURE, int32]
+]
+
+v4l2_buf_type_vim2m = V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_BUF_TYPE_VIDEO_OUTPUT
diff --git a/sys/linux/dev_video4linux_vim2m_amd64.const b/sys/linux/dev_video4linux_vim2m_amd64.const
new file mode 100644
index 000000000..e580db196
--- /dev/null
+++ b/sys/linux/dev_video4linux_vim2m_amd64.const
@@ -0,0 +1,22 @@
+# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
+O_RDWR = 2
+V4L2_BUF_TYPE_VIDEO_CAPTURE = 1
+V4L2_BUF_TYPE_VIDEO_OUTPUT = 2
+VIDIOC_CREATE_BUFS = 3238024796
+VIDIOC_DQBUF = 3227014673
+VIDIOC_ENUM_FMT = 3225441794
+VIDIOC_ENUM_FRAMESIZES = 3224131146
+VIDIOC_EXPBUF = 3225441808
+VIDIOC_G_FMT = 3234878980
+VIDIOC_PREPARE_BUF = 3227014749
+VIDIOC_QBUF = 3227014671
+VIDIOC_QUERYBUF = 3227014665
+VIDIOC_QUERYCAP = 2154321408
+VIDIOC_REQBUFS = 3222558216
+VIDIOC_STREAMON = 1074026002
+VIDIOC_S_CTRL = 3221771804
+VIDIOC_S_FMT = 3234878981
+VIDIOC_TRY_FMT = 3234879040
+__NR_ioctl = 16
+__NR_openat = 257
diff --git a/sys/linux/dev_video4linux_vim2m_arm64.const b/sys/linux/dev_video4linux_vim2m_arm64.const
new file mode 100644
index 000000000..a8f712fa9
--- /dev/null
+++ b/sys/linux/dev_video4linux_vim2m_arm64.const
@@ -0,0 +1,22 @@
+# AUTOGENERATED FILE
+AT_FDCWD = 18446744073709551516
+O_RDWR = 2
+V4L2_BUF_TYPE_VIDEO_CAPTURE = 1
+V4L2_BUF_TYPE_VIDEO_OUTPUT = 2
+VIDIOC_CREATE_BUFS = 3238024796
+VIDIOC_DQBUF = 3227014673
+VIDIOC_ENUM_FMT = 3225441794
+VIDIOC_ENUM_FRAMESIZES = 3224131146
+VIDIOC_EXPBUF = 3225441808
+VIDIOC_G_FMT = 3234878980
+VIDIOC_PREPARE_BUF = 3227014749
+VIDIOC_QBUF = 3227014671
+VIDIOC_QUERYBUF = 3227014665
+VIDIOC_QUERYCAP = 2154321408
+VIDIOC_REQBUFS = 3222558216
+VIDIOC_STREAMON = 1074026002
+VIDIOC_S_CTRL = 3221771804
+VIDIOC_S_FMT = 3234878981
+VIDIOC_TRY_FMT = 3234879040
+__NR_ioctl = 29
+__NR_openat = 56
diff --git a/sys/linux/sys.txt b/sys/linux/sys.txt
index 93ae625dc..f0508ff6e 100644
--- a/sys/linux/sys.txt
+++ b/sys/linux/sys.txt
@@ -508,7 +508,7 @@ syz_open_dev$vcsu(dev ptr[in, string["/dev/vcsu#"]], id intptr, flags flags[open
syz_open_dev$ircomm(dev ptr[in, string["/dev/ircomm#"]], id intptr, flags flags[open_flags]) fd
syz_open_dev$audion(dev ptr[in, string["/dev/audio#"]], id intptr, flags flags[open_flags]) fd
syz_open_dev$sndhw(dev ptr[in, string["/dev/snd/hwC#D#"]], id intptr, flags flags[open_flags]) fd
-syz_open_dev$media(dev ptr[in, string["/dev/media#"]], id intptr, flags flags[open_flags]) fd
+syz_open_dev$media(dev ptr[in, string["/dev/media#"]], id intptr, flags flags[open_flags]) fd_media
openat$null(fd const[AT_FDCWD], file ptr[in, string["/dev/null"]], flags flags[open_flags], mode const[0]) fd
openat$zero(fd const[AT_FDCWD], file ptr[in, string["/dev/zero"]], flags flags[open_flags], mode const[0]) fd