aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-06-11 10:02:51 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-06-11 12:12:01 +0300
commitdeb0e69e1028ba3152631c3f1d2fac98c12e33a5 (patch)
tree376f668a931b30657534770b00405c23588e8839
parent9cff2eb96ab1d23a15740ee9e0161078b8fd01f1 (diff)
executor: always use errors=continue when mounting ext2/3/4
For ext2/3/4 we have to have errors=continue because the image can contain errors=panic flag and can legally crash kernel. Fixes #599
-rw-r--r--executor/common_linux.h26
-rw-r--r--executor/syscalls_linux.h10
-rw-r--r--pkg/csource/linux_common.go21
-rw-r--r--sys/linux/filesystem.txt9
-rw-r--r--sys/linux/gen/386.go16
-rw-r--r--sys/linux/gen/amd64.go16
-rw-r--r--sys/linux/gen/arm.go16
-rw-r--r--sys/linux/gen/arm64.go16
-rw-r--r--sys/linux/gen/ppc64le.go16
9 files changed, 53 insertions, 93 deletions
diff --git a/executor/common_linux.h b/executor/common_linux.h
index ae83e5d46..fe7458d3a 100644
--- a/executor/common_linux.h
+++ b/executor/common_linux.h
@@ -953,9 +953,9 @@ error:
// size len[data, intptr]
// offset intptr
//}
-static uintptr_t syz_mount_image(uintptr_t fs, uintptr_t dir, uintptr_t size, uintptr_t nsegs, uintptr_t segments, uintptr_t flags, uintptr_t opts)
+static uintptr_t syz_mount_image(uintptr_t fsarg, uintptr_t dir, uintptr_t size, uintptr_t nsegs, uintptr_t segments, uintptr_t flags, uintptr_t optsarg)
{
- char loopname[64];
+ char loopname[64], fs[32], opts[256];
int loopfd, err = 0, res = -1;
uintptr_t i;
// Strictly saying we ought to do a nonfailing copyout of segments into a local var.
@@ -1010,12 +1010,28 @@ static uintptr_t syz_mount_image(uintptr_t fs, uintptr_t dir, uintptr_t size, ui
}
}
mkdir((char*)dir, 0777);
- NONFAILING(if (strcmp((char*)fs, "iso9660") == 0) flags |= MS_RDONLY);
- debug("syz_mount_image: size=%llu segs=%llu loop='%s' dir='%s' fs='%s' opts='%s'\n", (uint64)size, (uint64)nsegs, loopname, (char*)dir, (char*)fs, (char*)opts);
+ memset(fs, 0, sizeof(fs));
+ NONFAILING(strncpy(fs, (char*)fsarg, sizeof(fs) - 1));
+ memset(opts, 0, sizeof(opts));
+ // Leave some space for the additional options we append below.
+ NONFAILING(strncpy(opts, (char*)optsarg, sizeof(opts) - 32));
+ if (strcmp(fs, "iso9660") == 0) {
+ flags |= MS_RDONLY;
+ } else if (strncmp(fs, "ext", 3) == 0) {
+ // For ext2/3/4 we have to have errors=continue because the image
+ // can contain errors=panic flag and can legally crash kernel.
+ if (strstr(opts, "errors=panic") || strstr(opts, "errors=remount-ro") == 0)
+ strcat(opts, ",errors=continue");
+ } else if (strcmp(fs, "xfs") == 0) {
+ // For xfs we need nouuid because xfs has a global uuids table
+ // and if two parallel executors mounts fs with the same uuid, second mount fails.
+ strcat(opts, ",nouuid");
+ }
+ debug("syz_mount_image: size=%llu segs=%llu loop='%s' dir='%s' fs='%s' flags=%llu opts='%s'\n", (uint64)size, (uint64)nsegs, loopname, (char*)dir, fs, (uint64)flags, opts);
#if defined(SYZ_EXECUTOR)
cover_reset(0);
#endif
- if (mount(loopname, (char*)dir, (char*)fs, flags, (char*)opts)) {
+ if (mount(loopname, (char*)dir, fs, flags, opts)) {
err = errno;
goto error_clear_loop;
}
diff --git a/executor/syscalls_linux.h b/executor/syscalls_linux.h
index ec63fee02..bf11f6440 100644
--- a/executor/syscalls_linux.h
+++ b/executor/syscalls_linux.h
@@ -2,7 +2,7 @@
#if defined(__i386__) || 0
#define GOARCH "386"
-#define SYZ_REVISION "eda3de1125f0e93ef7b53a4612abbf97269305da"
+#define SYZ_REVISION "955b3b5300af8efd38b4f547a3f09ad5fe151dbb"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -1979,7 +1979,7 @@ const call_t syscalls[] = {
#if defined(__x86_64__) || 0
#define GOARCH "amd64"
-#define SYZ_REVISION "272b01a3b16d0c410493224a23f0e9513c21aad5"
+#define SYZ_REVISION "7097498c6946c1eb9722af2ad0538f54e559ac58"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -4008,7 +4008,7 @@ const call_t syscalls[] = {
#if defined(__arm__) || 0
#define GOARCH "arm"
-#define SYZ_REVISION "b13a1e650be47cd4a9cc00ddb999fdfd4382e3fa"
+#define SYZ_REVISION "6b6722dfc791e76f8e5ea43bb5ed38f3cabaa311"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -5993,7 +5993,7 @@ const call_t syscalls[] = {
#if defined(__aarch64__) || 0
#define GOARCH "arm64"
-#define SYZ_REVISION "8f35ff6320416fc8d2dd77a773e6331b63cb6c8e"
+#define SYZ_REVISION "c62a27e289c952463593743f46ab30695095ad93"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
@@ -7951,7 +7951,7 @@ const call_t syscalls[] = {
#if defined(__ppc64__) || defined(__PPC64__) || defined(__powerpc64__) || 0
#define GOARCH "ppc64le"
-#define SYZ_REVISION "e0d23caf525ff9f06001b9586ae733b13ba454da"
+#define SYZ_REVISION "4d1d8966c4e9be19a8def1df7840f085c1e49434"
#define SYZ_PAGE_SIZE 4096
#define SYZ_NUM_PAGES 4096
#define SYZ_DATA_OFFSET 536870912
diff --git a/pkg/csource/linux_common.go b/pkg/csource/linux_common.go
index 1aa454f9e..2ceb0b9d4 100644
--- a/pkg/csource/linux_common.go
+++ b/pkg/csource/linux_common.go
@@ -1054,9 +1054,9 @@ error:
#endif
#if defined(SYZ_EXECUTOR) || defined(__NR_syz_mount_image)
-static uintptr_t syz_mount_image(uintptr_t fs, uintptr_t dir, uintptr_t size, uintptr_t nsegs, uintptr_t segments, uintptr_t flags, uintptr_t opts)
+static uintptr_t syz_mount_image(uintptr_t fsarg, uintptr_t dir, uintptr_t size, uintptr_t nsegs, uintptr_t segments, uintptr_t flags, uintptr_t optsarg)
{
- char loopname[64];
+ char loopname[64], fs[32], opts[256];
int loopfd, err = 0, res = -1;
uintptr_t i;
struct fs_image_segment* segs = (struct fs_image_segment*)segments;
@@ -1107,12 +1107,23 @@ static uintptr_t syz_mount_image(uintptr_t fs, uintptr_t dir, uintptr_t size, ui
}
}
mkdir((char*)dir, 0777);
- NONFAILING(if (strcmp((char*)fs, "iso9660") == 0) flags |= MS_RDONLY);
- debug("syz_mount_image: size=%llu segs=%llu loop='%s' dir='%s' fs='%s' opts='%s'\n", (uint64)size, (uint64)nsegs, loopname, (char*)dir, (char*)fs, (char*)opts);
+ memset(fs, 0, sizeof(fs));
+ NONFAILING(strncpy(fs, (char*)fsarg, sizeof(fs) - 1));
+ memset(opts, 0, sizeof(opts));
+ NONFAILING(strncpy(opts, (char*)optsarg, sizeof(opts) - 32));
+ if (strcmp(fs, "iso9660") == 0) {
+ flags |= MS_RDONLY;
+ } else if (strncmp(fs, "ext", 3) == 0) {
+ if (strstr(opts, "errors=panic") || strstr(opts, "errors=remount-ro") == 0)
+ strcat(opts, ",errors=continue");
+ } else if (strcmp(fs, "xfs") == 0) {
+ strcat(opts, ",nouuid");
+ }
+ debug("syz_mount_image: size=%llu segs=%llu loop='%s' dir='%s' fs='%s' flags=%llu opts='%s'\n", (uint64)size, (uint64)nsegs, loopname, (char*)dir, fs, (uint64)flags, opts);
#if defined(SYZ_EXECUTOR)
cover_reset(0);
#endif
- if (mount(loopname, (char*)dir, (char*)fs, flags, (char*)opts)) {
+ if (mount(loopname, (char*)dir, fs, flags, opts)) {
err = errno;
goto error_clear_loop;
}
diff --git a/sys/linux/filesystem.txt b/sys/linux/filesystem.txt
index bbd6a0769..c9460adf5 100644
--- a/sys/linux/filesystem.txt
+++ b/sys/linux/filesystem.txt
@@ -16,7 +16,7 @@ syz_mount_image$msdos(fs ptr[in, string["msdos"]], dir ptr[in, filename], size i
syz_mount_image$bfs(fs ptr[in, string["bfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts const[0])
-syz_mount_image$xfs(fs ptr[in, string["xfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, xfs_full_options])
+syz_mount_image$xfs(fs ptr[in, string["xfs"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts ptr[in, xfs_options])
syz_mount_image$minix(fs ptr[in, string["minix"]], dir ptr[in, filename], size intptr, nsegs len[segments], segments ptr[in, array[fs_image_segment]], flags flags[mount_flags], opts const[0])
@@ -113,13 +113,6 @@ vfat_options [
codepage fs_opt_cp_num["codepage"]
] [varlen]
-xfs_full_options {
-# We always set nouuid because xfs has a global table uuids and if two parallel
-# executors mounts fs with the same uuid, second mount fails.
- nouuid stringnoz["nouuid,"]
- options fs_options[xfs_options]
-}
-
xfs_options [
wsync stringnoz["wsync"]
noalign stringnoz["noalign"]
diff --git a/sys/linux/gen/386.go b/sys/linux/gen/386.go
index 8a2c4c410..e32d29b33 100644
--- a/sys/linux/gen/386.go
+++ b/sys/linux/gen/386.go
@@ -3897,10 +3897,6 @@ var structDescs_386 = []*KeyedStruct{
&UnionType{Key: StructKey{Name: "vfat_options"}, FldName: "elem"},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
}}},
- {Key: StructKey{Name: "fs_opt_elem[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_opt_elem[xfs_options]", IsVarlen: true}, Fields: []Type{
- &UnionType{Key: StructKey{Name: "xfs_options"}, FldName: "elem"},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
- }}},
{Key: StructKey{Name: "fs_options[btrfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[btrfs_options]", IsVarlen: true}, Fields: []Type{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[btrfs_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
@@ -3945,10 +3941,6 @@ var structDescs_386 = []*KeyedStruct{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[vfat_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
}}},
- {Key: StructKey{Name: "fs_options[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[xfs_options]", IsVarlen: true}, Fields: []Type{
- &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[xfs_options]"}}},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
- }}},
{Key: StructKey{Name: "fsxattr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fsxattr", TypeSize: 32}, Fields: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_xflags", TypeSize: 4}}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_extsize", TypeSize: 4}}},
@@ -17949,10 +17941,6 @@ var structDescs_386 = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "lbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "rbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
}}},
- {Key: StructKey{Name: "xfs_full_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_full_options", IsVarlen: true}, Fields: []Type{
- &BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "nouuid", TypeSize: 7}, Kind: 2, Values: []string{"nouuid,"}, NoZ: true},
- &StructType{Key: StructKey{Name: "fs_options[xfs_options]"}, FldName: "options"},
- }}},
{Key: StructKey{Name: "xfs_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_options", IsVarlen: true}, Fields: []Type{
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "wsync", TypeSize: 5}, Kind: 2, Values: []string{"wsync"}, NoZ: true},
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "noalign", TypeSize: 7}, Kind: 2, Values: []string{"noalign"}, NoZ: true},
@@ -30158,7 +30146,7 @@ var syscalls_386 = []*Syscall{
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "nsegs", TypeSize: 4}}, Buf: "segments"},
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "segments", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_image_segment"}}}},
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mount_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{4096, 128, 64, 8192, 1024, 4, 2048, 8, 2, 1, 2097152, 32, 32768, 16777216, 16, 16384, 65536, 131072, 262144, 524288, 1048576, 8388608, 33554432}},
- &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "xfs_full_options"}}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 4}, Type: &UnionType{Key: StructKey{Name: "xfs_options"}}},
}},
{Name: "syz_open_dev$CDROM_DEV_LINK", CallName: "syz_open_dev", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "dev", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "string", TypeSize: 11}, Kind: 2, Values: []string{"/dev/cdrom\x00"}}},
@@ -36670,4 +36658,4 @@ var consts_386 = []ConstValue{
{Name: "bpf_insn_load_imm_dw", Value: 24},
}
-const revision_386 = "eda3de1125f0e93ef7b53a4612abbf97269305da"
+const revision_386 = "955b3b5300af8efd38b4f547a3f09ad5fe151dbb"
diff --git a/sys/linux/gen/amd64.go b/sys/linux/gen/amd64.go
index 3591335f5..319ff806a 100644
--- a/sys/linux/gen/amd64.go
+++ b/sys/linux/gen/amd64.go
@@ -3981,10 +3981,6 @@ var structDescs_amd64 = []*KeyedStruct{
&UnionType{Key: StructKey{Name: "vfat_options"}, FldName: "elem"},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
}}},
- {Key: StructKey{Name: "fs_opt_elem[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_opt_elem[xfs_options]", IsVarlen: true}, Fields: []Type{
- &UnionType{Key: StructKey{Name: "xfs_options"}, FldName: "elem"},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
- }}},
{Key: StructKey{Name: "fs_options[btrfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[btrfs_options]", IsVarlen: true}, Fields: []Type{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[btrfs_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
@@ -4029,10 +4025,6 @@ var structDescs_amd64 = []*KeyedStruct{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[vfat_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
}}},
- {Key: StructKey{Name: "fs_options[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[xfs_options]", IsVarlen: true}, Fields: []Type{
- &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[xfs_options]"}}},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
- }}},
{Key: StructKey{Name: "fsxattr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fsxattr", TypeSize: 32}, Fields: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_xflags", TypeSize: 4}}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_extsize", TypeSize: 4}}},
@@ -18273,10 +18265,6 @@ var structDescs_amd64 = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "lbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "rbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
}}},
- {Key: StructKey{Name: "xfs_full_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_full_options", IsVarlen: true}, Fields: []Type{
- &BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "nouuid", TypeSize: 7}, Kind: 2, Values: []string{"nouuid,"}, NoZ: true},
- &StructType{Key: StructKey{Name: "fs_options[xfs_options]"}, FldName: "options"},
- }}},
{Key: StructKey{Name: "xfs_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_options", IsVarlen: true}, Fields: []Type{
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "wsync", TypeSize: 5}, Kind: 2, Values: []string{"wsync"}, NoZ: true},
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "noalign", TypeSize: 7}, Kind: 2, Values: []string{"noalign"}, NoZ: true},
@@ -30819,7 +30807,7 @@ var syscalls_amd64 = []*Syscall{
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "nsegs", TypeSize: 8}}, Buf: "segments"},
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "segments", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_image_segment"}}}},
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mount_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{4096, 128, 64, 8192, 1024, 4, 2048, 8, 2, 1, 2097152, 32, 32768, 16777216, 16, 16384, 65536, 131072, 262144, 524288, 1048576, 8388608, 33554432}},
- &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "xfs_full_options"}}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 8}, Type: &UnionType{Key: StructKey{Name: "xfs_options"}}},
}},
{Name: "syz_open_dev$CDROM_DEV_LINK", CallName: "syz_open_dev", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "dev", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "string", TypeSize: 11}, Kind: 2, Values: []string{"/dev/cdrom\x00"}}},
@@ -37356,4 +37344,4 @@ var consts_amd64 = []ConstValue{
{Name: "bpf_insn_load_imm_dw", Value: 24},
}
-const revision_amd64 = "272b01a3b16d0c410493224a23f0e9513c21aad5"
+const revision_amd64 = "7097498c6946c1eb9722af2ad0538f54e559ac58"
diff --git a/sys/linux/gen/arm.go b/sys/linux/gen/arm.go
index 9d0d7695f..d52ce7201 100644
--- a/sys/linux/gen/arm.go
+++ b/sys/linux/gen/arm.go
@@ -3902,10 +3902,6 @@ var structDescs_arm = []*KeyedStruct{
&UnionType{Key: StructKey{Name: "vfat_options"}, FldName: "elem"},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
}}},
- {Key: StructKey{Name: "fs_opt_elem[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_opt_elem[xfs_options]", IsVarlen: true}, Fields: []Type{
- &UnionType{Key: StructKey{Name: "xfs_options"}, FldName: "elem"},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
- }}},
{Key: StructKey{Name: "fs_options[btrfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[btrfs_options]", IsVarlen: true}, Fields: []Type{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[btrfs_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
@@ -3950,10 +3946,6 @@ var structDescs_arm = []*KeyedStruct{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[vfat_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
}}},
- {Key: StructKey{Name: "fs_options[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[xfs_options]", IsVarlen: true}, Fields: []Type{
- &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[xfs_options]"}}},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
- }}},
{Key: StructKey{Name: "fsxattr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fsxattr", TypeSize: 32}, Fields: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_xflags", TypeSize: 4}}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_extsize", TypeSize: 4}}},
@@ -17802,10 +17794,6 @@ var structDescs_arm = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "lbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "rbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
}}},
- {Key: StructKey{Name: "xfs_full_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_full_options", IsVarlen: true}, Fields: []Type{
- &BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "nouuid", TypeSize: 7}, Kind: 2, Values: []string{"nouuid,"}, NoZ: true},
- &StructType{Key: StructKey{Name: "fs_options[xfs_options]"}, FldName: "options"},
- }}},
{Key: StructKey{Name: "xfs_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_options", IsVarlen: true}, Fields: []Type{
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "wsync", TypeSize: 5}, Kind: 2, Values: []string{"wsync"}, NoZ: true},
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "noalign", TypeSize: 7}, Kind: 2, Values: []string{"noalign"}, NoZ: true},
@@ -30073,7 +30061,7 @@ var syscalls_arm = []*Syscall{
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "nsegs", TypeSize: 4}}, Buf: "segments"},
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "segments", TypeSize: 4}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_image_segment"}}}},
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mount_flags", FldName: "flags", TypeSize: 4}}, Vals: []uint64{4096, 128, 64, 8192, 1024, 4, 2048, 8, 2, 1, 2097152, 32, 32768, 16777216, 16, 16384, 65536, 131072, 262144, 524288, 1048576, 8388608, 33554432}},
- &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 4}, Type: &StructType{Key: StructKey{Name: "xfs_full_options"}}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 4}, Type: &UnionType{Key: StructKey{Name: "xfs_options"}}},
}},
{Name: "syz_open_dev$CDROM_DEV_LINK", CallName: "syz_open_dev", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "dev", TypeSize: 4}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "string", TypeSize: 11}, Kind: 2, Values: []string{"/dev/cdrom\x00"}}},
@@ -36528,4 +36516,4 @@ var consts_arm = []ConstValue{
{Name: "bpf_insn_load_imm_dw", Value: 24},
}
-const revision_arm = "b13a1e650be47cd4a9cc00ddb999fdfd4382e3fa"
+const revision_arm = "6b6722dfc791e76f8e5ea43bb5ed38f3cabaa311"
diff --git a/sys/linux/gen/arm64.go b/sys/linux/gen/arm64.go
index 2ffd27429..aaa6b3896 100644
--- a/sys/linux/gen/arm64.go
+++ b/sys/linux/gen/arm64.go
@@ -3981,10 +3981,6 @@ var structDescs_arm64 = []*KeyedStruct{
&UnionType{Key: StructKey{Name: "vfat_options"}, FldName: "elem"},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
}}},
- {Key: StructKey{Name: "fs_opt_elem[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_opt_elem[xfs_options]", IsVarlen: true}, Fields: []Type{
- &UnionType{Key: StructKey{Name: "xfs_options"}, FldName: "elem"},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
- }}},
{Key: StructKey{Name: "fs_options[btrfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[btrfs_options]", IsVarlen: true}, Fields: []Type{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[btrfs_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
@@ -4029,10 +4025,6 @@ var structDescs_arm64 = []*KeyedStruct{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[vfat_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
}}},
- {Key: StructKey{Name: "fs_options[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[xfs_options]", IsVarlen: true}, Fields: []Type{
- &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[xfs_options]"}}},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
- }}},
{Key: StructKey{Name: "fsxattr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fsxattr", TypeSize: 32}, Fields: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_xflags", TypeSize: 4}}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_extsize", TypeSize: 4}}},
@@ -18053,10 +18045,6 @@ var structDescs_arm64 = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "lbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "rbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
}}},
- {Key: StructKey{Name: "xfs_full_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_full_options", IsVarlen: true}, Fields: []Type{
- &BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "nouuid", TypeSize: 7}, Kind: 2, Values: []string{"nouuid,"}, NoZ: true},
- &StructType{Key: StructKey{Name: "fs_options[xfs_options]"}, FldName: "options"},
- }}},
{Key: StructKey{Name: "xfs_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_options", IsVarlen: true}, Fields: []Type{
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "wsync", TypeSize: 5}, Kind: 2, Values: []string{"wsync"}, NoZ: true},
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "noalign", TypeSize: 7}, Kind: 2, Values: []string{"noalign"}, NoZ: true},
@@ -30310,7 +30298,7 @@ var syscalls_arm64 = []*Syscall{
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "nsegs", TypeSize: 8}}, Buf: "segments"},
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "segments", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_image_segment"}}}},
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mount_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{4096, 128, 64, 8192, 1024, 4, 2048, 8, 2, 1, 2097152, 32, 32768, 16777216, 16, 16384, 65536, 131072, 262144, 524288, 1048576, 8388608, 33554432}},
- &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "xfs_full_options"}}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 8}, Type: &UnionType{Key: StructKey{Name: "xfs_options"}}},
}},
{Name: "syz_open_dev$CDROM_DEV_LINK", CallName: "syz_open_dev", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "dev", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "string", TypeSize: 11}, Kind: 2, Values: []string{"/dev/cdrom\x00"}}},
@@ -36742,4 +36730,4 @@ var consts_arm64 = []ConstValue{
{Name: "bpf_insn_load_imm_dw", Value: 24},
}
-const revision_arm64 = "8f35ff6320416fc8d2dd77a773e6331b63cb6c8e"
+const revision_arm64 = "c62a27e289c952463593743f46ab30695095ad93"
diff --git a/sys/linux/gen/ppc64le.go b/sys/linux/gen/ppc64le.go
index 3b706035e..c3dab6c60 100644
--- a/sys/linux/gen/ppc64le.go
+++ b/sys/linux/gen/ppc64le.go
@@ -3972,10 +3972,6 @@ var structDescs_ppc64le = []*KeyedStruct{
&UnionType{Key: StructKey{Name: "vfat_options"}, FldName: "elem"},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
}}},
- {Key: StructKey{Name: "fs_opt_elem[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_opt_elem[xfs_options]", IsVarlen: true}, Fields: []Type{
- &UnionType{Key: StructKey{Name: "xfs_options"}, FldName: "elem"},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "comma", TypeSize: 1}}, Val: 44},
- }}},
{Key: StructKey{Name: "fs_options[btrfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[btrfs_options]", IsVarlen: true}, Fields: []Type{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[btrfs_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
@@ -4020,10 +4016,6 @@ var structDescs_ppc64le = []*KeyedStruct{
&ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[vfat_options]"}}},
&ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
}}},
- {Key: StructKey{Name: "fs_options[xfs_options]"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fs_options[xfs_options]", IsVarlen: true}, Fields: []Type{
- &ArrayType{TypeCommon: TypeCommon{TypeName: "array", FldName: "elems", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_opt_elem[xfs_options]"}}},
- &ConstType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "const", FldName: "null", TypeSize: 1}}},
- }}},
{Key: StructKey{Name: "fsxattr"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "fsxattr", TypeSize: 32}, Fields: []Type{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_xflags", TypeSize: 4}}},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int32", FldName: "fsx_extsize", TypeSize: 4}}},
@@ -17106,10 +17098,6 @@ var structDescs_ppc64le = []*KeyedStruct{
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "lbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
&IntType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "int8", FldName: "rbits", TypeSize: 1}}, Kind: 2, RangeEnd: 128},
}}},
- {Key: StructKey{Name: "xfs_full_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_full_options", IsVarlen: true}, Fields: []Type{
- &BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "nouuid", TypeSize: 7}, Kind: 2, Values: []string{"nouuid,"}, NoZ: true},
- &StructType{Key: StructKey{Name: "fs_options[xfs_options]"}, FldName: "options"},
- }}},
{Key: StructKey{Name: "xfs_options"}, Desc: &StructDesc{TypeCommon: TypeCommon{TypeName: "xfs_options", IsVarlen: true}, Fields: []Type{
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "wsync", TypeSize: 5}, Kind: 2, Values: []string{"wsync"}, NoZ: true},
&BufferType{TypeCommon: TypeCommon{TypeName: "stringnoz", FldName: "noalign", TypeSize: 7}, Kind: 2, Values: []string{"noalign"}, NoZ: true},
@@ -28728,7 +28716,7 @@ var syscalls_ppc64le = []*Syscall{
&LenType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "len", FldName: "nsegs", TypeSize: 8}}, Buf: "segments"},
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "segments", TypeSize: 8}, Type: &ArrayType{TypeCommon: TypeCommon{TypeName: "array", IsVarlen: true}, Type: &StructType{Key: StructKey{Name: "fs_image_segment"}}}},
&FlagsType{IntTypeCommon: IntTypeCommon{TypeCommon: TypeCommon{TypeName: "mount_flags", FldName: "flags", TypeSize: 8}}, Vals: []uint64{4096, 128, 64, 8192, 1024, 4, 2048, 8, 2, 1, 2097152, 32, 32768, 16777216, 16, 16384, 65536, 131072, 262144, 524288, 1048576, 8388608, 33554432}},
- &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 8}, Type: &StructType{Key: StructKey{Name: "xfs_full_options"}}},
+ &PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "opts", TypeSize: 8}, Type: &UnionType{Key: StructKey{Name: "xfs_options"}}},
}},
{Name: "syz_open_dev$CDROM_DEV_LINK", CallName: "syz_open_dev", Args: []Type{
&PtrType{TypeCommon: TypeCommon{TypeName: "ptr", FldName: "dev", TypeSize: 8}, Type: &BufferType{TypeCommon: TypeCommon{TypeName: "string", TypeSize: 11}, Kind: 2, Values: []string{"/dev/cdrom\x00"}}},
@@ -34143,4 +34131,4 @@ var consts_ppc64le = []ConstValue{
{Name: "bpf_insn_load_imm_dw", Value: 24},
}
-const revision_ppc64le = "e0d23caf525ff9f06001b9586ae733b13ba454da"
+const revision_ppc64le = "4d1d8966c4e9be19a8def1df7840f085c1e49434"