diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-06-04 23:07:55 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-06-05 12:23:19 +0200 |
| commit | 2b2857bd2191458a131689502224abfe9cdd7a4a (patch) | |
| tree | 1b27643621dc8e8174302291b8dd3e093c307932 | |
| parent | 2fcb2b5c16e21d2a94741e19bbe7443d88127273 (diff) | |
.golangci.yml: enable funlen checker
Checks for too long functions (based on lines and statements).
| -rw-r--r-- | .golangci.yml | 5 | ||||
| -rw-r--r-- | dashboard/app/access_test.go | 1 | ||||
| -rw-r--r-- | dashboard/app/bisect_test.go | 1 | ||||
| -rw-r--r-- | dashboard/app/email_test.go | 1 | ||||
| -rw-r--r-- | dashboard/app/jobs_test.go | 1 | ||||
| -rw-r--r-- | pkg/bisect/bisect_test.go | 347 | ||||
| -rw-r--r-- | pkg/build/build_test.go | 155 | ||||
| -rw-r--r-- | pkg/ifuzz/decode.go | 2 | ||||
| -rw-r--r-- | pkg/ifuzz/encode.go | 2 | ||||
| -rw-r--r-- | pkg/ifuzz/gen/gen.go | 4 | ||||
| -rw-r--r-- | pkg/ifuzz/pseudo.go | 1 | ||||
| -rw-r--r-- | prog/encodingexec_test.go | 1 | ||||
| -rw-r--r-- | syz-fuzzer/fuzzer.go | 1 |
13 files changed, 272 insertions, 250 deletions
diff --git a/.golangci.yml b/.golangci.yml index 553b6ff78..8c4834bcf 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -39,6 +39,7 @@ linters: - goprintffuncname - godot - gocognit + - funlen disable: - bodyclose - depguard @@ -85,6 +86,10 @@ linters-settings: gocognit: # TODO: consider reducing this value. min-complexity: 70 + funlen: + # TODO: consider reducing these value. + lines: 200 + statements: 80 issues: exclude-use-default: false diff --git a/dashboard/app/access_test.go b/dashboard/app/access_test.go index 1de53f75f..d83178c9f 100644 --- a/dashboard/app/access_test.go +++ b/dashboard/app/access_test.go @@ -39,6 +39,7 @@ func TestAccessConfig(t *testing.T) { } // TestAccess checks that all UIs respect access levels. +// nolint: funlen func TestAccess(t *testing.T) { if testing.Short() { t.Skip() diff --git a/dashboard/app/bisect_test.go b/dashboard/app/bisect_test.go index 00fa2e948..285b41355 100644 --- a/dashboard/app/bisect_test.go +++ b/dashboard/app/bisect_test.go @@ -15,6 +15,7 @@ import ( db "google.golang.org/appengine/datastore" ) +// nolint: funlen func TestBisectCause(t *testing.T) { c := NewCtx(t) defer c.Close() diff --git a/dashboard/app/email_test.go b/dashboard/app/email_test.go index b7414369e..5504bfd08 100644 --- a/dashboard/app/email_test.go +++ b/dashboard/app/email_test.go @@ -13,6 +13,7 @@ import ( "github.com/google/syzkaller/pkg/email" ) +// nolint: funlen func TestEmailReport(t *testing.T) { c := NewCtx(t) defer c.Close() diff --git a/dashboard/app/jobs_test.go b/dashboard/app/jobs_test.go index 32fe8c517..2f6e73cf7 100644 --- a/dashboard/app/jobs_test.go +++ b/dashboard/app/jobs_test.go @@ -15,6 +15,7 @@ import ( db "google.golang.org/appengine/datastore" ) +// nolint: funlen func TestJob(t *testing.T) { c := NewCtx(t) defer c.Close() diff --git a/pkg/bisect/bisect_test.go b/pkg/bisect/bisect_test.go index 2e3184cb8..2bad2192b 100644 --- a/pkg/bisect/bisect_test.go +++ b/pkg/bisect/bisect_test.go @@ -149,184 +149,185 @@ type BisectionTest struct { culprit int } +var bisectionTests = []BisectionTest{ + // Tests that bisection returns the correct cause commit. + { + name: "cause-finds-cause", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 602, + }, + // Tests that cause bisection returns error when crash does not reproduce + // on the original commit. + { + name: "cause-does-not-repro", + startCommit: 400, + expectErr: true, + }, + // Tests that no commits are returned when crash occurs on oldest commit + // for cause bisection. + { + name: "cause-crashes-oldest", + startCommit: 905, + commitLen: 0, + expectRep: true, + culprit: 0, + oldestLatest: 400, + }, + // Tests that more than 1 commit is returned when cause bisection is inconclusive. + { + name: "cause-inconclusive", + startCommit: 802, + brokenStart: 500, + brokenEnd: 700, + commitLen: 15, + culprit: 605, + }, + // Tests that bisection returns the correct fix commit. + { + name: "fix-finds-fix", + fix: true, + startCommit: 400, + commitLen: 1, + culprit: 500, + isRelease: true, + }, + // Tests that fix bisection returns error when crash does not reproduce + // on the original commit. + { + name: "fix-does-not-repro", + fix: true, + startCommit: 905, + expectErr: true, + }, + // Tests that no commits are returned when crash occurs on HEAD + // for fix bisection. + { + name: "fix-crashes-HEAD", + fix: true, + startCommit: 400, + commitLen: 0, + expectRep: true, + culprit: 1000, + oldestLatest: 905, + }, + // Tests that more than 1 commit is returned when fix bisection is inconclusive. + { + name: "fix-inconclusive", + fix: true, + startCommit: 400, + brokenStart: 500, + brokenEnd: 600, + commitLen: 8, + culprit: 501, + }, + { + name: "cause-same-binary", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 503, + sameBinaryStart: 502, + sameBinaryEnd: 503, + noopChange: true, + }, + { + name: "cause-same-binary-off-by-one", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 503, + sameBinaryStart: 400, + sameBinaryEnd: 502, + }, + { + name: "cause-same-binary-off-by-one-2", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 503, + sameBinaryStart: 503, + sameBinaryEnd: 905, + }, + { + name: "fix-same-binary", + fix: true, + startCommit: 400, + commitLen: 1, + culprit: 503, + sameBinaryStart: 502, + sameBinaryEnd: 504, + noopChange: true, + }, + { + name: "cause-same-binary-release1", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 500, + sameBinaryStart: 405, + sameBinaryEnd: 500, + noopChange: true, + isRelease: true, + }, + { + name: "cause-same-binary-release2", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 501, + sameBinaryStart: 500, + sameBinaryEnd: 501, + noopChange: true, + }, + { + name: "cause-same-binary-release3", + startCommit: 905, + commitLen: 1, + expectRep: true, + culprit: 405, + sameBinaryStart: 404, + sameBinaryEnd: 405, + noopChange: true, + }, + { + name: "fix-same-binary-last", + fix: true, + startCommit: 400, + commitLen: 1, + culprit: 905, + sameBinaryStart: 904, + sameBinaryEnd: 905, + noopChange: true, + }, + { + name: "fix-release", + fix: true, + startCommit: 400, + commitLen: 1, + culprit: 900, + isRelease: true, + }, + { + name: "cause-not-in-previous-release-issue-1527", + startCommit: 905, + culprit: 650, + commitLen: 1, + expectRep: true, + sameBinaryStart: 500, + sameBinaryEnd: 650, + noopChange: true, + }, +} + func TestBisectionResults(t *testing.T) { t.Parallel() - tests := []BisectionTest{ - // Tests that bisection returns the correct cause commit. - { - name: "cause-finds-cause", - startCommit: 905, - commitLen: 1, - expectRep: true, - culprit: 602, - }, - // Tests that cause bisection returns error when crash does not reproduce - // on the original commit. - { - name: "cause-does-not-repro", - startCommit: 400, - expectErr: true, - }, - // Tests that no commits are returned when crash occurs on oldest commit - // for cause bisection. - { - name: "cause-crashes-oldest", - startCommit: 905, - commitLen: 0, - expectRep: true, - culprit: 0, - oldestLatest: 400, - }, - // Tests that more than 1 commit is returned when cause bisection is inconclusive. - { - name: "cause-inconclusive", - startCommit: 802, - brokenStart: 500, - brokenEnd: 700, - commitLen: 15, - culprit: 605, - }, - // Tests that bisection returns the correct fix commit. - { - name: "fix-finds-fix", - fix: true, - startCommit: 400, - commitLen: 1, - culprit: 500, - isRelease: true, - }, - // Tests that fix bisection returns error when crash does not reproduce - // on the original commit. - { - name: "fix-does-not-repro", - fix: true, - startCommit: 905, - expectErr: true, - }, - // Tests that no commits are returned when crash occurs on HEAD - // for fix bisection. - { - name: "fix-crashes-HEAD", - fix: true, - startCommit: 400, - commitLen: 0, - expectRep: true, - culprit: 1000, - oldestLatest: 905, - }, - // Tests that more than 1 commit is returned when fix bisection is inconclusive. - { - name: "fix-inconclusive", - fix: true, - startCommit: 400, - brokenStart: 500, - brokenEnd: 600, - commitLen: 8, - culprit: 501, - }, - { - name: "cause-same-binary", - startCommit: 905, - commitLen: 1, - expectRep: true, - culprit: 503, - sameBinaryStart: 502, - sameBinaryEnd: 503, - noopChange: true, - }, - { - name: "cause-same-binary-off-by-one", - startCommit: 905, - commitLen: 1, - expectRep: true, - culprit: 503, - sameBinaryStart: 400, - sameBinaryEnd: 502, - }, - { - name: "cause-same-binary-off-by-one-2", - startCommit: 905, - commitLen: 1, - expectRep: true, - culprit: 503, - sameBinaryStart: 503, - sameBinaryEnd: 905, - }, - { - name: "fix-same-binary", - fix: true, - startCommit: 400, - commitLen: 1, - culprit: 503, - sameBinaryStart: 502, - sameBinaryEnd: 504, - noopChange: true, - }, - { - name: "cause-same-binary-release1", - startCommit: 905, - commitLen: 1, - expectRep: true, - culprit: 500, - sameBinaryStart: 405, - sameBinaryEnd: 500, - noopChange: true, - isRelease: true, - }, - { - name: "cause-same-binary-release2", - startCommit: 905, - commitLen: 1, - expectRep: true, - culprit: 501, - sameBinaryStart: 500, - sameBinaryEnd: 501, - noopChange: true, - }, - { - name: "cause-same-binary-release3", - startCommit: 905, - commitLen: 1, - expectRep: true, - culprit: 405, - sameBinaryStart: 404, - sameBinaryEnd: 405, - noopChange: true, - }, - { - name: "fix-same-binary-last", - fix: true, - startCommit: 400, - commitLen: 1, - culprit: 905, - sameBinaryStart: 904, - sameBinaryEnd: 905, - noopChange: true, - }, - { - name: "fix-release", - fix: true, - startCommit: 400, - commitLen: 1, - culprit: 900, - isRelease: true, - }, - { - name: "cause-not-in-previous-release-issue-1527", - startCommit: 905, - culprit: 650, - commitLen: 1, - expectRep: true, - sameBinaryStart: 500, - sameBinaryEnd: 650, - noopChange: true, - }, - } // Creating new repos takes majority of the test time, // so we reuse them across tests. - repoCache := make(chan string, len(tests)) + repoCache := make(chan string, len(bisectionTests)) t.Run("group", func(t *testing.T) { - for _, test := range tests { + for _, test := range bisectionTests { test := test t.Run(test.name, func(t *testing.T) { t.Parallel() diff --git a/pkg/build/build_test.go b/pkg/build/build_test.go index e9987ead1..16636737c 100644 --- a/pkg/build/build_test.go +++ b/pkg/build/build_test.go @@ -37,9 +37,30 @@ func TestCompilerIdentity(t *testing.T) { } func TestExtractRootCause(t *testing.T) { - // nolint: lll - for i, test := range []struct{ e, reason, src, file string }{ - {` + for i, test := range rootCauseTests { + test := test + t.Run(fmt.Sprint(i), func(t *testing.T) { + reason, file := extractCauseInner([]byte(test.e), test.src) + if test.reason != string(reason) { + t.Errorf("expected:\n%s\ngot:\n%s", test.reason, reason) + } + if test.file != file { + t.Errorf("expected file: %q, got: %q", test.file, file) + } + }) + } +} + +type RootCauseTest struct { + e string + reason string + src string + file string +} + +// nolint: lll +var rootCauseTests = []RootCauseTest{ + {` LINK /home/dvyukov/src/linux2/tools/objtool/objtool MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/modpost.o @@ -52,11 +73,11 @@ func TestExtractRootCause(t *testing.T) { UPD include/generated/asm-offsets.h CALL scripts/checksyscalls.sh `, - "", - "", - "", - }, - {` + "", + "", + "", + }, + {` cc -g -Werror db_break.c sys/dev/kcov.c:93:6: error: use of undeclared identifier 'kcov_cold123'; did you mean 'kcov_cold'? if (kcov_cold123) @@ -67,11 +88,11 @@ int kcov_cold = 1; ^ 1 error generated. `, - "sys/dev/kcov.c:93:6: error: use of undeclared identifier 'kcov_cold123'; did you mean 'kcov_cold'?", - "", - "sys/dev/kcov.c", - }, - {` + "sys/dev/kcov.c:93:6: error: use of undeclared identifier 'kcov_cold123'; did you mean 'kcov_cold'?", + "", + "sys/dev/kcov.c", + }, + {` CC /tools/objtool/parse-options.o In file included from ./scripts/gcc-plugins/gcc-common.h:119:0, from <stdin>:1: @@ -83,11 +104,11 @@ make: *** [gcc-plugins-check] Error 1 make: *** Waiting for unfinished jobs.... UPD include/config/kernel.release `, - "/gcc-5.5.0/bin/../lib/gcc/x86_64-unknown-linux-gnu/5.5.0/plugin/include/builtins.h:23:17: fatal error: mpc.h: No such file or directory", - "", - "", - }, - {` + "/gcc-5.5.0/bin/../lib/gcc/x86_64-unknown-linux-gnu/5.5.0/plugin/include/builtins.h:23:17: fatal error: mpc.h: No such file or directory", + "", + "", + }, + {` Starting local Bazel server and connecting to it... Loading: Loading: 0 packages loaded @@ -103,13 +124,13 @@ INFO: Elapsed time: 14.914s INFO: 0 processes. FAILED: Build did NOT complete successfully (189 packages loaded) `, - `ERROR: /kernel/vdso/BUILD:13:1: no such target '@bazel_tools//tools/cpp:cc_flags': target 'cc_flags' not declared in package 'tools/cpp' defined by /syzkaller/home/.cache/bazel/_bazel_root/e1c9d86bae2b34f90e83d224bc900958/external/bazel_tools/tools/cpp/BUILD and referenced by '//vdso:vdso' + `ERROR: /kernel/vdso/BUILD:13:1: no such target '@bazel_tools//tools/cpp:cc_flags': target 'cc_flags' not declared in package 'tools/cpp' defined by /syzkaller/home/.cache/bazel/_bazel_root/e1c9d86bae2b34f90e83d224bc900958/external/bazel_tools/tools/cpp/BUILD and referenced by '//vdso:vdso' ERROR: Analysis of target '//runsc:runsc' failed; build aborted: Analysis failed FAILED: Build did NOT complete successfully (189 packages loaded)`, - "", - "", - }, - {` + "", + "", + }, + {` ld -T ld.script -X --warn-common -nopie -o bsd ${SYSTEM_HEAD} vers.o ${OBJS} ld: error: undefined symbol: __stack_smash_handler >>> referenced by bktr_card.c:0 (/kernel/sys/dev/pci/bktr/bktr_card.c:0) @@ -126,12 +147,12 @@ ld: error: undefined symbol: __stack_smash_handler ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) *** Error 1 in /kernel/sys/arch/amd64/compile/SYZKALLER (Makefile:991 'bsd': @echo ld -T ld.script -X --warn-commo...) `, - `ld: error: undefined symbol: __stack_smash_handler + `ld: error: undefined symbol: __stack_smash_handler ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)`, - "", - "", - }, - {` + "", + "", + }, + {` make: execvp: /gcc-5.5.0/bin/gcc: Permission denied scripts/kconfig/conf --silentoldconfig Kconfig arch/x86/Makefile:123: stack-protector enabled but compiler support broken @@ -161,13 +182,13 @@ make: *** [scripts] Error 2 make: *** Waiting for unfinished jobs.... HOSTLD arch/x86/tools/relocs `, - `make: execvp: /gcc-5.5.0/bin/gcc: Permission denied + `make: execvp: /gcc-5.5.0/bin/gcc: Permission denied scripts/xen-hypercalls.sh: line 7: /gcc-5.5.0/bin/gcc: Permission denied /bin/sh: 1: /gcc-5.5.0/bin/gcc: Permission denied`, - "", - "", - }, - {` + "", + "", + }, + {` ./arch/x86/include/asm/nospec-branch.h:360:1: warning: data definition has no type or storage class 360 | DECLARE_STATIC_KEY_FALSE(mds_user_clear); | ^~~~~~~~~~~~~~~~~~~~~~~~ @@ -189,10 +210,10 @@ make: *** [prepare0] Error 2 `, `./arch/x86/include/asm/nospec-branch.h:360:1: error: type defaults to 'int' in declaration of 'DECLARE_STATIC_KEY_FALSE' [-Werror=implicit-int] ./arch/x86/include/asm/nospec-branch.h:394:6: error: implicit declaration of function 'static_branch_likely' [-Werror=implicit-function-declaration] ./arch/x86/include/asm/nospec-branch.h:394:28: error: 'mds_user_clear' undeclared (first use in this function)`, - "/some/unrelated/path", - "arch/x86/include/asm/nospec-branch.h", - }, - {` + "/some/unrelated/path", + "arch/x86/include/asm/nospec-branch.h", + }, + {` CC fs/notify/group.o CC lib/zlib_deflate/deftree.o CC net/ipv4/devinet.o @@ -216,11 +237,11 @@ make[1]: *** Waiting for unfinished jobs.... CC arch/x86/kernel/apic/ipi.o CC sound/hda/hdac_controller.o `, - "kernel/rcu/tasks.h:1070:37: error: 'rcu_tasks_rude' undeclared (first use in this function); did you mean 'rcu_tasks_qs'?", - "", - "kernel/rcu/tasks.h", - }, - {` + "kernel/rcu/tasks.h:1070:37: error: 'rcu_tasks_rude' undeclared (first use in this function); did you mean 'rcu_tasks_qs'?", + "", + "kernel/rcu/tasks.h", + }, + {` CC arch/x86/boot/compressed/kaslr.o AS arch/x86/boot/compressed/mem_encrypt.o CC arch/x86/boot/compressed/kaslr_64.o @@ -312,12 +333,12 @@ make[1]: *** [arch/x86/boot/compressed/vmlinux] Error 2 arch/x86/Makefile:284: recipe for target 'bzImage' failed make: *** [bzImage] Error 2 `, - `clang-10: error: unable to execute command: Aborted (core dumped) + `clang-10: error: unable to execute command: Aborted (core dumped) clang-10: error: clang integrated assembler command failed due to signal (use -v to see invocation)`, - "", - "", - }, - {` + "", + "", + }, + {` scripts/kconfig/conf --syncconfig Kconfig DESCEND objtool CALL scripts/atomic/check-atomics.sh @@ -340,20 +361,20 @@ arch/x86/platform/efi/efi_64.o: In function 'efi_set_virtual_address_map': Makefile:1078: recipe for target 'vmlinux' failed make: *** [vmlinux] Error 1 `, - `arch/x86/platform/efi/efi_64.c:560: undefined reference to '__efi64_thunk' + `arch/x86/platform/efi/efi_64.c:560: undefined reference to '__efi64_thunk' arch/x86/platform/efi/efi_64.c:902: undefined reference to 'efi_uv1_memmap_phys_prolog' arch/x86/platform/efi/efi_64.c:921: undefined reference to 'efi_uv1_memmap_phys_epilog'`, - "/syzkaller/managers/upstream-linux-next-kasan-gce-root/kernel", - "arch/x86/platform/efi/efi_64.c", - }, - {` + "/syzkaller/managers/upstream-linux-next-kasan-gce-root/kernel", + "arch/x86/platform/efi/efi_64.c", + }, + {` /syzkaller/managers/upstream-linux-next-kasan-gce-root/kernel/arch/x86/platform/efi/efi_64.c:560: undefined reference to '__efi64_thunk' `, - `arch/x86/platform/efi/efi_64.c:560: undefined reference to '__efi64_thunk'`, - "/syzkaller/managers/upstream-linux-next-kasan-gce-root/kernel/", - "arch/x86/platform/efi/efi_64.c", - }, - {` + `arch/x86/platform/efi/efi_64.c:560: undefined reference to '__efi64_thunk'`, + "/syzkaller/managers/upstream-linux-next-kasan-gce-root/kernel/", + "arch/x86/platform/efi/efi_64.c", + }, + {` CC net/ipv6/ip6_output.o CC security/selinux/ss/policydb.o CC net/ipv4/route.o @@ -390,20 +411,8 @@ make[1]: *** Waiting for unfinished jobs.... CC net/netlabel/netlabel_domainhash.o CC net/netlabel/netlabel_addrlist.o `, - "./include/linux/netfilter_ipv6.h:110:9: error: implicit declaration of function 'nf_ct_frag6_gather' [-Werror=implicit-function-declaration]", - "", - "include/linux/netfilter_ipv6.h", - }, - } { - test := test - t.Run(fmt.Sprint(i), func(t *testing.T) { - reason, file := extractCauseInner([]byte(test.e), test.src) - if test.reason != string(reason) { - t.Errorf("expected:\n%s\ngot:\n%s", test.reason, reason) - } - if test.file != file { - t.Errorf("expected file: %q, got: %q", test.file, file) - } - }) - } + "./include/linux/netfilter_ipv6.h:110:9: error: implicit declaration of function 'nf_ct_frag6_gather' [-Werror=implicit-function-declaration]", + "", + "include/linux/netfilter_ipv6.h", + }, } diff --git a/pkg/ifuzz/decode.go b/pkg/ifuzz/decode.go index 327fad82e..7fecf312c 100644 --- a/pkg/ifuzz/decode.go +++ b/pkg/ifuzz/decode.go @@ -10,7 +10,7 @@ import ( // Decode decodes instruction length for the given mode. // It can have falsely decode incorrect instructions, // but should not fail to decode correct instructions. -// nolint: gocyclo, nestif, gocognit +// nolint: gocyclo, nestif, gocognit, funlen func Decode(mode int, text []byte) (int, error) { if len(text) == 0 { return 0, fmt.Errorf("zero-length instruction") diff --git a/pkg/ifuzz/encode.go b/pkg/ifuzz/encode.go index dd884bb61..5d27a29fd 100644 --- a/pkg/ifuzz/encode.go +++ b/pkg/ifuzz/encode.go @@ -11,7 +11,7 @@ import ( "math/rand" ) -// nolint: gocyclo, nestif, gocognit +// nolint: gocyclo, nestif, gocognit, funlen func (insn *Insn) Encode(cfg *Config, r *rand.Rand) []byte { if !insn.isCompatible(cfg) { panic("instruction is not suitable for this mode") diff --git a/pkg/ifuzz/gen/gen.go b/pkg/ifuzz/gen/gen.go index 72bc1fa0a..224010a1c 100644 --- a/pkg/ifuzz/gen/gen.go +++ b/pkg/ifuzz/gen/gen.go @@ -17,7 +17,7 @@ import ( "github.com/google/syzkaller/pkg/serializer" ) -// nolint: gocyclo, gocognit +// nolint: gocyclo, gocognit, funlen func main() { if len(os.Args) != 2 { failf("usage: gen instructions.txt") @@ -180,7 +180,7 @@ func (err errSkip) Error() string { return string(err) } -// nolint: gocyclo, gocognit +// nolint: gocyclo, gocognit, funlen func parsePattern(insn *ifuzz.Insn, vals []string) error { if insn.Opcode != nil { return fmt.Errorf("PATTERN is already parsed for the instruction") diff --git a/pkg/ifuzz/pseudo.go b/pkg/ifuzz/pseudo.go index 1bb171665..ebfa09723 100644 --- a/pkg/ifuzz/pseudo.go +++ b/pkg/ifuzz/pseudo.go @@ -7,6 +7,7 @@ import ( "math/rand" ) +// nolint: funlen func initPseudo() { Insns = append(Insns, &Insn{ Name: "PSEUDO_RDMSR", diff --git a/prog/encodingexec_test.go b/prog/encodingexec_test.go index 7114ab30f..141cf5dda 100644 --- a/prog/encodingexec_test.go +++ b/prog/encodingexec_test.go @@ -28,6 +28,7 @@ func TestSerializeForExecRandom(t *testing.T) { } } +// nolint: funlen func TestSerializeForExec(t *testing.T) { target := initTargetTest(t, "test", "64") var ( diff --git a/syz-fuzzer/fuzzer.go b/syz-fuzzer/fuzzer.go index 3694190a1..b764ad139 100644 --- a/syz-fuzzer/fuzzer.go +++ b/syz-fuzzer/fuzzer.go @@ -102,6 +102,7 @@ const ( OutputFile ) +// nolint: funlen func main() { debug.SetGCPercent(50) |
