aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2017-10-17 18:08:39 +0200
committerDmitry Vyukov <dvyukov@google.com>2017-10-18 12:01:24 +0200
commit85c802e4cf59350d2c06c45d42d48271338665a1 (patch)
tree49649dd8e1bad8a9d2f1e64537c99d3cd5c6d316 /pkg
parentb69d27d17e975e775afe07919e28bbe29e8d1f03 (diff)
pkg/report: support multiple OSes
Introduce report.Reporter interface. Add an implementation per-OS. Make users be explicit about OS they are testing.
Diffstat (limited to 'pkg')
-rw-r--r--pkg/report/akaros.go52
-rw-r--r--pkg/report/freebsd.go52
-rw-r--r--pkg/report/fuchsia.go52
-rw-r--r--pkg/report/guilty.go96
-rw-r--r--pkg/report/guilty_test.go715
-rw-r--r--pkg/report/linux.go705
-rw-r--r--pkg/report/linux_test.go2173
-rw-r--r--pkg/report/report.go633
-rw-r--r--pkg/report/report_test.go1425
-rw-r--r--pkg/report/windows.go52
-rw-r--r--pkg/repro/repro.go9
11 files changed, 3137 insertions, 2827 deletions
diff --git a/pkg/report/akaros.go b/pkg/report/akaros.go
new file mode 100644
index 000000000..bdd6238eb
--- /dev/null
+++ b/pkg/report/akaros.go
@@ -0,0 +1,52 @@
+// Copyright 2017 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.
+
+package report
+
+import (
+ "regexp"
+
+ "github.com/google/syzkaller/pkg/symbolizer"
+)
+
+type akaros struct {
+ kernelSrc string
+ kernelObj string
+ symbols map[string][]symbolizer.Symbol
+ ignores []*regexp.Regexp
+}
+
+func ctorAkaros(kernelSrc, kernelObj string, symbols map[string][]symbolizer.Symbol,
+ ignores []*regexp.Regexp) (Reporter, error) {
+ ctx := &akaros{
+ kernelSrc: kernelSrc,
+ kernelObj: kernelObj,
+ symbols: symbols,
+ ignores: ignores,
+ }
+ return ctx, nil
+}
+
+func (ctx *akaros) ContainsCrash(output []byte) bool {
+ panic("not implemented")
+}
+
+func (ctx *akaros) Parse(output []byte) (desc string, text []byte, start int, end int) {
+ panic("not implemented")
+}
+
+func (ctx *akaros) Symbolize(text []byte) ([]byte, error) {
+ panic("not implemented")
+}
+
+func (ctx *akaros) ExtractConsoleOutput(output []byte) (result []byte) {
+ panic("not implemented")
+}
+
+func (ctx *akaros) ExtractGuiltyFile(report []byte) string {
+ panic("not implemented")
+}
+
+func (ctx *akaros) GetMaintainers(file string) ([]string, error) {
+ panic("not implemented")
+}
diff --git a/pkg/report/freebsd.go b/pkg/report/freebsd.go
new file mode 100644
index 000000000..153389381
--- /dev/null
+++ b/pkg/report/freebsd.go
@@ -0,0 +1,52 @@
+// Copyright 2017 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.
+
+package report
+
+import (
+ "regexp"
+
+ "github.com/google/syzkaller/pkg/symbolizer"
+)
+
+type freebsd struct {
+ kernelSrc string
+ kernelObj string
+ symbols map[string][]symbolizer.Symbol
+ ignores []*regexp.Regexp
+}
+
+func ctorFreebsd(kernelSrc, kernelObj string, symbols map[string][]symbolizer.Symbol,
+ ignores []*regexp.Regexp) (Reporter, error) {
+ ctx := &freebsd{
+ kernelSrc: kernelSrc,
+ kernelObj: kernelObj,
+ symbols: symbols,
+ ignores: ignores,
+ }
+ return ctx, nil
+}
+
+func (ctx *freebsd) ContainsCrash(output []byte) bool {
+ panic("not implemented")
+}
+
+func (ctx *freebsd) Parse(output []byte) (desc string, text []byte, start int, end int) {
+ panic("not implemented")
+}
+
+func (ctx *freebsd) Symbolize(text []byte) ([]byte, error) {
+ panic("not implemented")
+}
+
+func (ctx *freebsd) ExtractConsoleOutput(output []byte) (result []byte) {
+ panic("not implemented")
+}
+
+func (ctx *freebsd) ExtractGuiltyFile(report []byte) string {
+ panic("not implemented")
+}
+
+func (ctx *freebsd) GetMaintainers(file string) ([]string, error) {
+ panic("not implemented")
+}
diff --git a/pkg/report/fuchsia.go b/pkg/report/fuchsia.go
new file mode 100644
index 000000000..eb3f6bb3c
--- /dev/null
+++ b/pkg/report/fuchsia.go
@@ -0,0 +1,52 @@
+// Copyright 2017 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.
+
+package report
+
+import (
+ "regexp"
+
+ "github.com/google/syzkaller/pkg/symbolizer"
+)
+
+type fuchsia struct {
+ kernelSrc string
+ kernelObj string
+ symbols map[string][]symbolizer.Symbol
+ ignores []*regexp.Regexp
+}
+
+func ctorFuchsia(kernelSrc, kernelObj string, symbols map[string][]symbolizer.Symbol,
+ ignores []*regexp.Regexp) (Reporter, error) {
+ ctx := &fuchsia{
+ kernelSrc: kernelSrc,
+ kernelObj: kernelObj,
+ symbols: symbols,
+ ignores: ignores,
+ }
+ return ctx, nil
+}
+
+func (ctx *fuchsia) ContainsCrash(output []byte) bool {
+ panic("not implemented")
+}
+
+func (ctx *fuchsia) Parse(output []byte) (desc string, text []byte, start int, end int) {
+ panic("not implemented")
+}
+
+func (ctx *fuchsia) Symbolize(text []byte) ([]byte, error) {
+ panic("not implemented")
+}
+
+func (ctx *fuchsia) ExtractConsoleOutput(output []byte) (result []byte) {
+ panic("not implemented")
+}
+
+func (ctx *fuchsia) ExtractGuiltyFile(report []byte) string {
+ panic("not implemented")
+}
+
+func (ctx *fuchsia) GetMaintainers(file string) ([]string, error) {
+ panic("not implemented")
+}
diff --git a/pkg/report/guilty.go b/pkg/report/guilty.go
deleted file mode 100644
index 41dc65cbd..000000000
--- a/pkg/report/guilty.go
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2017 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.
-
-package report
-
-import (
- "bytes"
- "net/mail"
- "regexp"
- "strings"
- "time"
-
- "github.com/google/syzkaller/pkg/osutil"
-)
-
-var (
- filename = regexp.MustCompile(`[a-zA-Z0-9_\-\./]*[a-zA-Z0-9_\-]+\.(c|h):[0-9]+`)
- blacklist = []*regexp.Regexp{
- regexp.MustCompile(`.*\.h`),
- regexp.MustCompile(`^lib/.*`),
- regexp.MustCompile(`^virt/lib/.*`),
- regexp.MustCompile(`^mm/kasan/.*`),
- regexp.MustCompile(`^mm/kmsan/.*`),
- regexp.MustCompile(`^mm/percpu.*`),
- regexp.MustCompile(`^mm/vmalloc.c`),
- regexp.MustCompile(`^mm/page_alloc.c`),
- regexp.MustCompile(`^kernel/rcu/.*`),
- regexp.MustCompile(`^arch/.*/kernel/traps.c`),
- regexp.MustCompile(`^kernel/locking/*`),
- regexp.MustCompile(`^kernel/panic.c`),
- regexp.MustCompile(`^kernel/softirq.c`),
- regexp.MustCompile(`^net/core/dev.c`),
- regexp.MustCompile(`^net/core/sock.c`),
- regexp.MustCompile(`^net/core/skbuff.c`),
- }
-)
-
-func extractFiles(report []byte) []string {
- matches := filename.FindAll(report, -1)
- var files []string
- for _, match := range matches {
- files = append(files, string(bytes.Split(match, []byte{':'})[0]))
- }
- return files
-}
-
-func ExtractGuiltyFile(report []byte) string {
- files := extractFiles(report)
-nextFile:
- for _, file := range files {
- for _, re := range blacklist {
- if re.MatchString(file) {
- continue nextFile
- }
- }
- return file
- }
- return ""
-}
-
-func getMaintainersImpl(linux, file string, blame bool) ([]string, error) {
- // ./scripts/get_maintainer.pl is a Linux kernel script.
- args := []string{"--no-n", "--no-rolestats"}
- if blame {
- args = append(args, "--git-blame")
- }
- args = append(args, file)
- output, err := osutil.RunCmd(time.Minute, linux, "./scripts/get_maintainer.pl", args...)
- if err != nil {
- return nil, err
- }
- lines := strings.Split(string(output), "\n")
- var mtrs []string
- for _, line := range lines {
- addr, err := mail.ParseAddress(line)
- if err != nil {
- continue
- }
- mtrs = append(mtrs, addr.Address)
- }
- return mtrs, nil
-}
-
-func GetMaintainers(linux, file string) ([]string, error) {
- mtrs, err := getMaintainersImpl(linux, file, false)
- if err != nil {
- return nil, err
- }
- if len(mtrs) <= 1 {
- mtrs, err = getMaintainersImpl(linux, file, true)
- if err != nil {
- return nil, err
- }
- }
- return mtrs, nil
-}
diff --git a/pkg/report/guilty_test.go b/pkg/report/guilty_test.go
deleted file mode 100644
index 1138f7a6c..000000000
--- a/pkg/report/guilty_test.go
+++ /dev/null
@@ -1,715 +0,0 @@
-// Copyright 2017 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.
-
-package report
-
-import (
- "testing"
-)
-
-func TestGuilty(t *testing.T) {
- tests := map[string]string{
- `
-==================================================================
-BUG: KASAN: use-after-free in ip6_send_skb+0x2f5/0x330 net/ipv6/ip6_output.c:1748
-Read of size 8 at addr ffff88004fab1858 by task syz-executor0/30168
-
-CPU: 0 PID: 30168 Comm: syz-executor0 Not tainted 4.12.0-rc3+ #3
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
- __dump_stack lib/dump_stack.c:16 [inline]
- dump_stack+0x292/0x395 lib/dump_stack.c:52
- print_address_description+0x78/0x280 mm/kasan/report.c:252
- kasan_report_error mm/kasan/report.c:351 [inline]
- kasan_report+0x230/0x340 mm/kasan/report.c:408
- __asan_report_load8_noabort+0x19/0x20 mm/kasan/report.c:429
- ip6_send_skb+0x2f5/0x330 net/ipv6/ip6_output.c:1748
- ip6_push_pending_frames+0xb8/0xe0 net/ipv6/ip6_output.c:1763
- rawv6_push_pending_frames net/ipv6/raw.c:613 [inline]
- rawv6_sendmsg+0x2ede/0x4400 net/ipv6/raw.c:932
- inet_sendmsg+0x169/0x5c0 net/ipv4/af_inet.c:762
- sock_sendmsg_nosec net/socket.c:633 [inline]
- sock_sendmsg+0xcf/0x110 net/socket.c:643
- SYSC_sendto+0x660/0x810 net/socket.c:1696
- SyS_sendto+0x45/0x60 net/socket.c:1664
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-RIP: 0033:0x446179
-RSP: 002b:00007f1f48124c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
-RAX: ffffffffffffffda RBX: 0000000000004350 RCX: 0000000000446179
-RDX: 0000000000000873 RSI: 0000000020fd878d RDI: 0000000000000016
-RBP: 00000000ffffffff R08: 00000000204e8fe4 R09: 000000000000001c
-R10: 0000000000000840 R11: 0000000000000286 R12: 0000000000000016
-R13: 0000000000000000 R14: 00007f1f481259c0 R15: 00007f1f48125700
-`: `net/ipv6/ip6_output.c`,
- `
-DEBUG_LOCKS_WARN_ON(class_idx > MAX_LOCKDEP_KEYS)
-------------[ cut here ]------------
-WARNING: CPU: 2 PID: 24023 at kernel/locking/lockdep.c:3344 __lock_acquire+0x10e5/0x3690 kernel/locking/lockdep.c:3344
-Kernel panic - not syncing: panic_on_warn set ...
-
-CPU: 2 PID: 24023 Comm: syz-executor1 Not tainted 4.12.0-rc3+ #370
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
- __dump_stack lib/dump_stack.c:16 [inline]
- dump_stack+0x292/0x395 lib/dump_stack.c:52
- panic+0x1cb/0x3a9 kernel/panic.c:180
- __warn+0x1c4/0x1e0 kernel/panic.c:541
- report_bug+0x211/0x2d0 lib/bug.c:183
- fixup_bug arch/x86/kernel/traps.c:190 [inline]
- do_trap_no_signal arch/x86/kernel/traps.c:224 [inline]
- do_trap+0x32c/0x410 arch/x86/kernel/traps.c:273
- do_error_trap+0x15a/0x3e0 arch/x86/kernel/traps.c:310
- do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:323
- invalid_op+0x1e/0x30 arch/x86/entry/entry_64.S:844
-RIP: 0010:__lock_acquire+0x10e5/0x3690 kernel/locking/lockdep.c:3344
-RSP: 0018:ffff88005aba6100 EFLAGS: 00010086
-RAX: 0000000000000031 RBX: ffff880058995b40 RCX: 0000000000000000
-RDX: 0000000000000031 RSI: ffffffff81458577 RDI: ffffed000b574c12
-RBP: ffff88005aba6640 R08: 0000000000000001 R09: 0000000000000001
-R10: ffff8800589963a0 R11: fffffbfff0e0fc7a R12: 0000000000000000
-R13: 0000000000000010 R14: 0000000000000001 R15: 0000000000000010
- lock_acquire+0x22d/0x560 kernel/locking/lockdep.c:3855
- seqcount_lockdep_reader_access include/linux/seqlock.h:80 [inline]
- read_seqcount_begin include/linux/seqlock.h:163 [inline]
- read_seqbegin include/linux/seqlock.h:433 [inline]
- neigh_hh_output include/net/neighbour.h:456 [inline]
- neigh_output include/net/neighbour.h:477 [inline]
- ip6_finish_output2+0x109a/0x2540 net/ipv6/ip6_output.c:123
- ip6_finish_output+0x302/0x930 net/ipv6/ip6_output.c:149
- NF_HOOK_COND include/linux/netfilter.h:246 [inline]
- ip6_output+0x1c2/0x8a0 net/ipv6/ip6_output.c:163
- ip6_xmit+0xd38/0x21c0 include/net/dst.h:492
- inet6_csk_xmit+0x331/0x600 net/ipv6/inet6_connection_sock.c:139
- tcp_transmit_skb+0x1ad8/0x3460 net/ipv4/tcp_output.c:1055
- tcp_connect+0x2195/0x2f30 net/ipv4/tcp_output.c:3381
- tcp_v6_connect+0x1c0b/0x20f0 net/ipv6/tcp_ipv6.c:304
- __inet_stream_connect+0x2ee/0xf90 net/ipv4/af_inet.c:618
- inet_stream_connect+0x58/0xa0 net/ipv4/af_inet.c:682
- SYSC_connect+0x251/0x590 net/socket.c:1588
- SyS_connect+0x24/0x30 net/socket.c:1569
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-RIP: 0033:0x446179
-RSP: 002b:00007fb738f47c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002a
-RAX: ffffffffffffffda RBX: 0000000000000400 RCX: 0000000000446179
-RDX: 000000000000001c RSI: 0000000020411000 RDI: 0000000000000005
-RBP: 00000000ffffffff R08: 0000000000000000 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000286 R12: 0000000000000005
-R13: 0000000000000000 R14: 00007fb738f489c0 R15: 00007fb738f48700
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: disabled
-Rebooting in 86400 seconds..
-`: `net/ipv6/ip6_output.c`,
- `
-kasan: CONFIG_KASAN_INLINE enabled
-kasan: GPF could be caused by NULL-ptr deref or user memory access
-general protection fault: 0000 [#1] SMP KASAN
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Modules linked in:
-CPU: 2 PID: 10785 Comm: kworker/2:4 Not tainted 4.12.0-rc3+ #370
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Workqueue: events bpf_map_free_deferred
-task: ffff880061ce9700 task.stack: ffff880060b40000
-RIP: 0010:pcpu_addr_to_page mm/percpu-vm.c:358 [inline]
-RIP: 0010:pcpu_chunk_addr_search mm/percpu.c:852 [inline]
-RIP: 0010:free_percpu+0x189/0x4a0 mm/percpu.c:1264
-RSP: 0018:ffff880060b47188 EFLAGS: 00010002
-RAX: 0000000000000000 RBX: 1ffff1000c168e34 RCX: 0000000000000002
-RDX: dffffc0000000000 RSI: 000000000ca9ca67 RDI: 0000000000000010
-RBP: ffff880060b47328 R08: 0000000000000002 R09: 8a21721700000000
-R10: ffff880061ce9f38 R11: dffffc0000000000 R12: ffff88007ffee210
-R13: ffff880060b47300 R14: ffff88003ec00000 R15: ffffe8fcd0a1c608
-FS: 0000000000000000(0000) GS:ffff88006de00000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 00000000006e7680 CR3: 000000002e973000 CR4: 00000000000006e0
-Call Trace:
- htab_free_elems+0x191/0x250 kernel/bpf/hashtab.c:112
- prealloc_destroy+0x17/0x90 kernel/bpf/hashtab.c:191
- htab_map_free+0xe6/0x650 kernel/bpf/hashtab.c:1093
- bpf_map_free_deferred+0xac/0xd0 kernel/bpf/syscall.c:124
- process_one_work+0xc03/0x1bd0 kernel/workqueue.c:2097
- worker_thread+0x223/0x1860 kernel/workqueue.c:2231
- kthread+0x35e/0x430 kernel/kthread.c:231
- ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:424
-Code: 80 3c 02 00 0f 85 e0 02 00 00 49 8b 3c 24 4c 01 ff e8 ec be 06 00 48 8d 78 10 48 ba 00 00 00 00 00 fc ff df 48 89 f9 48 c1 e9 03 <80> 3c 11 00 0f 85 c2 02 00 00 4c 8b 60 10 48 b8 00 00 00 00 00
-RIP: pcpu_addr_to_page mm/percpu-vm.c:358 [inline] RSP: ffff880060b47188
-RIP: pcpu_chunk_addr_search mm/percpu.c:852 [inline] RSP: ffff880060b47188
-RIP: free_percpu+0x189/0x4a0 mm/percpu.c:1264 RSP: ffff880060b47188
----[ end trace 2faa26575ba6ca1f ]---
-Kernel panic - not syncing: Fatal exception
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: disabled
-Rebooting in 86400 seconds..
-`: `kernel/bpf/hashtab.c`,
- `
-kasan: CONFIG_KASAN_INLINE enabled
-kasan: GPF could be caused by NULL-ptr deref or user memory access
-general protection fault: 0000 [#1] SMP KASAN
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Modules linked in:
-CPU: 3 PID: 5124 Comm: kworker/3:3 Not tainted 4.12.0-rc3+ #370
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Workqueue: events bpf_map_free_deferred
-task: ffff880065321700 task.stack: ffff880065380000
-RIP: 0010:css_put include/linux/cgroup.h:354 [inline]
-RIP: 0010:cgroup_put include/linux/cgroup.h:373 [inline]
-RIP: 0010:cgroup_fd_array_put_ptr+0x88/0x370 kernel/bpf/arraymap.c:535
-RSP: 0018:ffff880065387378 EFLAGS: 00010202
-RAX: 000000002000000d RBX: 1ffff1000ca70e71 RCX: 1ffffffff0a1912c
-RDX: 0000000000000000 RSI: 1ffff1000ca643e6 RDI: 0000000100000069
-RBP: ffff880065387450 R08: ffffffff85b0b9e0 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000000 R12: 00000000fffffffd
-R13: ffff880065387428 R14: dffffc0000000000 R15: ffffffff850c8920
-FS: 0000000000000000(0000) GS:ffff88006df00000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 0000000020014000 CR3: 00000000231ae000 CR4: 00000000000006e0
-Call Trace:
- fd_array_map_delete_elem kernel/bpf/arraymap.c:374 [inline]
- bpf_fd_array_map_clear+0x144/0x260 kernel/bpf/arraymap.c:410
- cgroup_fd_array_free+0x15/0x20 kernel/bpf/arraymap.c:540
- bpf_map_free_deferred+0xac/0xd0 kernel/bpf/syscall.c:124
- process_one_work+0xc03/0x1bd0 kernel/workqueue.c:2097
- worker_thread+0x223/0x1860 kernel/workqueue.c:2231
- kthread+0x35e/0x430 kernel/kthread.c:231
- ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:424
-Code: 04 00 f2 f2 f2 c7 40 08 f2 f2 f2 f2 c7 40 0c 00 f2 f2 f2 c7 40 10 f3 f3 f3 f3 e8 a4 dc f0 ff 49 8d 7c 24 6c 48 89 f8 48 c1 e8 03 <42> 0f b6 14 30 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f
-RIP: css_put include/linux/cgroup.h:354 [inline] RSP: ffff880065387378
-RIP: cgroup_put include/linux/cgroup.h:373 [inline] RSP: ffff880065387378
-RIP: cgroup_fd_array_put_ptr+0x88/0x370 kernel/bpf/arraymap.c:535 RSP: ffff880065387378
----[ end trace 6192ca3b51b170a8 ]---
-Kernel panic - not syncing: Fatal exception
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: disabled
-Rebooting in 86400 seconds..
-`: `kernel/bpf/arraymap.c`,
- `
-------------[ cut here ]------------
-WARNING: CPU: 1 PID: 4961 at lib/refcount.c:150 refcount_inc+0x47/0x50 lib/refcount.c:150
-Kernel panic - not syncing: panic_on_warn set ...
-
-CPU: 1 PID: 4961 Comm: syz-executor1 Not tainted 4.12.0-rc2+ #77
-Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-Call Trace:
- __dump_stack lib/dump_stack.c:16 [inline]
- dump_stack+0x2ee/0x3ea lib/dump_stack.c:52
- panic+0x1fb/0x412 kernel/panic.c:180
- __warn+0x1c4/0x1e0 kernel/panic.c:541
- report_bug+0x211/0x2d0 lib/bug.c:183
- fixup_bug arch/x86/kernel/traps.c:190 [inline]
- do_trap_no_signal arch/x86/kernel/traps.c:224 [inline]
- do_trap+0x32c/0x410 arch/x86/kernel/traps.c:273
- do_error_trap+0x15a/0x3b0 arch/x86/kernel/traps.c:310
- do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:323
- invalid_op+0x1e/0x30 arch/x86/entry/entry_64.S:847
-RIP: 0010:refcount_inc+0x47/0x50 lib/refcount.c:150
-RSP: 0018:ffff8801d3d4fcc0 EFLAGS: 00010282
-RAX: 000000000000002b RBX: ffff8801c2514240 RCX: 0000000000000000
-RDX: 000000000000002b RSI: ffffc90002fb8000 RDI: ffffed003a7a9f8a
-RBP: ffff8801d3d4fcc8 R08: 1ffff1003a7a9e71 R09: 0000000000000000
-R10: dffffc0000000000 R11: 0000000000000000 R12: 1ffff1003a7a9fa0
-R13: 000000001fd29e67 R14: 000000001fd29e67 R15: ffff8801c2514240
- __key_get include/linux/key.h:254 [inline]
- key_lookup+0x1ec/0x230 security/keys/key.c:670
- lookup_user_key+0x8ba/0x11e0 security/keys/process_keys.c:680
- keyctl_keyring_link+0x24/0xc0 security/keys/keyctl.c:507
- SYSC_keyctl security/keys/keyctl.c:1661 [inline]
- SyS_keyctl+0x1af/0x290 security/keys/keyctl.c:1633
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-RIP: 0033:0x44fe99
-RSP: 002b:00007f93b93c9b58 EFLAGS: 00000212 ORIG_RAX: 00000000000000fa
-RAX: ffffffffffffffda RBX: ffffffffffffffff RCX: 000000000044fe99
-RDX: 000000001fd29e67 RSI: ffffffffffffffff RDI: 0000000000000008
-RBP: 0000000000000008 R08: 0000000000000000 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000212 R12: 00000000007180a8
-R13: 0000000000001000 R14: 0000000000000003 R15: 0000000000000000
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: 0x6000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
-Rebooting in 86400 seconds..
-`: `security/keys/key.c`,
- `
-kasan: GPF could be caused by NULL-ptr deref or user memory access
-general protection fault: 0000 [#1] SMP KASAN
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Modules linked in:
-CPU: 1 PID: 14551 Comm: syz-executor0 Not tainted 4.12.0-rc1+ #366
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-task: ffff880028ceadc0 task.stack: ffff880038460000
-RIP: 0010:__read_once_size include/linux/compiler.h:254 [inline]
-RIP: 0010:raw_seqcount_begin include/linux/seqlock.h:183 [inline]
-RIP: 0010:__d_lookup_rcu+0x27b/0xa10 fs/dcache.c:2144
-RSP: 0018:ffff880038466d18 EFLAGS: 00010a03
-RAX: 1fff6a12b169980b RBX: 1ffff1000708cdc2 RCX: ffffc90000abd000
-RDX: 00000000000001b4 RSI: ffffffff819034c6 RDI: 0000000000000a06
-RBP: ffff880038466ef8 R08: ffffffff8590ba60 R09: ffff880038466b20
-R10: 0000000000000000 R11: 0000000000000000 R12: 000000004cfffffb
-R13: fffb50958b4cc05d R14: dffffc0000000000 R15: fffb50958b4cc085
-FS: 00007f63f0717700(0000) GS:ffff88003ed00000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 000000002000fff8 CR3: 0000000027bd5000 CR4: 00000000000006e0
-Call Trace:
- lookup_fast+0x12c/0xf80 fs/namei.c:1554
- walk_component+0x129/0x13e0 fs/namei.c:1780
- lookup_last fs/namei.c:2252 [inline]
- path_lookupat+0x1d7/0xbc0 fs/namei.c:2302
- filename_lookup+0x29e/0x5b0 fs/namei.c:2336
- kern_path+0x33/0x40 fs/namei.c:2425
- bpf_obj_do_get kernel/bpf/inode.c:305 [inline]
- bpf_obj_get_user+0x11f/0xdd0 kernel/bpf/inode.c:340
- bpf_obj_get kernel/bpf/syscall.c:888 [inline]
- SYSC_bpf kernel/bpf/syscall.c:1061 [inline]
- SyS_bpf+0xdc2/0x3a80 kernel/bpf/syscall.c:997
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-RIP: 0033:0x445e89
-RSP: 002b:00007f63f0716b58 EFLAGS: 00000296 ORIG_RAX: 0000000000000141
-RAX: ffffffffffffffda RBX: 0000000000000007 RCX: 0000000000445e89
-RDX: 0000000000000010 RSI: 0000000020005ff0 RDI: 0000000000000007
-RBP: 00000000006e0370 R08: 0000000000000000 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000296 R12: 0000000000708000
-R13: 4000000000080000 R14: 0000000000000000 R15: 0000000000000000
-Code: 89 bd 18 ff ff ff 42 c6 04 33 f8 0f 84 33 04 00 00 e8 da fc ca ff 48 8b 85 b0 fe ff ff 4d 8d 6f d8 c6 00 04 4c 89 e8 48 c1 e8 03 <42> 0f b6 0c 30 4c 89 e8 83 e0 07 83 c0 03 38 c8 7c 08 84 c9 0f
-RIP: __read_once_size include/linux/compiler.h:254 [inline] RSP: ffff880038466d18
-RIP: raw_seqcount_begin include/linux/seqlock.h:183 [inline] RSP: ffff880038466d18
-RIP: __d_lookup_rcu+0x27b/0xa10 fs/dcache.c:2144 RSP: ffff880038466d18
----[ end trace cc5c09f1eb5b005a ]---
-Kernel panic - not syncing: Fatal exception
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: disabled
-Rebooting in 86400 seconds..
-`: `fs/dcache.c`,
- `
-==================================================================
-BUG: KASAN: use-after-free in ip6_dst_store include/net/ip6_fib.h:176 [inline]
-BUG: KASAN: use-after-free in tcp_v6_connect+0x1dfd/0x20f0 net/ipv6/tcp_ipv6.c:271
-Read of size 4 at addr ffff880066df126c by task syz-executor6/22754
-
-CPU: 0 PID: 22754 Comm: syz-executor6 Not tainted 4.12.0-rc1+ #366
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
- __dump_stack lib/dump_stack.c:16 [inline]
- dump_stack+0x292/0x395 lib/dump_stack.c:52
- print_address_description+0x73/0x280 mm/kasan/report.c:252
- kasan_report_error mm/kasan/report.c:351 [inline]
- kasan_report+0x22b/0x340 mm/kasan/report.c:408
- __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:428
- ip6_dst_store include/net/ip6_fib.h:176 [inline]
- tcp_v6_connect+0x1dfd/0x20f0 net/ipv6/tcp_ipv6.c:271
- __inet_stream_connect+0x2ee/0xf90 net/ipv4/af_inet.c:618
- inet_stream_connect+0x58/0xa0 net/ipv4/af_inet.c:682
- SYSC_connect+0x251/0x590 net/socket.c:1588
- SyS_connect+0x24/0x30 net/socket.c:1569
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-RIP: 0033:0x445e89
-RSP: 002b:00007fc98a723b58 EFLAGS: 00000286 ORIG_RAX: 000000000000002a
-RAX: ffffffffffffffda RBX: 0000000000000016 RCX: 0000000000445e89
-RDX: 000000000000001c RSI: 0000000020066000 RDI: 0000000000000016
-RBP: 00000000006e04c0 R08: 0000000000000000 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000286 R12: 00000000007081f8
-R13: 0000000000000000 R14: 00007fc98a7249c0 R15: 00007fc98a724700
-`: `net/ipv6/tcp_ipv6.c`,
- `
-------------[ cut here ]------------
-WARNING: CPU: 1 PID: 23686 at net/core/dev.c:2444 skb_warn_bad_offload+0x2c0/0x3a0 net/core/dev.c:2439()
-lo: caps=(0x00000014401b7c69, 0x0000000000000000) len=246 data_len=0 gso_size=35328 gso_type=4 ip_summed=0
-Kernel panic - not syncing: panic_on_warn set ...
-
-CPU: 1 PID: 23686 Comm: syz-executor0 Not tainted 4.4.64+ #26
-Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
- 0000000000000001 ffff8801d8a674b8 ffffffff81bfd89c ffffffff82a382a0
- ffff8801d8a67590 ffffffff82c2f040 0000000000000009 ffff8801d8a67580
- ffffffff813a0073 0000000041b58ab3 ffffffff82d52827 ffffffff8139fed1
-Call Trace:
- [<ffffffff81bfd89c>] __dump_stack lib/dump_stack.c:15 [inline]
- [<ffffffff81bfd89c>] dump_stack+0x80/0xb4 lib/dump_stack.c:51
- [<ffffffff813a0073>] panic+0x1a2/0x347 kernel/panic.c:115
- [<ffffffff810e209a>] warn_slowpath_common+0x12a/0x140 kernel/panic.c:463
- [<ffffffff810e2160>] warn_slowpath_fmt+0xb0/0xe0 kernel/panic.c:479
- [<ffffffff8217e980>] skb_warn_bad_offload+0x2c0/0x3a0 net/core/dev.c:2439
- [<ffffffff8218cc64>] __skb_gso_segment+0x3c4/0x4b0 net/core/dev.c:2596
- [<ffffffff8218d883>] skb_gso_segment include/linux/netdevice.h:3702 [inline]
- [<ffffffff8218d883>] validate_xmit_skb.isra.102.part.103+0x453/0x980 net/core/dev.c:2804
- [<ffffffff821902eb>] validate_xmit_skb include/linux/spinlock.h:347 [inline]
- [<ffffffff821902eb>] __dev_queue_xmit+0x133b/0x1550 net/core/dev.c:3173
- [<ffffffff8219051c>] dev_queue_xmit+0x1c/0x20 net/core/dev.c:3215
- [<ffffffff8278c519>] packet_snd net/packet/af_packet.c:2825 [inline]
- [<ffffffff8278c519>] packet_sendmsg+0x2959/0x4950 net/packet/af_packet.c:2850
- [<ffffffff821260af>] sock_sendmsg_nosec net/socket.c:611 [inline]
- [<ffffffff821260af>] sock_sendmsg+0xcf/0x110 net/socket.c:621
- [<ffffffff82127c49>] ___sys_sendmsg+0x6f9/0x810 net/socket.c:1947
- [<ffffffff82129590>] __sys_sendmsg+0xd0/0x180 net/socket.c:1981
- [<ffffffff82129672>] SYSC_sendmsg net/socket.c:1992 [inline]
- [<ffffffff82129672>] SyS_sendmsg+0x32/0x50 net/socket.c:1988
- [<ffffffff828ab96e>] entry_SYSCALL_64_fastpath+0x12/0x6d
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: disabled
-`: `net/packet/af_packet.c`,
- `
-==================================================================
-BUG: KASAN: use-after-free in dst_check include/net/dst.h:498 [inline]
-BUG: KASAN: use-after-free in tcp_v4_early_demux+0x967/0xa60 net/ipv4/tcp_ipv4.c:1480
-Read of size 8 at addr ffff8800397d2fe0 by task syz-executor0/4289
-
-CPU: 0 PID: 4289 Comm: syz-executor0 Not tainted 4.12.0-rc1+ #366
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
- <IRQ>
- __dump_stack lib/dump_stack.c:16 [inline]
- dump_stack+0x292/0x395 lib/dump_stack.c:52
- print_address_description+0x73/0x280 mm/kasan/report.c:252
- kasan_report_error mm/kasan/report.c:351 [inline]
- kasan_report+0x22b/0x340 mm/kasan/report.c:408
- __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:429
- dst_check include/net/dst.h:498 [inline]
- tcp_v4_early_demux+0x967/0xa60 net/ipv4/tcp_ipv4.c:1480
- ip_rcv_finish+0x1941/0x2110 net/ipv4/ip_input.c:334
-sctp: [Deprecated]: syz-executor7 (pid 4299) Use of struct sctp_assoc_value in delayed_ack socket option.
-Use struct sctp_sack_info instead
- NF_HOOK include/linux/netfilter.h:257 [inline]
- ip_rcv+0xd8c/0x19c0 net/ipv4/ip_input.c:488
- __netif_receive_skb_core+0x1ad1/0x3400 net/core/dev.c:4216
- __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:4254
- netif_receive_skb_internal+0x240/0x1b20 net/core/dev.c:4416
- napi_skb_finish net/core/dev.c:4773 [inline]
- napi_gro_receive+0x4e6/0x680 net/core/dev.c:4807
- e1000_receive_skb drivers/net/ethernet/intel/e1000/e1000_main.c:4018 [inline]
- e1000_clean_rx_irq+0x5e0/0x1490 drivers/net/ethernet/intel/e1000/e1000_main.c:4474
- e1000_clean+0xb9a/0x28f0 drivers/net/ethernet/intel/e1000/e1000_main.c:3819
- napi_poll net/core/dev.c:5407 [inline]
- net_rx_action+0xe7a/0x18f0 net/core/dev.c:5473
- __do_softirq+0x2fb/0xb99 kernel/softirq.c:284
- invoke_softirq kernel/softirq.c:364 [inline]
- irq_exit+0x19e/0x1d0 kernel/softirq.c:405
- exiting_irq arch/x86/include/asm/apic.h:652 [inline]
- smp_apic_timer_interrupt+0x76/0xa0 arch/x86/kernel/apic/apic.c:966
- apic_timer_interrupt+0x93/0xa0 arch/x86/entry/entry_64.S:484
-RIP: 0033:0x449783
-RSP: 002b:00007ffde3d48590 EFLAGS: 00000202 ORIG_RAX: ffffffffffffff10
-RAX: 00000000006e6bc0 RBX: 0000000000000001 RCX: 0000000000000040
-RDX: 0000000000000001 RSI: 0000000000a640a0 RDI: 00007ffb7ef3a700
-RBP: 0000000000000000 R08: 000000000139cda0 R09: 0000000000000012
-R10: 0000000000020022 R11: 0000000000000201 R12: 00007ffde3d486c0
-R13: 0000000000000000 R14: 0000000000000444 R15: 0000000000a640c8
- </IRQ>
-`: `net/ipv4/tcp_ipv4.c`,
- `
-==================================================================
-BUG: KMSAN: use of unitialized memory in rtnl_fdb_dump+0x5dc/0x1000
-CPU: 0 PID: 1039 Comm: probe Not tainted 4.11.0-rc5+ #2727
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
- __dump_stack lib/dump_stack.c:16
- dump_stack+0x143/0x1b0 lib/dump_stack.c:52
- kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:1007
- __kmsan_warning_32+0x66/0xb0 mm/kmsan/kmsan_instr.c:491
- rtnl_fdb_dump+0x5dc/0x1000 net/core/rtnetlink.c:3230
- netlink_dump+0x84f/0x1190 net/netlink/af_netlink.c:2168
- __netlink_dump_start+0xc97/0xe50 net/netlink/af_netlink.c:2258
- netlink_dump_start ./include/linux/netlink.h:165
- rtnetlink_rcv_msg+0xae9/0xb40 net/core/rtnetlink.c:4094
- netlink_rcv_skb+0x339/0x5a0 net/netlink/af_netlink.c:2339
- rtnetlink_rcv+0x83/0xa0 net/core/rtnetlink.c:4110
- netlink_unicast_kernel net/netlink/af_netlink.c:1272
- netlink_unicast+0x13b7/0x1480 net/netlink/af_netlink.c:1298
- netlink_sendmsg+0x10b8/0x10f0 net/netlink/af_netlink.c:1844
- sock_sendmsg_nosec net/socket.c:633
- sock_sendmsg net/socket.c:643
- ___sys_sendmsg+0xd4b/0x10f0 net/socket.c:1997
- __sys_sendmsg net/socket.c:2031
- SYSC_sendmsg+0x2c6/0x3f0 net/socket.c:2042
- SyS_sendmsg+0x87/0xb0 net/socket.c:2038
- do_syscall_64+0x102/0x150 arch/x86/entry/common.c:285
- entry_SYSCALL64_slow_path+0x25/0x25 arch/x86/entry/entry_64.S:246
-`: `net/core/rtnetlink.c`,
- `
-==================================================================
-BUG: KASAN: use-after-free in __read_once_size include/linux/compiler.h:254 [inline] at addr ffff88004f0f1938
-BUG: KASAN: use-after-free in atomic_read arch/x86/include/asm/atomic.h:26 [inline] at addr ffff88004f0f1938
-BUG: KASAN: use-after-free in virt_spin_lock arch/x86/include/asm/qspinlock.h:62 [inline] at addr ffff88004f0f1938
-BUG: KASAN: use-after-free in queued_spin_lock_slowpath+0xb0a/0xfd0 kernel/locking/qspinlock.c:421 at addr ffff88004f0f1938
-Read of size 4 by task syz-executor0/28813
-CPU: 1 PID: 28813 Comm: syz-executor0 Not tainted 4.11.0-rc7+ #251
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
- __dump_stack lib/dump_stack.c:16 [inline]
- dump_stack+0x292/0x398 lib/dump_stack.c:52
- kasan_object_err+0x1c/0x70 mm/kasan/report.c:164
- print_address_description mm/kasan/report.c:202 [inline]
- kasan_report_error mm/kasan/report.c:291 [inline]
- kasan_report+0x252/0x510 mm/kasan/report.c:347
- __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:367
- __read_once_size include/linux/compiler.h:254 [inline]
- atomic_read arch/x86/include/asm/atomic.h:26 [inline]
- virt_spin_lock arch/x86/include/asm/qspinlock.h:62 [inline]
- queued_spin_lock_slowpath+0xb0a/0xfd0 kernel/locking/qspinlock.c:421
- queued_spin_lock include/asm-generic/qspinlock.h:103 [inline]
- do_raw_spin_lock+0x151/0x1e0 kernel/locking/spinlock_debug.c:113
- __raw_spin_lock include/linux/spinlock_api_smp.h:143 [inline]
- _raw_spin_lock+0x32/0x40 kernel/locking/spinlock.c:151
- spin_lock include/linux/spinlock.h:299 [inline]
- lockref_get_not_dead+0x19/0x80 lib/lockref.c:179
- __ns_get_path+0x197/0x860 fs/nsfs.c:66
- open_related_ns+0xda/0x200 fs/nsfs.c:143
- sock_ioctl+0x39d/0x440 net/socket.c:1001
- vfs_ioctl fs/ioctl.c:45 [inline]
- do_vfs_ioctl+0x1bf/0x1780 fs/ioctl.c:685
- SYSC_ioctl fs/ioctl.c:700 [inline]
- SyS_ioctl+0x8f/0xc0 fs/ioctl.c:691
- entry_SYSCALL_64_fastpath+0x1f/0xc2
-`: `fs/nsfs.c`,
- `
-irq bypass consumer (token ffff8801bff15e80) registration fails: -16
-kasan: CONFIG_KASAN_INLINE enabled
-kasan: GPF could be caused by NULL-ptr deref or user memory access
-general protection fault: 0000 [#1] SMP KASAN
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Modules linked in:
-CPU: 0 PID: 1427 Comm: kworker/0:3 Not tainted 4.9.0+ #9
-Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-Workqueue: kvm-irqfd-cleanup irqfd_shutdown
-task: ffff8801d60cc700 task.stack: ffff8801d62f8000
-RIP: 0010:[<ffffffff84352ab6>] [<ffffffff84352ab6>] __list_del include/linux/list.h:89 [inline]
-RIP: 0010:[<ffffffff84352ab6>] [<ffffffff84352ab6>] list_del include/linux/list.h:107 [inline]
-RIP: 0010:[<ffffffff84352ab6>] [<ffffffff84352ab6>] irq_bypass_unregister_consumer+0x296/0x470 virt/lib/irqbypass.c:258
-RSP: 0018:ffff8801d62ff318 EFLAGS: 00010202
-RAX: 0000000000000000 RBX: 1ffff1003ac5fe65 RCX: dffffc0000000000
-RDX: ffff8801d3075170 RSI: 0000000000000001 RDI: 0000000000000008
-RBP: ffff8801d62ff3b0 R08: 0000000000000000 R09: 0000000000000000
-R10: 0000000000000006 R11: 0000000000000000 R12: ffff8801d3075168
-R13: ffff8801d7d071a8 R14: 0000000000000000 R15: ffffffff8541bbe0
-FS: 0000000000000000(0000) GS:ffff8801dc000000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 00007f960f8f3db8 CR3: 00000001da19b000 CR4: 00000000001426f0
-DR0: 0000000020000000 DR1: 0000000020000000 DR2: 0000000000000000
-DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000600
-Stack:
- ffffffff814cc212 ffff8801d60cc700 0000000041b58ab3 ffffffff84ad688d
- ffffffff84352820 ffffffff815720c0 ffff8801da11b640 0000000041b58ab3
- ffffffff84aea0a0 ffffffff81262e90 1ffff1003ac5fe74 0000000041b58ab3
-Call Trace:
- [<ffffffff8108aaf3>] irqfd_shutdown+0x123/0x1c0 arch/x86/kvm/../../../virt/kvm/eventfd.c:145
- [<ffffffff81492c00>] process_one_work+0xbd0/0x1c10 kernel/workqueue.c:2096
- [<ffffffff81493e63>] worker_thread+0x223/0x1990 kernel/workqueue.c:2230
- [<ffffffff814abd53>] kthread+0x323/0x3e0 kernel/kthread.c:209
- [<ffffffff84377c6a>] ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:433
-Code: 48 89 d1 48 c1 e9 03 80 3c 01 00 0f 85 76 01 00 00 49 8d 7e 08 48 b9 00 00 00 00 00 fc ff df 49 8b 44 24 08 48 89 fe 48 c1 ee 03 <80> 3c 0e 00 0f 85 2c 01 00 00 4c 8d 6d 98 48 b9 00 00 00 00 00
-RIP [<ffffffff84352ab6>] __list_del include/linux/list.h:89 [inline]
-RIP [<ffffffff84352ab6>] list_del include/linux/list.h:107 [inline]
-RIP [<ffffffff84352ab6>] irq_bypass_unregister_consumer+0x296/0x470 virt/lib/irqbypass.c:258
- RSP <ffff8801d62ff318>
----[ end trace c88bb3be8e63e0af ]---
-Kernel panic - not syncing: Fatal exception
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: disabled
-Rebooting in 86400 seconds..
-`: `arch/x86/kvm/../../../virt/kvm/eventfd.c`,
- `
-------------[ cut here ]------------
-kernel BUG at ./include/linux/skbuff.h:2389!
-invalid opcode: 0000 [#1] SMP KASAN
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Modules linked in:
-CPU: 2 PID: 10793 Comm: syz-executor0 Not tainted 4.10.0-rc8+ #201
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-task: ffff88006aeb1700 task.stack: ffff880069b08000
-RIP: 0010:skb_set_owner_r include/linux/skbuff.h:2389 [inline]
-RIP: 0010:__sock_queue_rcv_skb+0x8c0/0xda0 net/core/sock.c:425
-RSP: 0018:ffff88006de06b58 EFLAGS: 00010206
-RAX: ffff88006aeb1700 RBX: ffff8800581dc170 RCX: 0000000000000000
-RDX: 0000000000000100 RSI: 1ffff1000d5fcb7b RDI: ffff88006afe5be0
-RBP: ffff88006de06dc0 R08: 0000000000000002 R09: 0000000000000001
-R10: 0000000000000000 R11: dffffc0000000000 R12: ffff88006afe5bc0
-R13: ffff88006de06d98 R14: ffff8800581dc198 R15: ffff88006afe5c20
-FS: 00007f06a3bd9700(0000) GS:ffff88006de00000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 0000000020007000 CR3: 000000006a280000 CR4: 00000000000006e0
-Call Trace:
- <IRQ>
- sock_queue_rcv_skb+0x3a/0x50 net/core/sock.c:451
-PF_BRIDGE: RTM_DELNEIGH with invalid address
- llc_sap_state_process+0x3e3/0x4e0 net/llc/llc_sap.c:220
- llc_sap_rcv net/llc/llc_sap.c:294 [inline]
- llc_sap_handler+0x695/0x1320 net/llc/llc_sap.c:434
- llc_rcv+0x6da/0xed0 net/llc/llc_input.c:208
- __netif_receive_skb_core+0x1ae5/0x3400 net/core/dev.c:4190
- __netif_receive_skb+0x2a/0x170 net/core/dev.c:4228
- process_backlog+0xe5/0x6c0 net/core/dev.c:4839
- napi_poll net/core/dev.c:5202 [inline]
- net_rx_action+0xe70/0x1900 net/core/dev.c:5267
- __do_softirq+0x2fb/0xb7d kernel/softirq.c:284
- do_softirq_own_stack+0x1c/0x30 arch/x86/entry/entry_64.S:902
- </IRQ>
- do_softirq.part.17+0x1e8/0x230 kernel/softirq.c:328
- do_softirq kernel/softirq.c:176 [inline]
- __local_bh_enable_ip+0x1f2/0x200 kernel/softirq.c:181
- local_bh_enable include/linux/bottom_half.h:31 [inline]
- rcu_read_unlock_bh include/linux/rcupdate.h:971 [inline]
- __dev_queue_xmit+0xd87/0x2860 net/core/dev.c:3399
- dev_queue_xmit+0x17/0x20 net/core/dev.c:3405
- llc_build_and_send_ui_pkt+0x240/0x330 net/llc/llc_output.c:74
- llc_ui_sendmsg+0x98d/0x1430 net/llc/af_llc.c:928
- sock_sendmsg_nosec net/socket.c:635 [inline]
- sock_sendmsg+0xca/0x110 net/socket.c:645
- ___sys_sendmsg+0x9d2/0xae0 net/socket.c:1985
- __sys_sendmsg+0x138/0x320 net/socket.c:2019
- SYSC_sendmsg net/socket.c:2030 [inline]
- SyS_sendmsg+0x2d/0x50 net/socket.c:2026
- entry_SYSCALL_64_fastpath+0x1f/0xc2
-`: `net/llc/llc_sap.c`,
- `
-==================================================================
-BUG: KASAN: use-after-free in skb_pfmemalloc include/linux/skbuff.h:829 [inline] at addr ffff88003b910d8c
-BUG: KASAN: use-after-free in skb_clone+0x3a2/0x420 net/core/skbuff.c:1029 at addr ffff88003b910d8c
-Read of size 4 by task syz-executor0/5591
-CPU: 1 PID: 5591 Comm: syz-executor0 Not tainted 4.10.0-rc8+ #201
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
- <IRQ>
- __dump_stack lib/dump_stack.c:15 [inline]
- dump_stack+0x292/0x398 lib/dump_stack.c:51
- kasan_object_err+0x1c/0x70 mm/kasan/report.c:162
- print_address_description mm/kasan/report.c:200 [inline]
- kasan_report_error mm/kasan/report.c:289 [inline]
- kasan_report.part.1+0x20e/0x4e0 mm/kasan/report.c:311
- kasan_report mm/kasan/report.c:331 [inline]
- __asan_report_load4_noabort+0x29/0x30 mm/kasan/report.c:331
- skb_pfmemalloc include/linux/skbuff.h:829 [inline]
- skb_clone+0x3a2/0x420 net/core/skbuff.c:1029
- dccp_v6_request_recv_sock+0xb5e/0x1960 net/dccp/ipv6.c:527
- dccp_check_req+0x335/0x5a0 net/dccp/minisocks.c:186
- dccp_v6_rcv+0x69e/0x1d00 net/dccp/ipv6.c:711
- ip6_input_finish+0x46d/0x17a0 net/ipv6/ip6_input.c:279
- NF_HOOK include/linux/netfilter.h:257 [inline]
- ip6_input+0xdb/0x590 net/ipv6/ip6_input.c:322
- dst_input include/net/dst.h:507 [inline]
- ip6_rcv_finish+0x289/0x890 net/ipv6/ip6_input.c:69
- NF_HOOK include/linux/netfilter.h:257 [inline]
- ipv6_rcv+0x12ec/0x23d0 net/ipv6/ip6_input.c:203
- __netif_receive_skb_core+0x1ae5/0x3400 net/core/dev.c:4190
- __netif_receive_skb+0x2a/0x170 net/core/dev.c:4228
- process_backlog+0xe5/0x6c0 net/core/dev.c:4839
- napi_poll net/core/dev.c:5202 [inline]
- net_rx_action+0xe70/0x1900 net/core/dev.c:5267
- __do_softirq+0x2fb/0xb7d kernel/softirq.c:284
- do_softirq_own_stack+0x1c/0x30 arch/x86/entry/entry_64.S:902
- </IRQ>
- do_softirq.part.17+0x1e8/0x230 kernel/softirq.c:328
- do_softirq kernel/softirq.c:176 [inline]
- __local_bh_enable_ip+0x1f2/0x200 kernel/softirq.c:181
- local_bh_enable include/linux/bottom_half.h:31 [inline]
- rcu_read_unlock_bh include/linux/rcupdate.h:971 [inline]
- ip6_finish_output2+0xbb0/0x23d0 net/ipv6/ip6_output.c:123
- ip6_finish_output+0x302/0x960 net/ipv6/ip6_output.c:148
- NF_HOOK_COND include/linux/netfilter.h:246 [inline]
- ip6_output+0x1cb/0x8d0 net/ipv6/ip6_output.c:162
- ip6_xmit+0xce6/0x20d0 include/net/dst.h:501
- inet6_csk_xmit+0x320/0x5f0 net/ipv6/inet6_connection_sock.c:179
- dccp_transmit_skb+0xb09/0x1120 net/dccp/output.c:141
- dccp_send_ack+0x1bf/0x350 net/dccp/output.c:594
- dccp_rcv_request_sent_state_process net/dccp/input.c:501 [inline]
- dccp_rcv_state_process+0x102f/0x1650 net/dccp/input.c:670
- dccp_v6_do_rcv+0x213/0x350 net/dccp/ipv6.c:632
- sk_backlog_rcv include/net/sock.h:893 [inline]
- __release_sock+0x127/0x3a0 net/core/sock.c:2053
- release_sock+0xa5/0x2b0 net/core/sock.c:2540
- inet_wait_for_connect net/ipv4/af_inet.c:557 [inline]
- __inet_stream_connect+0x5f7/0xeb0 net/ipv4/af_inet.c:626
- inet_stream_connect+0x55/0xa0 net/ipv4/af_inet.c:665
- SYSC_connect+0x251/0x590 net/socket.c:1579
- SyS_connect+0x24/0x30 net/socket.c:1560
- entry_SYSCALL_64_fastpath+0x1f/0xc2
-`: `net/dccp/ipv6.c`,
- `
-==================================================================
-BUG: KASAN: use-after-free in __list_add_rcu include/linux/rculist.h:57 [inline] at addr ffff8801c5b6c110
-BUG: KASAN: use-after-free in list_add_rcu include/linux/rculist.h:78 [inline] at addr ffff8801c5b6c110
-BUG: KASAN: use-after-free in timerfd_setup_cancel fs/timerfd.c:141 [inline] at addr ffff8801c5b6c110
-BUG: KASAN: use-after-free in do_timerfd_settime+0xd32/0xf50 fs/timerfd.c:446 at addr ffff8801c5b6c110
-Write of size 8 by task syz-executor5/10885
-CPU: 1 PID: 10885 Comm: syz-executor5 Not tainted 4.10.0+ #7
-Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-Call Trace:
- __dump_stack lib/dump_stack.c:15 [inline]
- dump_stack+0x2ee/0x3ef lib/dump_stack.c:51
- kasan_object_err+0x1c/0x70 mm/kasan/report.c:162
- print_address_description mm/kasan/report.c:200 [inline]
- kasan_report_error mm/kasan/report.c:289 [inline]
- kasan_report.part.2+0x1e5/0x4b0 mm/kasan/report.c:311
- kasan_report mm/kasan/report.c:337 [inline]
- __asan_report_store8_noabort+0x2c/0x30 mm/kasan/report.c:337
- __list_add_rcu include/linux/rculist.h:57 [inline]
- list_add_rcu include/linux/rculist.h:78 [inline]
- timerfd_setup_cancel fs/timerfd.c:141 [inline]
- do_timerfd_settime+0xd32/0xf50 fs/timerfd.c:446
- SYSC_timerfd_settime fs/timerfd.c:533 [inline]
- SyS_timerfd_settime+0xef/0x1c0 fs/timerfd.c:524
- entry_SYSCALL_64_fastpath+0x1f/0xc
-`: `fs/timerfd.c`,
- `
-driver/foo/lib/foo.c:10
-`: `driver/foo/lib/foo.c`,
- `
-BUG: soft lockup - CPU#1 stuck for 22s! [syz-executor2:7067]
-hardirqs last enabled at (210421): [<ffffffff82c51728>] restore_regs_and_iret+0x0/0x1d
-hardirqs last disabled at (210422): [<ffffffff8100fb22>] apic_timer_interrupt+0x82/0x90 arch/x86/entry/entry_64.S:710
-softirqs last enabled at (210420): [<ffffffff810114a3>] __do_softirq+0x613/0x8c4 kernel/softirq.c:344
-softirqs last disabled at (210415): [<ffffffff812c1650>] invoke_softirq kernel/softirq.c:395 [inline]
-softirqs last disabled at (210415): [<ffffffff812c1650>] irq_exit+0x170/0x1a0 kernel/softirq.c:436
-RIP: 0010:[<ffffffff8181134a>] [<ffffffff8181134a>] next_group+0x5a/0x2e0 fs/pnode.c:172
-`: `fs/pnode.c`,
- `
-------------[ cut here ]------------
-WARNING: CPU: 1 PID: 7733 at mm/vmalloc.c:1473 __vunmap+0x1ca/0x300 mm/vmalloc.c:1472()
-Trying to vfree() bad address (ffff8800b3254fc0)
-Kernel panic - not syncing: panic_on_warn set ...
-
-Call Trace:
- [<ffffffff81c8f6cd>] __dump_stack lib/dump_stack.c:15 [inline]
- [<ffffffff81c8f6cd>] dump_stack+0xc1/0x124 lib/dump_stack.c:51
- [<ffffffff815f5f34>] __panic+0x11f/0x30b kernel/panic.c:179
- [<ffffffff815f61da>] panic_saved_regs+0xba/0xba kernel/panic.c:280
- [<ffffffff812b148f>] warn_slowpath_common+0x12f/0x150 kernel/panic.c:642
- [<ffffffff812b1560>] warn_slowpath_fmt+0xb0/0xe0 kernel/panic.c:658
- [<ffffffff816d015a>] __vunmap+0x1ca/0x300 mm/vmalloc.c:1472
- [<ffffffff816d0355>] vfree+0x55/0xe0 mm/vmalloc.c:1533
- [<ffffffff81b26404>] ipc_free+0x44/0x50 ipc/util.c:420
- [<ffffffff81b3203d>] semctl_main+0x20d/0x1ba0 ipc/sem.c:1496
-`: `ipc/util.c`,
- `
-
-===============================
-[ INFO: suspicious RCU usage. ]
-Call Trace:
- [<ffffffff81c8f6cd>] __dump_stack lib/dump_stack.c:15 [inline]
- [<ffffffff81c8f6cd>] dump_stack+0xc1/0x124 lib/dump_stack.c:51
- [<ffffffff81614578>] warn_alloc+0x208/0x230 mm/page_alloc.c:2850
- [<ffffffff816d0915>] __vmalloc_area_node_memcg mm/vmalloc.c:1647 [inline]
- [<ffffffff816d0915>] __vmalloc_node_range_memcg+0x375/0x670 mm/vmalloc.c:1690
- [<ffffffff816d0c79>] __vmalloc_node_memcg mm/vmalloc.c:1751 [inline]
- [<ffffffff816d0c79>] __vmalloc_node_memcg_flags mm/vmalloc.c:1788 [inline]
- [<ffffffff816d0c79>] vmalloc+0x69/0x70 mm/vmalloc.c:1803
- [<ffffffff8279a0b0>] xt_alloc_table_info+0xd0/0x100 net/netfilter/x_tables.c:952
- [<ffffffff829a50bc>] do_replace net/ipv4/netfilter/ip_tables.c:1140 [inline]
- [<ffffffff829a50bc>] do_ipt_set_ctl+0x21c/0x430 net/ipv4/netfilter/ip_tables.c:1687
- [<ffffffff827436ac>] nf_sockopt net/netfilter/nf_sockopt.c:105 [inline]
-`: `net/netfilter/x_tables.c`,
- }
- for report, guilty0 := range tests {
- if guilty := ExtractGuiltyFile([]byte(report)); guilty != guilty0 {
- t.Logf("log:\n%s", report)
- t.Logf("extracted files:\n%s", extractFiles([]byte(report)))
- t.Logf("want guilty:\n%s", guilty0)
- t.Logf("got guilty:\n%s", guilty)
- t.Fatalf("couldn't extract guilty file")
- }
- }
-}
diff --git a/pkg/report/linux.go b/pkg/report/linux.go
new file mode 100644
index 000000000..70df240db
--- /dev/null
+++ b/pkg/report/linux.go
@@ -0,0 +1,705 @@
+// Copyright 2017 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.
+
+package report
+
+import (
+ "bufio"
+ "bytes"
+ "fmt"
+ "net/mail"
+ "path/filepath"
+ "regexp"
+ "strconv"
+ "strings"
+ "time"
+
+ "github.com/google/syzkaller/pkg/osutil"
+ "github.com/google/syzkaller/pkg/symbolizer"
+)
+
+type linux struct {
+ kernelSrc string
+ kernelObj string
+ vmlinux string
+ symbols map[string][]symbolizer.Symbol
+ ignores []*regexp.Regexp
+ consoleOutputRe *regexp.Regexp
+ questionableRe *regexp.Regexp
+ guiltyFileBlacklist []*regexp.Regexp
+ eoi []byte
+}
+
+func ctorLinux(kernelSrc, kernelObj string, symbols map[string][]symbolizer.Symbol,
+ ignores []*regexp.Regexp) (Reporter, error) {
+ vmlinux := filepath.Join(kernelObj, "vmlinux")
+ if symbols == nil {
+ var err error
+ symbols, err = symbolizer.ReadSymbols(vmlinux)
+ if err != nil {
+ return nil, err
+ }
+ }
+ ctx := &linux{
+ kernelSrc: kernelSrc,
+ kernelObj: kernelObj,
+ vmlinux: vmlinux,
+ symbols: symbols,
+ ignores: ignores,
+ }
+ ctx.consoleOutputRe = regexp.MustCompile(`^(?:\<[0-9]+\>)?\[ *[0-9]+\.[0-9]+\] `)
+ ctx.questionableRe = regexp.MustCompile(`(?:\[\<[0-9a-f]+\>\])? \? +[a-zA-Z0-9_.]+\+0x[0-9a-f]+/[0-9a-f]+`)
+ ctx.eoi = []byte("<EOI>")
+ ctx.guiltyFileBlacklist = []*regexp.Regexp{
+ regexp.MustCompile(`.*\.h`),
+ regexp.MustCompile(`^lib/.*`),
+ regexp.MustCompile(`^virt/lib/.*`),
+ regexp.MustCompile(`^mm/kasan/.*`),
+ regexp.MustCompile(`^mm/kmsan/.*`),
+ regexp.MustCompile(`^mm/percpu.*`),
+ regexp.MustCompile(`^mm/vmalloc.c`),
+ regexp.MustCompile(`^mm/page_alloc.c`),
+ regexp.MustCompile(`^kernel/rcu/.*`),
+ regexp.MustCompile(`^arch/.*/kernel/traps.c`),
+ regexp.MustCompile(`^kernel/locking/*`),
+ regexp.MustCompile(`^kernel/panic.c`),
+ regexp.MustCompile(`^kernel/softirq.c`),
+ regexp.MustCompile(`^net/core/dev.c`),
+ regexp.MustCompile(`^net/core/sock.c`),
+ regexp.MustCompile(`^net/core/skbuff.c`),
+ }
+ return ctx, nil
+}
+
+func (ctx *linux) ContainsCrash(output []byte) bool {
+ return containsCrash(output, linuxOopses, ctx.ignores)
+}
+
+func (ctx *linux) Parse(output []byte) (desc string, text []byte, start int, end int) {
+ var oops *oops
+ var textPrefix [][]byte
+ textLines := 0
+ skipText := false
+ for pos := 0; pos < len(output); {
+ next := bytes.IndexByte(output[pos:], '\n')
+ if next != -1 {
+ next += pos
+ } else {
+ next = len(output)
+ }
+ for _, oops1 := range linuxOopses {
+ match := matchOops(output[pos:next], oops1, ctx.ignores)
+ if match == -1 {
+ continue
+ }
+ if oops == nil {
+ oops = oops1
+ start = pos
+ desc = string(output[pos+match : next])
+ }
+ end = next
+ }
+ if ctx.consoleOutputRe.Match(output[pos:next]) &&
+ (!ctx.questionableRe.Match(output[pos:next]) ||
+ bytes.Index(output[pos:next], ctx.eoi) != -1) {
+ lineStart := bytes.Index(output[pos:next], []byte("] ")) + pos + 2
+ lineEnd := next
+ if lineEnd != 0 && output[lineEnd-1] == '\r' {
+ lineEnd--
+ }
+ if oops == nil {
+ textPrefix = append(textPrefix, append([]byte{}, output[lineStart:lineEnd]...))
+ if len(textPrefix) > 5 {
+ textPrefix = textPrefix[1:]
+ }
+ } else {
+ // Prepend 5 lines preceding start of the report,
+ // they can contain additional info related to the report.
+ for _, prefix := range textPrefix {
+ text = append(text, prefix...)
+ text = append(text, '\n')
+ }
+ textPrefix = nil
+ textLines++
+ ln := output[lineStart:lineEnd]
+ skipLine := skipText
+ if bytes.Contains(ln, []byte("Disabling lock debugging due to kernel taint")) {
+ skipLine = true
+ } else if textLines > 40 && bytes.Contains(ln, []byte("Kernel panic - not syncing")) {
+ // If panic_on_warn set, then we frequently have 2 stacks:
+ // one for the actual report (or maybe even more than one),
+ // and then one for panic caused by panic_on_warn. This makes
+ // reports unnecessary long and the panic (current) stack
+ // is always present in the actual report. So we strip the
+ // panic message. However, we check that we have enough lines
+ // before the panic, because sometimes we have, for example,
+ // a single WARNING line without a stack and then the panic
+ // with the stack.
+ skipText = true
+ skipLine = true
+ }
+ if !skipLine {
+ text = append(text, ln...)
+ text = append(text, '\n')
+ }
+ }
+ }
+ pos = next + 1
+ }
+ if oops == nil {
+ return
+ }
+ desc = extractDescription(output[start:], oops)
+ if len(desc) > 0 && desc[len(desc)-1] == '\r' {
+ desc = desc[:len(desc)-1]
+ }
+ // Executor PIDs are not interesting.
+ desc = executorRe.ReplaceAllLiteralString(desc, "syz-executor")
+ // Replace that everything looks like an address with "ADDR",
+ // addresses in descriptions can't be good regardless of the oops regexps.
+ desc = addrRe.ReplaceAllLiteralString(desc, "ADDR")
+ // Replace that everything looks like a decimal number with "NUM".
+ desc = decNumRe.ReplaceAllLiteralString(desc, "NUM")
+ // Replace that everything looks like a file line number with "LINE".
+ desc = lineNumRe.ReplaceAllLiteralString(desc, ":LINE")
+ // Replace all raw references to runctions (e.g. "ip6_fragment+0x1052/0x2d80")
+ // with just function name ("ip6_fragment"). Offsets and sizes are not stable.
+ desc = funcRe.ReplaceAllString(desc, "$1")
+ // CPU numbers are not interesting.
+ desc = cpuRe.ReplaceAllLiteralString(desc, "CPU")
+ // Corrupted/intermixed lines can be very long.
+ const maxDescLen = 180
+ if len(desc) > maxDescLen {
+ desc = desc[:maxDescLen]
+ }
+ return
+}
+
+func extractDescription(output []byte, oops *oops) string {
+ result := ""
+ startPos := -1
+ for _, format := range oops.formats {
+ match := format.re.FindSubmatchIndex(output)
+ if match == nil {
+ continue
+ }
+ if startPos != -1 && startPos <= match[0] {
+ continue
+ }
+ startPos = match[0]
+ var args []interface{}
+ for i := 2; i < len(match); i += 2 {
+ args = append(args, string(output[match[i]:match[i+1]]))
+ }
+ result = fmt.Sprintf(format.fmt, args...)
+ }
+ if result != "" {
+ return result
+ }
+ pos := bytes.Index(output, oops.header)
+ if pos == -1 {
+ panic("non matching oops")
+ }
+ end := bytes.IndexByte(output[pos:], '\n')
+ if end == -1 {
+ end = len(output)
+ } else {
+ end += pos
+ }
+ return string(output[pos:end])
+}
+
+func (ctx *linux) Symbolize(text []byte) ([]byte, error) {
+ symb := symbolizer.NewSymbolizer()
+ defer symb.Close()
+ // Strip vmlinux location from all paths.
+ strip, _ := filepath.Abs(ctx.vmlinux)
+ strip = filepath.Dir(strip) + string(filepath.Separator)
+ // Vmlinux may have been moved, so check if we can find debug info
+ // for __sanitizer_cov_trace_pc. We know where it is located,
+ // so we can infer correct strip prefix from it.
+ if covSymbols := ctx.symbols["__sanitizer_cov_trace_pc"]; len(covSymbols) != 0 {
+ for _, covSymb := range covSymbols {
+ frames, _ := symb.Symbolize(ctx.vmlinux, covSymb.Addr)
+ if len(frames) > 0 {
+ file := frames[len(frames)-1].File
+ if idx := strings.Index(file, "kernel/kcov.c"); idx != -1 {
+ strip = file[:idx]
+ break
+ }
+ }
+ }
+ }
+ var symbolized []byte
+ s := bufio.NewScanner(bytes.NewReader(text))
+ for s.Scan() {
+ line := append([]byte{}, s.Bytes()...)
+ line = append(line, '\n')
+ line = symbolizeLine(symb.Symbolize, ctx.symbols, ctx.vmlinux, strip, line)
+ symbolized = append(symbolized, line...)
+ }
+ return symbolized, nil
+}
+
+func symbolizeLine(symbFunc func(bin string, pc uint64) ([]symbolizer.Frame, error),
+ symbols map[string][]symbolizer.Symbol, vmlinux, strip string, line []byte) []byte {
+ match := linuxSymbolizeRe.FindSubmatchIndex(line)
+ if match == nil {
+ return line
+ }
+ fn := line[match[2]:match[3]]
+ off, err := strconv.ParseUint(string(line[match[4]:match[5]]), 16, 64)
+ if err != nil {
+ return line
+ }
+ size, err := strconv.ParseUint(string(line[match[6]:match[7]]), 16, 64)
+ if err != nil {
+ return line
+ }
+ symb := symbols[string(fn)]
+ if len(symb) == 0 {
+ return line
+ }
+ var funcStart uint64
+ for _, s := range symb {
+ if funcStart == 0 || int(size) == s.Size {
+ funcStart = s.Addr
+ }
+ }
+ frames, err := symbFunc(vmlinux, funcStart+off-1)
+ if err != nil || len(frames) == 0 {
+ return line
+ }
+ var symbolized []byte
+ for _, frame := range frames {
+ file := frame.File
+ if strings.HasPrefix(file, strip) {
+ file = file[len(strip):]
+ }
+ if strings.HasPrefix(file, "./") {
+ file = file[2:]
+ }
+ info := fmt.Sprintf(" %v:%v", file, frame.Line)
+ modified := append([]byte{}, line...)
+ modified = replace(modified, match[7], match[7], []byte(info))
+ if frame.Inline {
+ end := match[7] + len(info)
+ modified = replace(modified, end, end, []byte(" [inline]"))
+ modified = replace(modified, match[2], match[7], []byte(frame.Func))
+ }
+ symbolized = append(symbolized, modified...)
+ }
+ return symbolized
+}
+
+func (ctx *linux) ExtractConsoleOutput(output []byte) (result []byte) {
+ for pos := 0; pos < len(output); {
+ next := bytes.IndexByte(output[pos:], '\n')
+ if next != -1 {
+ next += pos
+ } else {
+ next = len(output)
+ }
+ if ctx.consoleOutputRe.Match(output[pos:next]) &&
+ (!ctx.questionableRe.Match(output[pos:next]) ||
+ bytes.Index(output[pos:next], ctx.eoi) != -1) {
+ lineStart := bytes.Index(output[pos:next], []byte("] ")) + pos + 2
+ lineEnd := next
+ if lineEnd != 0 && output[lineEnd-1] == '\r' {
+ lineEnd--
+ }
+ result = append(result, output[lineStart:lineEnd]...)
+ result = append(result, '\n')
+ }
+ pos = next + 1
+ }
+ return
+}
+
+func (ctx *linux) ExtractGuiltyFile(report []byte) string {
+ files := ctx.extractFiles(report)
+nextFile:
+ for _, file := range files {
+ for _, re := range ctx.guiltyFileBlacklist {
+ if re.MatchString(file) {
+ continue nextFile
+ }
+ }
+ return file
+ }
+ return ""
+}
+
+func (ctx *linux) GetMaintainers(file string) ([]string, error) {
+ mtrs, err := ctx.getMaintainers(file, false)
+ if err != nil {
+ return nil, err
+ }
+ if len(mtrs) <= 1 {
+ mtrs, err = ctx.getMaintainers(file, true)
+ if err != nil {
+ return nil, err
+ }
+ }
+ return mtrs, nil
+}
+
+func (ctx *linux) getMaintainers(file string, blame bool) ([]string, error) {
+ args := []string{"--no-n", "--no-rolestats"}
+ if blame {
+ args = append(args, "--git-blame")
+ }
+ args = append(args, file)
+ output, err := osutil.RunCmd(time.Minute, ctx.kernelSrc, filepath.FromSlash("scripts/get_maintainer.pl"), args...)
+ if err != nil {
+ return nil, err
+ }
+ lines := strings.Split(string(output), "\n")
+ var mtrs []string
+ for _, line := range lines {
+ addr, err := mail.ParseAddress(line)
+ if err != nil {
+ continue
+ }
+ mtrs = append(mtrs, addr.Address)
+ }
+ return mtrs, nil
+}
+
+func (ctx *linux) extractFiles(report []byte) []string {
+ matches := filenameRe.FindAll(report, -1)
+ var files []string
+ for _, match := range matches {
+ files = append(files, string(bytes.Split(match, []byte{':'})[0]))
+ }
+ return files
+}
+
+var (
+ filenameRe = regexp.MustCompile(`[a-zA-Z0-9_\-\./]*[a-zA-Z0-9_\-]+\.(c|h):[0-9]+`)
+ linuxSymbolizeRe = regexp.MustCompile(`(?:\[\<(?:[0-9a-f]+)\>\])?[ \t]+(?:[0-9]+:)?([a-zA-Z0-9_.]+)\+0x([0-9a-f]+)/0x([0-9a-f]+)`)
+ decNumRe = regexp.MustCompile(`[0-9]{5,}`)
+ lineNumRe = regexp.MustCompile(`(:[0-9]+)+`)
+ addrRe = regexp.MustCompile(`[0-9a-f]{8,}`)
+ funcRe = regexp.MustCompile(`([a-zA-Z][a-zA-Z0-9_.]+)\+0x[0-9a-z]+/0x[0-9a-z]+`)
+ cpuRe = regexp.MustCompile(`CPU#[0-9]+`)
+ executorRe = regexp.MustCompile(`syz-executor[0-9]+((/|:)[0-9]+)?`)
+)
+
+var linuxOopses = []*oops{
+ &oops{
+ []byte("BUG:"),
+ []oopsFormat{
+ {
+ compile("BUG: KASAN: ([a-z\\-]+) in {{FUNC}}(?:.*\\n)+?.*(Read|Write) of size ([0-9]+)"),
+ "KASAN: %[1]v %[3]v in %[2]v",
+ },
+ {
+ compile("BUG: KASAN: ([a-z\\-]+) on address(?:.*\\n)+?.*(Read|Write) of size ([0-9]+)"),
+ "KASAN: %[1]v %[2]v",
+ },
+ {
+ compile("BUG: KASAN: (.*)"),
+ "KASAN: %[1]v",
+ },
+ {
+ compile("BUG: unable to handle kernel paging request(?:.*\\n)+?.*IP: (?:{{PC}} +)?{{FUNC}}"),
+ "BUG: unable to handle kernel paging request in %[1]v",
+ },
+ {
+ compile("BUG: unable to handle kernel paging request"),
+ "BUG: unable to handle kernel paging request",
+ },
+ {
+ compile("BUG: unable to handle kernel NULL pointer dereference(?:.*\\n)+?.*IP: (?:{{PC}} +)?{{FUNC}}"),
+ "BUG: unable to handle kernel NULL pointer dereference in %[1]v",
+ },
+ {
+ compile("BUG: spinlock lockup suspected"),
+ "BUG: spinlock lockup suspected",
+ },
+ {
+ compile("BUG: spinlock recursion"),
+ "BUG: spinlock recursion",
+ },
+ {
+ compile("BUG: soft lockup"),
+ "BUG: soft lockup",
+ },
+ {
+ compile("BUG: .*still has locks held!(?:.*\\n)+?.*{{PC}} +{{FUNC}}"),
+ "BUG: still has locks held in %[1]v",
+ },
+ {
+ compile("BUG: bad unlock balance detected!(?:.*\\n)+?.*{{PC}} +{{FUNC}}"),
+ "BUG: bad unlock balance in %[1]v",
+ },
+ {
+ compile("BUG: held lock freed!(?:.*\\n)+?.*{{PC}} +{{FUNC}}"),
+ "BUG: held lock freed in %[1]v",
+ },
+ {
+ compile("BUG: Bad rss-counter state"),
+ "BUG: Bad rss-counter state",
+ },
+ {
+ compile("BUG: non-zero nr_ptes on freeing mm"),
+ "BUG: non-zero nr_ptes on freeing mm",
+ },
+ {
+ compile("BUG: non-zero nr_pmds on freeing mm"),
+ "BUG: non-zero nr_pmds on freeing mm",
+ },
+ {
+ compile("BUG: Dentry .* still in use \\([0-9]+\\) \\[unmount of ([^\\]]+)\\]"),
+ "BUG: Dentry still in use [unmount of %[1]v]",
+ },
+ {
+ compile("BUG: Bad page state .*"),
+ "BUG: Bad page state",
+ },
+ {
+ compile("BUG: spinlock bad magic .*"),
+ "BUG: spinlock bad magic",
+ },
+ },
+ []*regexp.Regexp{
+ // Android prints this sometimes during boot.
+ compile("Boot_DEBUG:"),
+ },
+ },
+ &oops{
+ []byte("WARNING:"),
+ []oopsFormat{
+ {
+ compile("WARNING: .* at {{SRC}} {{FUNC}}"),
+ "WARNING in %[2]v",
+ },
+ {
+ compile("WARNING: possible circular locking dependency detected(?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("WARNING: possible irq lock inversion dependency detected(?:.*\\n)+?.*just changed the state of lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected(?:.*\\n)+?.*is trying to acquire(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("WARNING: possible recursive locking detected(?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("WARNING: inconsistent lock state(?:.*\\n)+?.*takes(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "inconsistent lock state in %[1]v",
+ },
+ {
+ compile("WARNING: suspicious RCU usage(?:.*\n)+?.*?{{SRC}}"),
+ "suspicious RCU usage at %[1]v",
+ },
+ {
+ compile("WARNING: kernel stack regs at [0-9a-f]+ in [^ ]* has bad '([^']+)' value"),
+ "WARNING: kernel stack regs has bad '%[1]v' value",
+ },
+ {
+ compile("WARNING: kernel stack frame pointer at [0-9a-f]+ in [^ ]* has bad value"),
+ "WARNING: kernel stack frame pointer has bad value",
+ },
+ },
+ []*regexp.Regexp{
+ compile("WARNING: /etc/ssh/moduli does not exist, using fixed modulus"), // printed by sshd
+ },
+ },
+ &oops{
+ []byte("INFO:"),
+ []oopsFormat{
+ {
+ compile("INFO: possible circular locking dependency detected \\](?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("INFO: possible irq lock inversion dependency detected \\](?:.*\\n)+?.*just changed the state of lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected \\](?:.*\\n)+?.*is trying to acquire(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("INFO: possible recursive locking detected \\](?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "possible deadlock in %[1]v",
+ },
+ {
+ compile("INFO: inconsistent lock state \\](?:.*\\n)+?.*takes(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
+ "inconsistent lock state in %[1]v",
+ },
+ {
+ compile("INFO: rcu_preempt detected stalls(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
+ "INFO: rcu detected stall in %[1]v",
+ },
+ {
+ compile("INFO: rcu_preempt detected stalls"),
+ "INFO: rcu detected stall",
+ },
+ {
+ compile("INFO: rcu_sched detected(?: expedited)? stalls(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
+ "INFO: rcu detected stall in %[1]v",
+ },
+ {
+ compile("INFO: rcu_sched detected(?: expedited)? stalls"),
+ "INFO: rcu detected stall",
+ },
+ {
+ compile("INFO: rcu_preempt self-detected stall on CPU(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
+ "INFO: rcu detected stall in %[1]v",
+ },
+ {
+ compile("INFO: rcu_preempt self-detected stall on CPU"),
+ "INFO: rcu detected stall",
+ },
+ {
+ compile("INFO: rcu_sched self-detected stall on CPU(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
+ "INFO: rcu detected stall in %[1]v",
+ },
+ {
+ compile("INFO: rcu_sched self-detected stall on CPU"),
+ "INFO: rcu detected stall",
+ },
+ {
+ compile("INFO: rcu_bh detected stalls on CPU"),
+ "INFO: rcu detected stall",
+ },
+ {
+ compile("INFO: suspicious RCU usage(?:.*\n)+?.*?{{SRC}}"),
+ "suspicious RCU usage at %[1]v",
+ },
+ {
+ compile("INFO: task .* blocked for more than [0-9]+ seconds"),
+ "INFO: task hung",
+ },
+ },
+ []*regexp.Regexp{
+ compile("INFO: lockdep is turned off"),
+ compile("INFO: Stall ended before state dump start"),
+ compile("INFO: NMI handler .* took too long to run"),
+ compile("_INFO::"), // Android can print this during boot.
+ },
+ },
+ &oops{
+ []byte("Unable to handle kernel paging request"),
+ []oopsFormat{
+ {
+ compile("Unable to handle kernel paging request(?:.*\\n)+?.*PC is at {{FUNC}}"),
+ "unable to handle kernel paging request in %[1]v",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("general protection fault:"),
+ []oopsFormat{
+ {
+ compile("general protection fault:(?:.*\\n)+?.*RIP: [0-9]+:{{PC}} +{{PC}} +{{FUNC}}"),
+ "general protection fault in %[1]v",
+ },
+ {
+ compile("general protection fault:(?:.*\\n)+?.*RIP: [0-9]+:{{FUNC}}"),
+ "general protection fault in %[1]v",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("Kernel panic"),
+ []oopsFormat{
+ {
+ compile("Kernel panic - not syncing: Attempted to kill init!"),
+ "kernel panic: Attempted to kill init!",
+ },
+ {
+ compile("Kernel panic - not syncing: Couldn't open N_TTY ldisc for [^ ]+ --- error -[0-9]+"),
+ "kernel panic: Couldn't open N_TTY ldisc",
+ },
+ {
+ compile("Kernel panic - not syncing: (.*)"),
+ "kernel panic: %[1]v",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("kernel BUG"),
+ []oopsFormat{
+ {
+ compile("kernel BUG (.*)"),
+ "kernel BUG %[1]v",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("Kernel BUG"),
+ []oopsFormat{
+ {
+ compile("Kernel BUG (.*)"),
+ "kernel BUG %[1]v",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("BUG kmalloc-"),
+ []oopsFormat{
+ {
+ compile("BUG kmalloc-.*: Object already free"),
+ "BUG: Object already free",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("divide error:"),
+ []oopsFormat{
+ {
+ compile("divide error: (?:.*\\n)+?.*RIP: [0-9]+:{{PC}} +{{PC}} +{{FUNC}}"),
+ "divide error in %[1]v",
+ },
+ {
+ compile("divide error: (?:.*\\n)+?.*RIP: [0-9]+:{{FUNC}}"),
+ "divide error in %[1]v",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("invalid opcode:"),
+ []oopsFormat{
+ {
+ compile("invalid opcode: (?:.*\\n)+?.*RIP: [0-9]+:{{PC}} +{{PC}} +{{FUNC}}"),
+ "invalid opcode in %[1]v",
+ },
+ {
+ compile("invalid opcode: (?:.*\\n)+?.*RIP: [0-9]+:{{FUNC}}"),
+ "invalid opcode in %[1]v",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("unreferenced object"),
+ []oopsFormat{
+ {
+ compile("unreferenced object {{ADDR}} \\(size ([0-9]+)\\):(?:.*\n.*)+backtrace:.*\n.*{{PC}}.*\n.*{{PC}}.*\n.*{{PC}} {{FUNC}}"),
+ "memory leak in %[2]v (size %[1]v)",
+ },
+ },
+ []*regexp.Regexp{},
+ },
+ &oops{
+ []byte("UBSAN:"),
+ []oopsFormat{},
+ []*regexp.Regexp{},
+ },
+}
diff --git a/pkg/report/linux_test.go b/pkg/report/linux_test.go
new file mode 100644
index 000000000..a87701100
--- /dev/null
+++ b/pkg/report/linux_test.go
@@ -0,0 +1,2173 @@
+// Copyright 2015 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.
+
+package report
+
+import (
+ "fmt"
+ "regexp"
+ "strings"
+ "testing"
+
+ "github.com/google/syzkaller/pkg/symbolizer"
+)
+
+func TestLinuxParse(t *testing.T) {
+ tests := map[string]string{
+ `
+[ 772.918915] BUG: unable to handle kernel paging request at ffff88002bde1e40
+unrelateed line
+[ 772.919010] IP: [<ffffffff82d4e304>] __memset+0x24/0x30
+[ 772.919010] PGD ae2c067 PUD ae2d067 PMD 7faa5067 PTE 800000002bde1060
+[ 772.919010] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC KASAN
+[ 772.919010] Dumping ftrace buffer:
+[ 772.919010] (ftrace buffer empty)
+[ 772.919010] Modules linked in:
+[ 772.919010] CPU: 1 PID: 4070 Comm: syz-executor Not tainted 4.8.0-rc3+ #33
+[ 772.919010] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+[ 772.919010] task: ffff880066be2280 task.stack: ffff880066be8000
+[ 772.919010] RIP: 0010:[<ffffffff82d4e304>] [<ffffffff82d4e304>] __memset+0x24/0x30
+[ 772.919010] RSP: 0018:ffff880066befc88 EFLAGS: 00010006
+`: `BUG: unable to handle kernel paging request in __memset`,
+
+ `
+[ 1019.110825] BUG: unable to handle kernel paging request at 000000010000001a
+[ 1019.112065] IP: skb_release_data+0x258/0x470
+`: `BUG: unable to handle kernel paging request in skb_release_data`,
+
+ `
+BUG: unable to handle kernel paging request at 00000000ffffff8a
+IP: [<ffffffff810a376f>] __call_rcu.constprop.76+0x1f/0x280 kernel/rcu/tree.c:3046
+`: `BUG: unable to handle kernel paging request in __call_rcu`,
+
+ `
+[ 1581.999813] BUG: unable to handle kernel paging request at ffffea0000f0e440
+[ 1581.999824] IP: [<ffffea0000f0e440>] 0xffffea0000f0e440
+`: `BUG: unable to handle kernel paging request`,
+
+ `
+[ 1021.362826] kasan: CONFIG_KASAN_INLINE enabled
+[ 1021.363613] kasan: GPF could be caused by NULL-ptr deref or user memory access
+[ 1021.364461] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN
+[ 1021.365202] Dumping ftrace buffer:
+[ 1021.365408] (ftrace buffer empty)
+[ 1021.366951] Modules linked in:
+[ 1021.366951] CPU: 2 PID: 29350 Comm: syz-executor Not tainted 4.8.0-rc3+ #33
+[ 1021.366951] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+[ 1021.366951] task: ffff88005b4347c0 task.stack: ffff8800634c0000
+[ 1021.366951] RIP: 0010:[<ffffffff83408ca0>] [<ffffffff83408ca0>] drm_legacy_newctx+0x190/0x290
+[ 1021.366951] RSP: 0018:ffff8800634c7c50 EFLAGS: 00010246
+[ 1021.366951] RAX: dffffc0000000000 RBX: ffff880068f28840 RCX: ffffc900021d0000
+[ 1021.372626] RDX: 0000000000000000 RSI: ffff8800634c7cf8 RDI: ffff880064c0b600
+[ 1021.374099] RBP: ffff8800634c7c70 R08: 0000000000000000 R09: 0000000000000000
+[ 1021.374099] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
+[ 1021.375281] R13: ffff880067aa6000 R14: 0000000000000000 R15: 0000000000000000
+`: `general protection fault in drm_legacy_newctx`,
+
+ `
+[ 1722.509639] kasan: GPF could be caused by NULL-ptr deref or user memory access
+[ 1722.510515] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN
+[ 1722.511227] Dumping ftrace buffer:
+[ 1722.511384] (ftrace buffer empty)
+[ 1722.511384] Modules linked in:
+[ 1722.511384] CPU: 3 PID: 6856 Comm: syz-executor Not tainted 4.8.0-rc3-next-20160825+ #8
+[ 1722.511384] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+[ 1722.511384] task: ffff88005ea761c0 task.stack: ffff880050628000
+[ 1722.511384] RIP: 0010:[<ffffffff8213c531>] [<ffffffff8213c531>] logfs_init_inode.isra.6+0x111/0x470
+[ 1722.511384] RSP: 0018:ffff88005062fb48 EFLAGS: 00010206
+`: `general protection fault in logfs_init_inode`,
+
+ `
+general protection fault: 0000 [#1] SMP KASAN
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Modules linked in:
+CPU: 0 PID: 27388 Comm: syz-executor5 Not tainted 4.10.0-rc6+ #117
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+task: ffff88006252db40 task.stack: ffff880062090000
+RIP: 0010:__ip_options_echo+0x120a/0x1770
+RSP: 0018:ffff880062097530 EFLAGS: 00010206
+RAX: dffffc0000000000 RBX: ffff880062097910 RCX: 0000000000000000
+RDX: 0000000000000003 RSI: ffffffff83988dca RDI: 0000000000000018
+RBP: ffff8800620976a0 R08: ffff88006209791c R09: ffffed000c412f26
+R10: 0000000000000004 R11: ffffed000c412f25 R12: ffff880062097900
+R13: ffff88003a8c0a6c R14: 1ffff1000c412eb3 R15: 000000000000000d
+FS: 00007fd61b443700(0000) GS:ffff88003ec00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 000000002095f000 CR3: 0000000062876000 CR4: 00000000000006f0
+`: `general protection fault in __ip_options_echo`,
+
+ `
+==================================================================
+BUG: KASAN: slab-out-of-bounds in memcpy+0x1d/0x40 at addr ffff88003a6bd110
+Read of size 8 by task a.out/6260
+BUG: KASAN: slab-out-of-bounds in memcpy+0x1d/0x40 at addr ffff88003a6bd110
+Write of size 4 by task a.out/6260
+`: `KASAN: slab-out-of-bounds Read in memcpy`,
+
+ `
+[ 50.583499] BUG: KASAN: use-after-free in remove_wait_queue+0xfb/0x120 at addr ffff88002db3cf50
+[ 50.583499] Write of size 8 by task syzkaller_execu/10568
+`: `KASAN: use-after-free Write in remove_wait_queue`,
+
+ `
+[ 380.688570] BUG: KASAN: use-after-free in copy_from_iter+0xf30/0x15e0 at addr ffff880033f4b02a
+[ 380.688570] Read of size 4059 by task syz-executor/29957
+`: `KASAN: use-after-free Read in copy_from_iter`,
+
+ `
+[23818.431954] BUG: KASAN: null-ptr-deref on address (null)
+
+[23818.438140] Read of size 4 by task syz-executor/22534
+
+[23818.443211] CPU: 3 PID: 22534 Comm: syz-executor Tainted: G U 3.18.0 #78
+`: `KASAN: null-ptr-deref Read`,
+
+ `
+==================================================================
+BUG: KASAN: wild-memory-access on address ffe7087450a17000
+Read of size 205 by task syz-executor1/9018
+`: `KASAN: wild-memory-access Read`,
+
+ `
+[ 149.188010] BUG: unable to handle kernel NULL pointer dereference at 000000000000058c
+unrelateed line
+[ 149.188010] IP: [<ffffffff8148e81d>] __lock_acquire+0x2bd/0x3410
+`: `BUG: unable to handle kernel NULL pointer dereference in __lock_acquire`,
+
+ `
+[ 55.112844] BUG: unable to handle kernel NULL pointer dereference at 000000000000001a
+[ 55.113569] IP: skb_release_data+0x258/0x470
+`: `BUG: unable to handle kernel NULL pointer dereference in skb_release_data`,
+
+ `
+[ 50.583499] WARNING: CPU: 2 PID: 2636 at ipc/shm.c:162 shm_open.isra.5.part.6+0x74/0x80
+[ 50.583499] Modules linked in:
+`: `WARNING in shm_open`,
+
+ `
+[ 753.120788] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:316 dev_watchdog+0x648/0x770
+[ 753.122260] NETDEV WATCHDOG: eth0 (e1000): transmit queue 0 timed out
+`: `WARNING in dev_watchdog`,
+
+ `
+------------[ cut here ]------------
+WARNING: CPU: 3 PID: 1975 at fs/locks.c:241 locks_free_lock_context+0x118/0x180()
+`: `WARNING in locks_free_lock_context`,
+
+ `
+WARNING: CPU: 3 PID: 23810 at /linux-src-3.18/net/netlink/genetlink.c:1037 genl_unbind+0x110/0x130()
+`: `WARNING in genl_unbind`,
+
+ `
+=======================================================
+[ INFO: possible circular locking dependency detected ]
+2.6.32-rc6-00035-g8b17a4f #1
+-------------------------------------------------------
+kacpi_hotplug/246 is trying to acquire lock:
+ (kacpid){+.+.+.}, at: [<ffffffff8105bbd0>] flush_workqueue+0x0/0xb0
+`: `possible deadlock in flush_workqueue`,
+
+ `WARNING: possible circular locking dependency detected
+4.12.0-rc2-next-20170525+ #1 Not tainted
+------------------------------------------------------
+kworker/u4:2/54 is trying to acquire lock:
+ (&buf->lock){+.+...}, at: [<ffffffff9edb41bb>] tty_buffer_flush+0xbb/0x3a0 drivers/tty/tty_buffer.c:221
+
+but task is already holding lock:
+ (&o_tty->termios_rwsem/1){++++..}, at: [<ffffffff9eda4961>] isig+0xa1/0x4d0 drivers/tty/n_tty.c:1100
+
+which lock already depends on the new lock.
+`: `possible deadlock in tty_buffer_flush`,
+
+ `
+[ 44.025025] =========================================================
+[ 44.025025] [ INFO: possible irq lock inversion dependency detected ]
+[ 44.025025] 4.10.0-rc8+ #228 Not tainted
+[ 44.025025] ---------------------------------------------------------
+[ 44.025025] syz-executor6/1577 just changed the state of lock:
+[ 44.025025] (&(&r->consumer_lock)->rlock){+.+...}, at: [<ffffffff82de6c86>] tun_queue_purge+0xe6/0x210
+`: `possible deadlock in tun_queue_purge`,
+
+ `
+[ 121.451623] ======================================================
+[ 121.452013] [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ]
+[ 121.452013] 4.10.0-rc8+ #228 Not tainted
+[ 121.453507] ------------------------------------------------------
+[ 121.453507] syz-executor1/19557 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
+[ 121.453507] (&(&r->consumer_lock)->rlock){+.+...}, at: [<ffffffff82df4347>] tun_device_event+0x897/0xc70
+`: `possible deadlock in tun_device_event`,
+
+ `
+[ 48.981019] =============================================
+[ 48.981019] [ INFO: possible recursive locking detected ]
+[ 48.981019] 4.11.0-rc4+ #198 Not tainted
+[ 48.981019] ---------------------------------------------
+[ 48.981019] kauditd/901 is trying to acquire lock:
+[ 48.981019] (audit_cmd_mutex){+.+.+.}, at: [<ffffffff81585f59>] audit_receive+0x79/0x360
+`: `possible deadlock in audit_receive`,
+
+ `
+[ 131.449768] ======================================================
+[ 131.449777] [ INFO: possible circular locking dependency detected ]
+[ 131.449789] 3.10.37+ #1 Not tainted
+[ 131.449797] -------------------------------------------------------
+[ 131.449807] swapper/2/0 is trying to acquire lock:
+[ 131.449859] (&port_lock_key){-.-...}, at: [<c036a6dc>] serial8250_console_write+0x108/0x134
+[ 131.449866]
+`: `possible deadlock in serial8250_console_write`,
+
+ `
+[ 52.261501] =================================
+[ 52.261501] [ INFO: inconsistent lock state ]
+[ 52.261501] 4.10.0+ #60 Not tainted
+[ 52.261501] ---------------------------------
+[ 52.261501] inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
+[ 52.261501] syz-executor3/5076 [HC0[0]:SC0[0]:HE1:SE1] takes:
+[ 52.261501] (&(&hashinfo->ehash_locks[i])->rlock){+.?...}, at: [<ffffffff83a6a370>] inet_ehash_insert+0x240/0xad0
+`: `inconsistent lock state in inet_ehash_insert`,
+
+ `
+[ INFO: suspicious RCU usage. ]
+4.3.5-smp-DEV #101 Not tainted
+-------------------------------
+net/core/filter.c:1917 suspicious rcu_dereference_protected() usage!
+other info that might help us debug this:
+`: `suspicious RCU usage at net/core/filter.c:LINE`,
+
+ `
+[ 37.540474] ===============================
+[ 37.540478] [ INFO: suspicious RCU usage. ]
+[ 37.540495] 4.9.0-rc4+ #47 Not tainted
+2016/11/12 06:52:29 executing program 1:
+r0 = ioctl$KVM_CREATE_VM(0xffffffffffffffff, 0xae01, 0x0)
+[ 37.540522] -------------------------------
+[ 37.540535] ./include/linux/kvm_host.h:536 suspicious rcu_dereference_check() usage!
+[ 37.540539]
+[ 37.540539] other info that might help us debug this:
+[ 37.540539]
+[ 37.540548]
+[ 37.540548] rcu_scheduler_active = 1, debug_locks = 0
+[ 37.540557] 1 lock held by syz-executor/3985:
+[ 37.540566] #0:
+[ 37.540571] (
+[ 37.540576] &vcpu->mutex
+[ 37.540580] ){+.+.+.}
+[ 37.540609] , at:
+[ 37.540610] [<ffffffff81055862>] vcpu_load+0x22/0x70
+[ 37.540614]
+[ 37.540614] stack backtrace:
+`: `suspicious RCU usage at ./include/linux/kvm_host.h:LINE`,
+
+ `
+[ 80.586804] =====================================
+[ 734.270366] [ BUG: syz-executor/31761 still has locks held! ]
+[ 734.307462] 4.8.0+ #30 Not tainted
+[ 734.325126] -------------------------------------
+[ 734.417271] 1 lock held by syz-executor/31761:
+[ 734.442178] #0: (&pipe->mutex/1){+.+.+.}, at: [<ffffffff81844c6b>] pipe_lock+0x5b/0x70
+[ 734.451474]
+[ 734.451474] stack backtrace:
+[ 734.521109] CPU: 0 PID: 31761 Comm: syz-executor Not tainted 4.8.0+ #30
+[ 734.527900] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+[ 734.537256] ffff8800458dfa38 ffffffff82d383a9 ffffffff00000000 fffffbfff1097248
+[ 734.545358] ffff88005639a700 ffff88005639a700 dffffc0000000000 ffff88005639a700
+[ 734.553482] ffff8800530148f8 ffff8800458dfa58 ffffffff81463cb5 0000000000000000
+[ 734.562654] Call Trace:
+[ 734.565257] [<ffffffff82d383a9>] dump_stack+0x12e/0x185
+[ 734.570819] [<ffffffff81463cb5>] debug_check_no_locks_held+0x125/0x140
+[ 734.577590] [<ffffffff860bae47>] unix_stream_read_generic+0x1317/0x1b70
+[ 734.584440] [<ffffffff860b9b30>] ? unix_getname+0x290/0x290
+[ 734.590238] [<ffffffff8146870b>] ? __lock_acquire+0x7fb/0x3410
+[ 734.596306] [<ffffffff81467f10>] ? debug_check_no_locks_freed+0x3c0/0x3c0
+[ 734.603322] [<ffffffff81905282>] ? fsnotify+0xca2/0x1020
+[ 734.608874] [<ffffffff81467f10>] ? debug_check_no_locks_freed+0x3c0/0x3c0
+[ 734.615894] [<ffffffff814475b0>] ? prepare_to_wait_event+0x450/0x450
+[ 734.622486] [<ffffffff860bb7fb>] unix_stream_splice_read+0x15b/0x1d0
+[ 734.629066] [<ffffffff860bb6a0>] ? unix_stream_read_generic+0x1b70/0x1b70
+[ 734.636086] [<ffffffff82b27c3a>] ? common_file_perm+0x15a/0x3a0
+[ 734.642242] [<ffffffff860b52f0>] ? unix_accept+0x460/0x460
+[ 734.647963] [<ffffffff82a5c02e>] ? security_file_permission+0x8e/0x1e0
+[ 734.654729] [<ffffffff860bb6a0>] ? unix_stream_read_generic+0x1b70/0x1b70
+[ 734.661754] [<ffffffff85afc54e>] sock_splice_read+0xbe/0x100
+[ 734.667649] [<ffffffff85afc490>] ? kernel_sock_shutdown+0x80/0x80
+[ 734.673973] [<ffffffff818d11ff>] do_splice_to+0x10f/0x170
+[ 734.679697] [<ffffffff818d6acc>] SyS_splice+0x114c/0x15b0
+[ 734.685329] [<ffffffff81506bf4>] ? SyS_futex+0x144/0x2e0
+[ 734.690961] [<ffffffff818d5980>] ? compat_SyS_vmsplice+0x250/0x250
+[ 734.697375] [<ffffffff8146750c>] ? trace_hardirqs_on_caller+0x44c/0x5e0
+[ 734.704230] [<ffffffff8100501a>] ? trace_hardirqs_on_thunk+0x1a/0x1c
+[ 734.710821] [<ffffffff86da6d05>] entry_SYSCALL_64_fastpath+0x23/0xc6
+[ 734.717436] [<ffffffff816939e7>] ? perf_event_mmap+0x77/0xb20
+`: `BUG: still has locks held in pipe_lock`,
+
+ `
+=====================================
+[ BUG: bad unlock balance detected! ]
+4.10.0+ #179 Not tainted
+-------------------------------------
+syz-executor1/21439 is trying to release lock (sk_lock-AF_INET) at:
+[<ffffffff83f7ac8b>] sctp_sendmsg+0x2a3b/0x38a0 net/sctp/socket.c:2007
+`: `BUG: bad unlock balance in sctp_sendmsg`,
+
+ `
+[ 633.049984] =========================
+[ 633.049987] [ BUG: held lock freed! ]
+[ 633.049993] 4.10.0+ #260 Not tainted
+[ 633.049996] -------------------------
+[ 633.050005] syz-executor7/27251 is freeing memory ffff8800178f8180-ffff8800178f8a77, with a lock still held there!
+[ 633.050009] (slock-AF_INET6){+.-...}, at: [<ffffffff835f22c9>] sk_clone_lock+0x3d9/0x12c0
+`: `BUG: held lock freed in sk_clone_lock`,
+
+ `
+[ 2569.618120] BUG: Bad rss-counter state mm:ffff88005fac4300 idx:0 val:15
+`: `BUG: Bad rss-counter state`,
+
+ `
+[ 4.556968] ================================================================================
+[ 4.556972] UBSAN: Undefined behaviour in drivers/usb/core/devio.c:1517:25
+[ 4.556975] shift exponent -1 is negative
+[ 4.556979] CPU: 2 PID: 3624 Comm: usb Not tainted 4.5.0-rc1 #252
+[ 4.556981] Hardware name: Apple Inc. MacBookPro10,2/Mac-AFD8A9D944EA4843, BIOS MBP102.88Z.0106.B0A.1509130955 09/13/2015
+[ 4.556984] 0000000000000000 0000000000000000 ffffffff845c6528 ffff8802493b3c68
+[ 4.556988] ffffffff81b2e7d9 0000000000000007 ffff8802493b3c98 ffff8802493b3c80
+[ 4.556992] ffffffff81bcb87d ffffffffffffffff ffff8802493b3d10 ffffffff81bcc1c1
+[ 4.556996] Call Trace:
+[ 4.557004] [<ffffffff81b2e7d9>] dump_stack+0x45/0x6c
+[ 4.557010] [<ffffffff81bcb87d>] ubsan_epilogue+0xd/0x40
+[ 4.557015] [<ffffffff81bcc1c1>] __ubsan_handle_shift_out_of_bounds+0xf1/0x140
+[ 4.557030] [<ffffffff822247af>] ? proc_do_submiturb+0x9af/0x2c30
+[ 4.557034] [<ffffffff82226794>] proc_do_submiturb+0x2994/0x2c30
+`: `UBSAN: Undefined behaviour in drivers/usb/core/devio.c:LINE`,
+
+ `
+[ 3.805449] ================================================================================
+[ 3.805453] UBSAN: Undefined behaviour in ./arch/x86/include/asm/atomic.h:156:2
+[ 3.805455] signed integer overflow:
+[ 3.805456] -1720106381 + -1531247276 cannot be represented in type 'int'
+[ 3.805460] CPU: 3 PID: 3235 Comm: cups-browsed Not tainted 4.5.0-rc1 #252
+[ 3.805461] Hardware name: Apple Inc. MacBookPro10,2/Mac-AFD8A9D944EA4843, BIOS MBP102.88Z.0106.B0A.1509130955 09/13/2015
+[ 3.805465] 0000000000000000 0000000000000000 ffffffffa4bb0554 ffff88025f2c37c8
+[ 3.805468] ffffffff81b2e7d9 0000000000000001 ffff88025f2c37f8 ffff88025f2c37e0
+[ 3.805470] ffffffff81bcb87d ffffffff84b16a74 ffff88025f2c3868 ffffffff81bcbc4d
+[ 3.805471] Call Trace:
+[ 3.805478] <IRQ> [<ffffffff81b2e7d9>] dump_stack+0x45/0x6c
+[ 3.805483] [<ffffffff81bcb87d>] ubsan_epilogue+0xd/0x40
+[ 3.805485] [<ffffffff81bcbc4d>] handle_overflow+0xbd/0xe0
+[ 3.805490] [<ffffffff82b3409f>] ? csum_partial_copy_nocheck+0xf/0x20
+[ 3.805493] [<ffffffff81d635df>] ? get_random_bytes+0x4f/0x100
+[ 3.805496] [<ffffffff81bcbc7e>] __ubsan_handle_add_overflow+0xe/0x10
+[ 3.805500] [<ffffffff82680a4a>] ip_idents_reserve+0x9a/0xd0
+[ 3.805503] [<ffffffff826835e9>] __ip_select_ident+0xc9/0x160
+`: `UBSAN: Undefined behaviour in ./arch/x86/include/asm/atomic.h:LINE`,
+
+ `
+[ 50.583499] UBSAN: Undefined behaviour in kernel/time/hrtimer.c:310:16
+[ 50.583499] signed integer overflow:
+`: `UBSAN: Undefined behaviour in kernel/time/hrtimer.c:LINE`,
+
+ `
+------------[ cut here ]------------
+kernel BUG at fs/buffer.c:1917!
+invalid opcode: 0000 [#1] SMP
+`: `kernel BUG at fs/buffer.c:LINE!`,
+
+ `
+[ 167.347989] Disabling lock debugging due to kernel taint
+[ 167.353311] Unable to handle kernel paging request at virtual address dead000000000108
+[ 167.361225] pgd = ffffffc0a39a0000
+[ 167.364630] [dead000000000108] *pgd=0000000000000000, *pud=0000000000000000
+[ 167.371618] Internal error: Oops: 96000044 [#1] PREEMPT SMP
+[ 167.377205] CPU: 2 PID: 12170 Comm: syz-executor Tainted: G BU 3.18.0 #78
+[ 167.384944] Hardware name: Google Tegra210 Smaug Rev 1,3+ (DT)
+[ 167.390780] task: ffffffc016e04e80 ti: ffffffc016110000 task.ti: ffffffc016110000
+[ 167.398267] PC is at _snd_timer_stop.constprop.9+0x184/0x2b0
+[ 167.403931] LR is at _snd_timer_stop.constprop.9+0x184/0x2b0
+[ 167.409593] pc : [<ffffffc000d394c4>] lr : [<ffffffc000d394c4>] pstate: 200001c5
+[ 167.416985] sp : ffffffc016113990
+`: `unable to handle kernel paging request in _snd_timer_stop`,
+
+ `
+Unable to handle kernel paging request at virtual address 0c0c9ca0
+pgd = c0004000
+[0c0c9ca0] *pgd=00000000
+Internal error: Oops: 5 [#1] PREEMPT
+last sysfs file: /sys/devices/virtual/irqk/irqk/dev
+Modules linked in: cmemk dm365mmap edmak irqk
+CPU: 0 Not tainted (2.6.32-17-ridgerun #22)
+PC is at blk_rq_map_sg+0x70/0x2c0
+LR is at mmc_queue_map_sg+0x2c/0xa4
+pc : [<c01751ac>] lr : [<c025a42c>] psr: 80000013
+sp : c23e1db0 ip : c3cf8848 fp : c23e1df4
+`: `unable to handle kernel paging request in blk_rq_map_sg`,
+
+ `
+[ 2713.133889] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000013
+[ 2713.133889]
+[ 2713.136293] CPU: 2 PID: 1 Comm: init.sh Not tainted 4.8.0-rc3+ #35
+[ 2713.138395] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+[ 2713.138395] ffffffff884b8280 ffff88003e1f79b8 ffffffff82d1b1d9 ffffffff00000001
+[ 2713.138395] fffffbfff1097050 ffffffff86e90b20 ffff88003e1f7a90 dffffc0000000000
+[ 2713.138395] dffffc0000000000 ffff88006cc97af0 ffff88003e1f7a80 ffffffff816ab4e3
+[ 2713.153531] Call Trace:
+[ 2713.153531] [<ffffffff82d1b1d9>] dump_stack+0x12e/0x185
+[ 2713.153531] [<ffffffff816ab4e3>] panic+0x1e4/0x3ef
+[ 2713.153531] [<ffffffff816ab2ff>] ? set_ti_thread_flag+0x1e/0x1e
+[ 2713.153531] [<ffffffff8138e51e>] ? do_exit+0x8ce/0x2c10
+[ 2713.153531] [<ffffffff86c24cc7>] ? _raw_write_unlock_irq+0x27/0x70
+[ 2713.153531] [<ffffffff8139012f>] do_exit+0x24df/0x2c10
+[ 2713.153531] [<ffffffff8138dc50>] ? mm_update_next_owner+0x640/0x640
+`: `kernel panic: Attempted to kill init!`,
+
+ `
+[ 616.344091] Kernel panic - not syncing: Fatal exception in interrupt
+`: `kernel panic: Fatal exception in interrupt`,
+
+ `
+[ 616.309156] divide error: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN
+[ 616.310026] Dumping ftrace buffer:
+[ 616.310085] (ftrace buffer empty)
+[ 616.310085] Modules linked in:
+[ 616.310085] CPU: 1 PID: 22257 Comm: syz-executor Not tainted 4.8.0-rc3+ #35
+[ 616.310085] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+[ 616.312546] task: ffff88002fe9e580 task.stack: ffff8800316a8000
+[ 616.312546] RIP: 0010:[<ffffffff8575b41c>] [<ffffffff8575b41c>] snd_hrtimer_callback+0x1bc/0x3c0
+[ 616.312546] RSP: 0018:ffff88003ed07d98 EFLAGS: 00010006
+`: `divide error in snd_hrtimer_callback`,
+
+ `
+divide error: 0000 [#1] SMP KASAN
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Modules linked in:
+CPU: 2 PID: 5664 Comm: syz-executor5 Not tainted 4.10.0-rc6+ #122
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+task: ffff88003a46adc0 task.stack: ffff880036a00000
+RIP: 0010:__tcp_select_window+0x6db/0x920
+RSP: 0018:ffff880036a07638 EFLAGS: 00010212
+RAX: 0000000000000480 RBX: ffff880036a077d0 RCX: ffffc900030db000
+RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88003809c3b5
+RBP: ffff880036a077f8 R08: ffff880039de5dc0 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000480
+R13: 0000000000000000 R14: ffff88003809bb00 R15: 0000000000000000
+FS: 00007f35ecf32700(0000) GS:ffff88006de00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 00000000205fb000 CR3: 0000000032467000 CR4: 00000000000006e0
+`: `divide error in __tcp_select_window`,
+
+ `
+unreferenced object 0xffff880039a55260 (size 64):
+ comm "executor", pid 11746, jiffies 4298984475 (age 16.078s)
+ hex dump (first 32 bytes):
+ 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 /...............
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ backtrace:
+ [<ffffffff848a2f5f>] sock_kmalloc+0x7f/0xc0 net/core/sock.c:1774
+ [<ffffffff84e5bea0>] do_ipv6_setsockopt.isra.7+0x15d0/0x2830 net/ipv6/ipv6_sockglue.c:483
+ [<ffffffff84e5d19b>] ipv6_setsockopt+0x9b/0x140 net/ipv6/ipv6_sockglue.c:885
+ [<ffffffff8544616c>] sctp_setsockopt+0x15c/0x36c0 net/sctp/socket.c:3702
+ [<ffffffff848a2035>] sock_common_setsockopt+0x95/0xd0 net/core/sock.c:2645
+ [<ffffffff8489f1d8>] SyS_setsockopt+0x158/0x240 net/socket.c:1736
+`: `memory leak in ipv6_setsockopt (size 64)`,
+
+ `
+unreferenced object 0xffff8800342540c0 (size 1864):
+ comm "a.out", pid 24109, jiffies 4299060398 (age 27.984s)
+ hex dump (first 32 bytes):
+ 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
+ 0a 00 07 40 00 00 00 00 00 00 00 00 00 00 00 00 ...@............
+ backtrace:
+ [<ffffffff85c73a22>] kmemleak_alloc+0x72/0xc0 mm/kmemleak.c:915
+ [<ffffffff816cc14d>] kmem_cache_alloc+0x12d/0x2c0 mm/slub.c:2607
+ [<ffffffff84b642c9>] sk_prot_alloc+0x69/0x340 net/core/sock.c:1344
+ [<ffffffff84b6d36a>] sk_alloc+0x3a/0x6b0 net/core/sock.c:1419
+ [<ffffffff850c6d57>] inet6_create+0x2d7/0x1000 net/ipv6/af_inet6.c:173
+ [<ffffffff84b5f47c>] __sock_create+0x37c/0x640 net/socket.c:1162
+`: `memory leak in sk_prot_alloc (size 1864)`,
+
+ `
+unreferenced object 0xffff880133c63800 (size 1024):
+ comm "exe", pid 1521, jiffies 4294894652
+ backtrace:
+ [<ffffffff810f8f36>] create_object+0x126/0x2b0
+ [<ffffffff810f91d5>] kmemleak_alloc+0x25/0x60
+ [<ffffffff810f32a3>] __kmalloc+0x113/0x200
+ [<ffffffff811aa061>] ext4_mb_init+0x1b1/0x570
+ [<ffffffff8119b3d2>] ext4_fill_super+0x1de2/0x26d0
+`: `memory leak in __kmalloc (size 1024)`,
+
+ `
+unreferenced object 0xc625e000 (size 2048):
+ comm "swapper", pid 1, jiffies 4294937521
+ backtrace:
+ [<c00c89f0>] create_object+0x11c/0x200
+ [<c00c6764>] __kmalloc_track_caller+0x138/0x178
+ [<c01d78c0>] __alloc_skb+0x4c/0x100
+ [<c01d8490>] dev_alloc_skb+0x18/0x3c
+ [<c0198b48>] eth_rx_fill+0xd8/0x3fc
+ [<c019ac74>] mv_eth_start_internals+0x30/0xf8
+`: `memory leak in __alloc_skb (size 2048)`,
+
+ `
+unreferenced object 0xdb8040c0 (size 20):
+ comm "swapper", pid 0, jiffies 4294667296
+ backtrace:
+ [<c04fd8b3>] kmemleak_alloc+0x193/0x2b8
+ [<c04f5e73>] kmem_cache_alloc+0x11e/0x174
+ [<c0aae5a7>] debug_objects_mem_init+0x63/0x1d9
+ [<c0a86a62>] start_kernel+0x2da/0x38d
+ [<c0a86090>] i386_start_kernel+0x7f/0x98
+ [<ffffffff>] 0xffffffff
+`: `memory leak in debug_objects_mem_init (size 20)`,
+
+ `
+BUG: sleeping function called from invalid context at include/linux/wait.h:1095
+in_atomic(): 1, irqs_disabled(): 0, pid: 3658, name: syz-fuzzer
+`: `BUG: sleeping function called from invalid context at include/linux/wait.h:LINE `,
+
+ `
+[ 277.780013] INFO: rcu_sched self-detected stall on CPU
+[ 277.781045] INFO: rcu_sched detected stalls on CPUs/tasks:
+[ 277.781153] 1-...: (65000 ticks this GP) idle=395/140000000000001/0 softirq=122875/122875 fqs=16248
+[ 277.781197] (detected by 0, t=65002 jiffies, g=72940, c=72939, q=1777)
+[ 277.781212] Sending NMI from CPU 0 to CPUs 1:
+[ 277.782014] NMI backtrace for cpu 1
+[ 277.782014] CPU: 1 PID: 12579 Comm: syz-executor0 Not tainted 4.11.0-rc3+ #71
+[ 277.782014] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+[ 277.782014] task: ffff8801d379e140 task.stack: ffff8801cd590000
+[ 277.782014] RIP: 0010:io_serial_in+0x6b/0x90
+[ 277.782014] RSP: 0018:ffff8801dbf066a0 EFLAGS: 00000002
+[ 277.782014] RAX: dffffc0000000000 RBX: 00000000000003fd RCX: 0000000000000000
+[ 277.782014] RDX: 00000000000003fd RSI: 0000000000000005 RDI: ffffffff87020018
+[ 277.782014] RBP: ffff8801dbf066b0 R08: 0000000000000003 R09: 0000000000000001
+[ 277.782014] R10: dffffc0000000000 R11: ffffffff867ba200 R12: ffffffff8701ffe0
+[ 277.782014] R13: 0000000000000020 R14: fffffbfff0e04041 R15: fffffbfff0e04005
+[ 277.782014] FS: 00007fce6fc10700(0000) GS:ffff8801dbf00000(0000) knlGS:0000000000000000
+[ 277.782014] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+[ 277.782014] CR2: 000000002084fffc CR3: 00000001c4500000 CR4: 00000000001406e0
+[ 277.782014] Call Trace:
+[ 277.782014] <IRQ>
+[ 277.782014] wait_for_xmitr+0x89/0x1c0
+[ 277.782014] ? wait_for_xmitr+0x1c0/0x1c0
+[ 277.782014] serial8250_console_putchar+0x1f/0x60
+[ 277.782014] uart_console_write+0x57/0xe0
+[ 277.782014] serial8250_console_write+0x423/0x840
+[ 277.782014] ? check_noncircular+0x20/0x20
+[ 277.782014] hrtimer_interrupt+0x1c2/0x5e0
+[ 277.782014] local_apic_timer_interrupt+0x6f/0xe0
+[ 277.782014] smp_apic_timer_interrupt+0x71/0xa0
+[ 277.782014] apic_timer_interrupt+0x93/0xa0
+[ 277.782014] RIP: 0010:debug_lockdep_rcu_enabled.part.19+0xf/0x60
+[ 277.782014] RSP: 0018:ffff8801cd596778 EFLAGS: 00000202 ORIG_RAX: ffffffffffffff10
+[ 277.782014] RAX: dffffc0000000000 RBX: 1ffff10039ab2cf7 RCX: ffffc90001758000
+[ 277.782014] RDX: 0000000000000004 RSI: ffffffff840561f1 RDI: ffffffff852a75c0
+[ 277.782014] RBP: ffff8801cd596780 R08: 0000000000000001 R09: 0000000000000000
+[ 277.782014] R10: dffffc0000000000 R11: ffffffff867ba200 R12: 1ffff10039ab2d1b
+[ 277.782014] R13: ffff8801c44d1880 R14: ffff8801cd596918 R15: ffff8801d9b47840
+[ 277.782014] </IRQ>
+[ 277.782014] ? __sctp_write_space+0x5b1/0x920
+[ 277.782014] debug_lockdep_rcu_enabled+0x77/0x90
+[ 277.782014] __sctp_write_space+0x5b6/0x920
+[ 277.782014] ? __sctp_write_space+0x3f7/0x920
+[ 277.782014] ? sctp_transport_lookup_process+0x190/0x190
+[ 277.782014] ? trace_hardirqs_on_thunk+0x1a/0x1c
+`: `INFO: rcu detected stall in __sctp_write_space`,
+
+ `
+INFO: rcu_preempt detected stalls on CPUs/tasks: { 2} (detected by 0, t=65008 jiffies, g=48068, c=48067, q=7339)
+`: `INFO: rcu detected stall`,
+
+ `
+[ 317.168127] INFO: rcu_sched detected stalls on CPUs/tasks: { 0} (detected by 1, t=2179 jiffies, g=740, c=739, q=1)
+`: `INFO: rcu detected stall`,
+
+ `
+[ 50.583499] something
+[ 50.583499] INFO: rcu_preempt self-detected stall on CPU
+[ 50.583499] 0: (20822 ticks this GP) idle=94b/140000000000001/0
+`: `INFO: rcu detected stall`,
+
+ `
+[ 50.583499] INFO: rcu_sched self-detected stall on CPU
+`: `INFO: rcu detected stall`,
+
+ `
+[ 152.002376] INFO: rcu_bh detected stalls on CPUs/tasks:
+`: `INFO: rcu detected stall`,
+
+ `
+[ 72.159680] INFO: rcu_sched detected expedited stalls on CPUs/tasks: {
+`: `INFO: rcu detected stall`,
+
+ `
+BUG: spinlock lockup suspected on CPU#2, syz-executor/12636
+`: `BUG: spinlock lockup suspected`,
+
+ `
+BUG: soft lockup - CPU#3 stuck for 11s! [syz-executor:643]
+`: `BUG: soft lockup`,
+
+ `
+BUG: spinlock lockup suspected on CPU#2, syz-executor/12636
+BUG: soft lockup - CPU#3 stuck for 11s! [syz-executor:643]
+`: `BUG: spinlock lockup suspected`,
+
+ `
+BUG: soft lockup - CPU#3 stuck for 11s! [syz-executor:643]
+BUG: spinlock lockup suspected on CPU#2, syz-executor/12636
+`: `BUG: soft lockup`,
+
+ `
+[ 213.269287] BUG: spinlock recursion on CPU#0, syz-executor7/5032
+[ 213.281506] lock: 0xffff88006c122d00, .magic: dead4ead, .owner: syz-executor7/5032, .owner_cpu: -1
+[ 213.285112] CPU: 0 PID: 5032 Comm: syz-executor7 Not tainted 4.9.0-rc7+ #58
+[ 213.285112] Hardware name: Google Google/Google, BIOS Google 01/01/2011
+[ 213.285112] ffff880057c17538 ffffffff834c3ae9 ffffffff00000000 1ffff1000af82e3a
+[ 213.285112] ffffed000af82e32 0000000041b58ab3 ffffffff89580db8 ffffffff834c37fb
+[ 213.285112] ffff880068ad8858 ffff880068ad8860 1ffff1000af82e2c 0000000041b58ab3
+[ 213.285112] Call Trace:
+[ 213.285112] [<ffffffff834c3ae9>] dump_stack+0x2ee/0x3f5
+[ 213.618060] [<ffffffff834c37fb>] ? arch_local_irq_restore+0x53/0x53
+[ 213.618060] [<ffffffff81576cd2>] spin_dump+0x152/0x280
+[ 213.618060] [<ffffffff81577284>] do_raw_spin_lock+0x3f4/0x5d0
+[ 213.618060] [<ffffffff881a2750>] _raw_spin_lock+0x40/0x50
+[ 213.618060] [<ffffffff814b7615>] ? __task_rq_lock+0xf5/0x330
+[ 213.618060] [<ffffffff814b7615>] __task_rq_lock+0xf5/0x330
+[ 213.618060] [<ffffffff814c89b2>] wake_up_new_task+0x592/0x1000
+`: `BUG: spinlock recursion`,
+
+ `
+[ 843.240752] INFO: task getty:2986 blocked for more than 120 seconds.
+[ 843.247365] Not tainted 3.18.0-13280-g93f6785-dirty #12
+[ 843.253777] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
+[ 843.261764] getty D ffffffff83e27d60 28152 2986 1 0x00000002
+[ 843.269316] ffff88005bb6f908 0000000000000046 ffff880050b6ab70 ffff880061e1c5d0
+[ 843.277435] fffffbfff07c4802 ffff880061e1cde8 ffffffff83e27d60 ffff88005cb71580
+[ 843.285515] ffff88005bb6f968 0000000000000000 1ffff1000b76df2b ffff88005cb71580
+[ 843.293802] Call Trace:
+[ 843.296385] [<ffffffff835bdeb4>] schedule+0x64/0x160
+[ 843.301593] [<ffffffff835c9c1a>] schedule_timeout+0x2fa/0x5d0
+[ 843.307563] [<ffffffff835c9920>] ? console_conditional_schedule+0x30/0x30
+[ 843.314790] [<ffffffff811c1eb2>] ? pick_next_task_fair+0xeb2/0x1680
+[ 843.321296] [<ffffffff81d9b3ed>] ? check_preemption_disabled+0x3d/0x210
+[ 843.328311] [<ffffffff835cb4ec>] ldsem_down_write+0x1ac/0x357
+[ 843.334295] [<ffffffff835cb340>] ? ldsem_down_read+0x3a0/0x3a0
+[ 843.340437] [<ffffffff835bec62>] ? preempt_schedule+0x62/0xa0
+[ 843.346418] [<ffffffff835cbdd2>] tty_ldisc_lock_pair_timeout+0xb2/0x160
+[ 843.353363] [<ffffffff81f8b03f>] tty_ldisc_hangup+0x21f/0x720
+`: `INFO: task hung`,
+
+ `
+BUG UNIX (Not tainted): kasan: bad access detected
+`: ``,
+
+ `
+[901320.960000] INFO: lockdep is turned off.
+`: ``,
+
+ `
+INFO: Stall ended before state dump start
+`: ``,
+
+ `
+WARNING: /etc/ssh/moduli does not exist, using fixed modulus
+`: ``,
+
+ `
+[ 1579.244514] BUG: KASAN: slab-out-of-bounds in ip6_fragment+0x1052/0x2d80 at addr ffff88004ec29b58
+`: `KASAN: slab-out-of-bounds in ip6_fragment at addr ADDR`,
+
+ `
+[ 982.271203] BUG: spinlock bad magic on CPU#0, syz-executor12/24932
+`: `BUG: spinlock bad magic`,
+
+ `
+[ 374.860710] BUG: KASAN: use-after-free in do_con_write.part.23+0x1c50/0x1cb0 at addr ffff88000012c43a
+`: `KASAN: use-after-free in do_con_write.part.23 at addr ADDR`,
+
+ `
+[ 163.314570] WARNING: kernel stack regs at ffff8801d100fea8 in syz-executor1:16059 has bad 'bp' value ffff8801d100ff28
+`: `WARNING: kernel stack regs has bad 'bp' value`,
+
+ `
+[ 76.825838] BUG: using __this_cpu_add() in preemptible [00000000] code: syz-executor0/10076
+`: `BUG: using __this_cpu_add() in preemptible [ADDR] code: syz-executor`,
+
+ `
+[ 367.131148] BUG kmalloc-8 (Tainted: G B ): Object already free
+`: `BUG: Object already free`,
+
+ `
+[ 92.396607] APIC base relocation is unsupported by KVM
+[ 95.445015] INFO: NMI handler (perf_event_nmi_handler) took too long to run: 1.356 msecs
+[ 95.445015] perf: interrupt took too long (3985 > 3976), lowering kernel.perf_event_max_sample_rate to 50000
+`: ``,
+
+ `
+[ 92.396607] general protection fault: 0000 [#1] [ 387.811073] audit: type=1326 audit(1486238739.637:135): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=10020 comm="syz-executor1" exe="/root/syz-executor1" sig=31 arch=c000003e syscall=202 compat=0 ip=0x44fad9 code=0x0
+`: `general protection fault: 0000 [#1] [ 387.NUM] audit: type=1326 audit(ADDR.637:LINE): auid=ADDR uid=0 gid=0 ses=ADDR pid=NUM comm="syz-executor" exe="/root/syz-executor" sig=31 arc`,
+
+ `
+[ 40.438790] BUG: Bad page map in process syz-executor6 pte:ffff8801a700ff00 pmd:1a700f067
+[ 40.447217] addr:00000000009ca000 vm_flags:00100073 anon_vma:ffff8801d16f20e0 mapping: (null) index:9ca
+[ 40.457560] file: (null) fault: (null) mmap: (null) readpage: (null)
+`: `BUG: Bad page map in process syz-executor pte:ADDR pmd:ADDR`,
+
+ `
+======================================================
+WARNING: possible circular locking dependency detected
+4.12.0-rc2-next-20170529+ #1 Not tainted
+------------------------------------------------------
+kworker/u4:2/58 is trying to acquire lock:
+ (&buf->lock){+.+...}, at: [<ffffffffa41b4e5b>] tty_buffer_flush+0xbb/0x3a0 drivers/tty/tty_buffer.c:221
+
+but task is already holding lock:
+ (&o_tty->termios_rwsem/1){++++..}, at: [<ffffffffa41a5601>] isig+0xa1/0x4d0 drivers/tty/n_tty.c:1100
+
+which lock already depends on the new lock.
+`: `possible deadlock in tty_buffer_flush`,
+
+ `
+Buffer I/O error on dev loop0, logical block 6, async page read
+BUG: Dentry ffff880175978600{i=8bb9,n=lo} still in use (1) [unmount of proc proc]
+------------[ cut here ]------------
+WARNING: CPU: 1 PID: 8922 at fs/dcache.c:1445 umount_check+0x246/0x2c0 fs/dcache.c:1436
+Kernel panic - not syncing: panic_on_warn set ...
+`: `BUG: Dentry still in use [unmount of proc proc]`,
+
+ `
+WARNING: kernel stack frame pointer at ffff88003e1f7f40 in migration/1:14 has bad value ffffffff85632fb0
+unwind stack type:0 next_sp: (null) mask:0x6 graph_idx:0
+ffff88003ed06ef0: ffff88003ed06f78 (0xffff88003ed06f78)
+`: `WARNING: kernel stack frame pointer has bad value`,
+
+ `
+BUG: Bad page state in process syz-executor9 pfn:199e00
+page:ffffea00059a9000 count:0 mapcount:0 mapping: (null) index:0x20a00
+TCP: request_sock_TCPv6: Possible SYN flooding on port 20032. Sending cookies. Check SNMP counters.
+flags: 0x200000000040019(locked|uptodate|dirty|swapbacked)
+raw: 0200000000040019 0000000000000000 0000000000020a00 00000000ffffffff
+raw: dead000000000100 dead000000000200 0000000000000000
+page dumped because: PAGE_FLAGS_CHECK_AT_FREE flag(s)
+`: `BUG: Bad page state`,
+
+ `
+Kernel panic - not syncing: Couldn't open N_TTY ldisc for ptm1 --- error -12.
+CPU: 1 PID: 14836 Comm: syz-executor5 Not tainted 4.12.0-rc4+ #15
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+`: `kernel panic: Couldn't open N_TTY ldisc`,
+
+ `
+===============================
+[ INFO: suspicious RCU usage. ]
+4.3.5+ #8 Not tainted
+-------------------------------
+net/ipv6/ip6_flowlabel.c:544 suspicious rcu_dereference_check() usage!
+
+other info that might help us debug this:
+`: `suspicious RCU usage at net/ipv6/ip6_flowlabel.c:LINE`,
+
+ `[ 37.991733] [4:SdpManagerServi: 3874] KEK_PACK[3874] __add_kek :: item ffffffc822340400
+[ 38.018742] [4: system_server: 3344] logger: !@Boot_DEBUG: start networkManagement
+[ 38.039013] [2: kworker/2:1: 1608] Trustonic TEE: c01|TL_TZ_KEYSTORE: Starting
+`: ``,
+
+ `[ 16.761978] [syscamera][msm_companion_pll_init::526][BIN_INFO::0x0008]
+[ 16.762666] [syscamera][msm_companion_pll_init::544][WAFER_INFO::0xcf80]
+[ 16.763144] [syscamera][msm_companion_pll_init::594][BIN_INFO::0x0008][WAFER_INFO::0xcf80][voltage 0.775]
+`: ``,
+ }
+ reporter, err := NewReporter("linux", "", "", nil, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ for log, crash := range tests {
+ if strings.Index(log, "\r\n") != -1 {
+ continue
+ }
+ tests[strings.Replace(log, "\n", "\r\n", -1)] = crash
+ }
+ for log, crash := range tests {
+ containsCrash := reporter.ContainsCrash([]byte(log))
+ expectCrash := (crash != "")
+ if expectCrash && !containsCrash {
+ t.Fatalf("ContainsCrash did not find crash")
+ }
+ if !expectCrash && containsCrash {
+ t.Fatalf("ContainsCrash found unexpected crash")
+ }
+ desc, _, _, _ := reporter.Parse([]byte(log))
+ if desc == "" && crash != "" {
+ t.Fatalf("did not find crash message '%v' in:\n%v", crash, log)
+ }
+ if desc != "" && crash == "" {
+ t.Fatalf("found bogus crash message '%v' in:\n%v", desc, log)
+ }
+ if desc != crash {
+ t.Fatalf("extracted bad crash message:\n%+q\nwant:\n%+q", desc, crash)
+ }
+ }
+}
+
+func TestLinuxIgnores(t *testing.T) {
+ reporter, err := NewReporter("linux", "", "", nil, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ ignores1 := []*regexp.Regexp{
+ regexp.MustCompile("BUG: bug3"),
+ }
+ reporter1, err := NewReporter("linux", "", "", nil, ignores1)
+ if err != nil {
+ t.Fatal(err)
+ }
+ ignores2 := []*regexp.Regexp{
+ regexp.MustCompile("BUG: bug3"),
+ regexp.MustCompile("BUG: bug1"),
+ }
+ reporter2, err := NewReporter("linux", "", "", nil, ignores2)
+ if err != nil {
+ t.Fatal(err)
+ }
+ ignores3 := []*regexp.Regexp{
+ regexp.MustCompile("BUG: bug3"),
+ regexp.MustCompile("BUG: bug1"),
+ regexp.MustCompile("BUG: bug2"),
+ }
+ reporter3, err := NewReporter("linux", "", "", nil, ignores3)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ const log = `
+ BUG: bug1
+ BUG: bug2
+ `
+ if !reporter.ContainsCrash([]byte(log)) {
+ t.Fatalf("no crash")
+ }
+ if desc, _, _, _ := reporter.Parse([]byte(log)); desc != "BUG: bug1" {
+ t.Fatalf("want `BUG: bug1`, found `%v`", desc)
+ }
+
+ if !reporter1.ContainsCrash([]byte(log)) {
+ t.Fatalf("no crash")
+ }
+ if desc, _, _, _ := reporter1.Parse([]byte(log)); desc != "BUG: bug1" {
+ t.Fatalf("want `BUG: bug1`, found `%v`", desc)
+ }
+
+ if !reporter2.ContainsCrash([]byte(log)) {
+ t.Fatalf("no crash")
+ }
+ if desc, _, _, _ := reporter2.Parse([]byte(log)); desc != "BUG: bug2" {
+ t.Fatalf("want `BUG: bug2`, found `%v`", desc)
+ }
+
+ if reporter3.ContainsCrash([]byte(log)) {
+ t.Fatalf("found crash, should be ignored")
+ }
+ if desc, _, _, _ := reporter3.Parse([]byte(log)); desc != "" {
+ t.Fatalf("found `%v`, should be ignored", desc)
+ }
+}
+
+func TestLinuxParseText(t *testing.T) {
+ tests := map[string]string{
+ `mmap(&(0x7f00008dd000/0x1000)=nil, (0x1000), 0x3, 0x32, 0xffffffffffffffff, 0x0)
+getsockopt$NETROM_N2(r2, 0x103, 0x3, &(0x7f00008de000-0x4)=0x1, &(0x7f00008dd000)=0x4)
+[ 522.560667] nla_parse: 5 callbacks suppressed
+[ 522.565344] netlink: 3 bytes leftover after parsing attributes in process 'syz-executor5'.
+[ 536.429346] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 11s! [syz-executor7:16813]
+mmap(&(0x7f0000557000/0x2000)=nil, (0x2000), 0x1, 0x11, r2, 0x1b)
+[ 536.437530] Modules linked in:
+[ 536.440808] CPU: 1 PID: 16813 Comm: syz-executor7 Not tainted 4.3.5-smp-DEV #119`: `nla_parse: 5 callbacks suppressed
+netlink: 3 bytes leftover after parsing attributes in process 'syz-executor5'.
+NMI watchdog: BUG: soft lockup - CPU#1 stuck for 11s! [syz-executor7:16813]
+Modules linked in:
+CPU: 1 PID: 16813 Comm: syz-executor7 Not tainted 4.3.5-smp-DEV #119
+`,
+
+ // Raw 'dmesg -r' and /proc/kmsg output.
+ `<6>[ 85.501187] WARNING: foo
+<6>[ 85.501187] nouveau [ DRM] suspending kernel object tree...
+executing program 1:
+<6>[ 85.525111] nouveau [ DRM] nouveau suspended
+<14>[ 85.912347] init: computing context for service 'clear-bcb'`: `WARNING: foo
+nouveau [ DRM] suspending kernel object tree...
+nouveau [ DRM] nouveau suspended
+init: computing context for service 'clear-bcb'
+`,
+
+ `[ 94.864848] line 0
+[ 94.864848] line 1
+[ 94.864848] line 2
+[ 94.864848] line 3
+[ 94.864848] line 4
+[ 94.864848] line 5
+[ 95.145581] ==================================================================
+[ 95.152992] BUG: KASAN: use-after-free in snd_seq_queue_alloc+0x670/0x690 at addr ffff8801d0c6b080
+[ 95.162080] Read of size 4 by task syz-executor2/5764`: `line 2
+line 3
+line 4
+line 5
+==================================================================
+BUG: KASAN: use-after-free in snd_seq_queue_alloc+0x670/0x690 at addr ffff8801d0c6b080
+Read of size 4 by task syz-executor2/5764
+`,
+ }
+ reporter, err := NewReporter("linux", "", "", nil, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ for log, text0 := range tests {
+ if desc, text, _, _ := reporter.Parse([]byte(log)); string(text) != text0 {
+ t.Logf("log:\n%s", log)
+ t.Logf("want text:\n%s", text0)
+ t.Logf("got text:\n%s", text)
+ t.Fatalf("bad text, desc: '%v'", desc)
+ }
+ }
+}
+
+func TestLinuxSymbolizeLine(t *testing.T) {
+ tests := []struct {
+ line string
+ result string
+ }{
+ // Normal symbolization.
+ {
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x101/0x185\n",
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x101/0x185 foo.c:555\n",
+ },
+ {
+ "RIP: 0010:[<ffffffff8188c0e6>] [<ffffffff8188c0e6>] foo+0x101/0x185\n",
+ "RIP: 0010:[<ffffffff8188c0e6>] [<ffffffff8188c0e6>] foo+0x101/0x185 foo.c:555\n",
+ },
+ // Strip "./" file prefix.
+ {
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x111/0x185\n",
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x111/0x185 foo.h:111\n",
+ },
+ // Needs symbolization, but symbolizer returns nothing.
+ {
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x121/0x185\n",
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x121/0x185\n",
+ },
+ // Needs symbolization, but symbolizer returns error.
+ {
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x131/0x185\n",
+ "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x131/0x185\n",
+ },
+ // Needs symbolization, but symbol is missing.
+ {
+ "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0x131/0x185\n",
+ "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0x131/0x185\n",
+ },
+ // Bad offset.
+ {
+ "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0xffffffffffffffffffff/0x185\n",
+ "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0xffffffffffffffffffff/0x185\n",
+ },
+ // Should not be symbolized.
+ {
+ "WARNING: CPU: 2 PID: 2636 at ipc/shm.c:162 foo+0x101/0x185\n",
+ "WARNING: CPU: 2 PID: 2636 at ipc/shm.c:162 foo+0x101/0x185 foo.c:555\n",
+ },
+ // Tricky function name.
+ {
+ " [<ffffffff84e5bea0>] do_ipv6_setsockopt.isra.7.part.3+0x101/0x2830 \n",
+ " [<ffffffff84e5bea0>] do_ipv6_setsockopt.isra.7.part.3+0x101/0x2830 net.c:111 \n",
+ },
+ // Old KASAN frame format (with tab).
+ {
+ "[ 50.419727] baz+0x101/0x200\n",
+ "[ 50.419727] baz+0x101/0x200 baz.c:100\n",
+ },
+ // Inlined frames.
+ {
+ " [<ffffffff84e5bea0>] foo+0x141/0x185\n",
+ " [<ffffffff84e5bea0>] inlined1 net.c:111 [inline]\n" +
+ " [<ffffffff84e5bea0>] inlined2 mm.c:222 [inline]\n" +
+ " [<ffffffff84e5bea0>] foo+0x141/0x185 kasan.c:333\n",
+ },
+ // Several symbols with the same name.
+ {
+ "[<ffffffff82d1b1d9>] baz+0x101/0x200\n",
+ "[<ffffffff82d1b1d9>] baz+0x101/0x200 baz.c:100\n",
+ },
+ }
+ symbols := map[string][]symbolizer.Symbol{
+ "foo": []symbolizer.Symbol{
+ {Addr: 0x1000000, Size: 0x190},
+ },
+ "do_ipv6_setsockopt.isra.7.part.3": []symbolizer.Symbol{
+ {Addr: 0x2000000, Size: 0x2830},
+ },
+ "baz": []symbolizer.Symbol{
+ {Addr: 0x3000000, Size: 0x100},
+ {Addr: 0x4000000, Size: 0x200},
+ {Addr: 0x5000000, Size: 0x300},
+ },
+ }
+ symb := func(bin string, pc uint64) ([]symbolizer.Frame, error) {
+ if bin != "vmlinux" {
+ return nil, fmt.Errorf("unknown pc 0x%x", pc)
+ }
+ switch pc {
+ case 0x1000100:
+ return []symbolizer.Frame{
+ {
+ File: "/linux/foo.c",
+ Line: 555,
+ },
+ }, nil
+ case 0x1000110:
+ return []symbolizer.Frame{
+ {
+ File: "/linux/./foo.h",
+ Line: 111,
+ },
+ }, nil
+ case 0x1000120:
+ return nil, nil
+ case 0x1000130:
+ return nil, fmt.Errorf("unknown pc 0x%x", pc)
+ case 0x2000100:
+ return []symbolizer.Frame{
+ {
+ File: "/linux/net.c",
+ Line: 111,
+ },
+ }, nil
+ case 0x1000140:
+ return []symbolizer.Frame{
+ {
+ Func: "inlined1",
+ File: "/linux/net.c",
+ Line: 111,
+ Inline: true,
+ },
+ {
+ Func: "inlined2",
+ File: "/linux/mm.c",
+ Line: 222,
+ Inline: true,
+ },
+ {
+ Func: "noninlined3",
+ File: "/linux/kasan.c",
+ Line: 333,
+ Inline: false,
+ },
+ }, nil
+ case 0x4000100:
+ return []symbolizer.Frame{
+ {
+ File: "/linux/baz.c",
+ Line: 100,
+ },
+ }, nil
+ default:
+ return nil, fmt.Errorf("unknown pc 0x%x", pc)
+ }
+ }
+ for i, test := range tests {
+ t.Run(fmt.Sprint(i), func(t *testing.T) {
+ result := symbolizeLine(symb, symbols, "vmlinux", "/linux/", []byte(test.line))
+ if test.result != string(result) {
+ t.Errorf("want %q\n\t get %q", test.result, string(result))
+ }
+ })
+ }
+}
+
+func TestLinuxParseReport(t *testing.T) {
+ reporter, err := NewReporter("linux", "", "", nil, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ for i, test := range parseReportTests {
+ t.Run(fmt.Sprint(i), func(t *testing.T) {
+ _, text, _, _ := reporter.Parse([]byte(test.in))
+ if test.out != string(text) {
+ t.Logf("expect:\n%v", test.out)
+ t.Logf("got:\n%v", string(text))
+ t.Fail()
+ }
+ })
+ }
+}
+
+var parseReportTests = []struct {
+ in string
+ out string
+}{
+ // Test that we strip the report after "Kernel panic - not syncing" line.
+ {
+ in: `clock_gettime(0x0, &(0x7f0000475000-0x10)={<r2=>0x0, <r3=>0x0})
+write$sndseq(0xffffffffffffffff, &(0x7f0000929000-0x150)=[{0x3197a6bf, 0x0, 0x4, 0x100, @tick=0x6, {0x7, 0x6c}, {0x2, 0x9}, @connect={{0x1ff, 0x1}, {0x3ff, 0x118c}}}, {0x100000000, 0x2, 0xfffffffffffffffa, 0x2, @tick=0x5d0, {0xf556, 0x7}, {0x3, 0x1000}, @quote={{0x5, 0xfffffffffffffff7}, 0x401, &(0x7f000084a000)={0x10000, 0x9d, 0x8, 0x4, @tick=0x336f, {0x5, 0x1d}, {0x8, 0x7}, @time=@time={0x0, 0x989680}}}}, {0x200, 0x0, 0x99a, 0x6, @tick=0x1, {0x1, 0x158}, {0x200, 0x5}, @connect={{0x8, 0x4}, {0xf2, 0x100000000}}}, {0x40, 0xfffffffffffffffa, 0x100000000, 0x5, @time={r2, r3+10000000}, {0x7, 0x5}, {0x3, 0x0}, @raw32={[0x2, 0x225, 0x1]}}, {0x75f, 0x8, 0x80, 0x80, @tick=0x6, {0x9, 0x9}, {0x1, 0x6}, @queue={0x7, {0x7, 0x6}}}, {0x80, 0x6, 0x3f, 0x80000001, @time={0x0, 0x0}, {0x3f, 0x9}, {0x96, 0xfffffffffffff800}, @raw8={"e5660e9238e6f58b35448e94"}}, {0x6, 0x6f8, 0x3, 0x6, @time={0x77359400, 0x0}, {0x100000001, 0x0}, {0xe870, 0x7}, @connect={{0x4, 0x80}, {0x7ff, 0xfffffffffffffffa}}}], 0x150)
+open$dir(&(0x7f0000265000-0x8)="2e2f66696c653000", 0x400, 0x44)
+[ 96.237449] blk_update_request: I/O error, dev loop0, sector 0
+[ 96.255274] ==================================================================
+[ 96.262735] BUG: KASAN: double-free or invalid-free in selinux_tun_dev_free_security+0x15/0x20
+[ 96.271481]
+[ 96.273098] CPU: 0 PID: 11514 Comm: syz-executor5 Not tainted 4.12.0-rc7+ #2
+[ 96.280268] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+[ 96.289602] Call Trace:
+[ 96.292180] dump_stack+0x194/0x257
+[ 96.295796] ? arch_local_irq_restore+0x53/0x53
+[ 96.300454] ? load_image_and_restore+0x10f/0x10f
+[ 96.305299] ? selinux_tun_dev_free_security+0x15/0x20
+[ 96.310565] print_address_description+0x7f/0x260
+[ 96.315393] ? selinux_tun_dev_free_security+0x15/0x20
+[ 96.320656] ? selinux_tun_dev_free_security+0x15/0x20
+[ 96.325919] kasan_report_double_free+0x55/0x80
+[ 96.330577] kasan_slab_free+0xa0/0xc0
+[ 96.334450] kfree+0xd3/0x260
+[ 96.337545] selinux_tun_dev_free_security+0x15/0x20
+[ 96.342636] security_tun_dev_free_security+0x48/0x80
+[ 96.347822] __tun_chr_ioctl+0x2cc1/0x3d60
+[ 96.352054] ? tun_chr_close+0x60/0x60
+[ 96.355925] ? lock_downgrade+0x990/0x990
+[ 96.360059] ? lock_release+0xa40/0xa40
+[ 96.364025] ? __lock_is_held+0xb6/0x140
+[ 96.368213] ? check_same_owner+0x320/0x320
+[ 96.372530] ? tun_chr_compat_ioctl+0x30/0x30
+[ 96.377005] tun_chr_ioctl+0x2a/0x40
+[ 96.380701] ? tun_chr_ioctl+0x2a/0x40
+[ 96.385099] do_vfs_ioctl+0x1b1/0x15c0
+[ 96.388981] ? ioctl_preallocate+0x2d0/0x2d0
+[ 96.393378] ? selinux_capable+0x40/0x40
+[ 96.397430] ? SyS_futex+0x2b0/0x3a0
+[ 96.401147] ? security_file_ioctl+0x89/0xb0
+[ 96.405547] SyS_ioctl+0x8f/0xc0
+[ 96.408912] entry_SYSCALL_64_fastpath+0x1f/0xbe
+[ 96.413651] RIP: 0033:0x4512c9
+[ 96.416824] RSP: 002b:00007fc65827bc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
+[ 96.424603] RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
+[ 96.431863] RDX: 000000002053c000 RSI: 00000000400454ca RDI: 0000000000000005
+[ 96.439133] RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
+[ 96.446389] R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004baa97
+[ 96.453647] R13: 00000000ffffffff R14: 0000000020124ff3 R15: 0000000000000000
+[ 96.460931]
+[ 96.462552] Allocated by task 11514:
+[ 96.466258] save_stack_trace+0x16/0x20
+[ 96.470212] save_stack+0x43/0xd0
+[ 96.473649] kasan_kmalloc+0xaa/0xd0
+[ 96.477347] kmem_cache_alloc_trace+0x101/0x6f0
+[ 96.481995] selinux_tun_dev_alloc_security+0x49/0x170
+[ 96.487250] security_tun_dev_alloc_security+0x6d/0xa0
+[ 96.492508] __tun_chr_ioctl+0x16bc/0x3d60
+[ 96.496722] tun_chr_ioctl+0x2a/0x40
+[ 96.500417] do_vfs_ioctl+0x1b1/0x15c0
+[ 96.504282] SyS_ioctl+0x8f/0xc0
+[ 96.507630] entry_SYSCALL_64_fastpath+0x1f/0xbe
+[ 96.512367]
+[ 96.513973] Freed by task 11514:
+[ 96.517323] save_stack_trace+0x16/0x20
+[ 96.521276] save_stack+0x43/0xd0
+[ 96.524709] kasan_slab_free+0x6e/0xc0
+[ 96.528577] kfree+0xd3/0x260
+[ 96.531666] selinux_tun_dev_free_security+0x15/0x20
+[ 96.536747] security_tun_dev_free_security+0x48/0x80
+[ 96.541918] tun_free_netdev+0x13b/0x1b0
+[ 96.545959] register_netdevice+0x8d0/0xee0
+[ 96.550260] __tun_chr_ioctl+0x1bae/0x3d60
+[ 96.554475] tun_chr_ioctl+0x2a/0x40
+[ 96.558169] do_vfs_ioctl+0x1b1/0x15c0
+[ 96.562035] SyS_ioctl+0x8f/0xc0
+[ 96.565385] entry_SYSCALL_64_fastpath+0x1f/0xbe
+[ 96.570116]
+[ 96.571724] The buggy address belongs to the object at ffff8801d5961a40
+[ 96.571724] which belongs to the cache kmalloc-32 of size 32
+[ 96.584186] The buggy address is located 0 bytes inside of
+[ 96.584186] 32-byte region [ffff8801d5961a40, ffff8801d5961a60)
+[ 96.595775] The buggy address belongs to the page:
+[ 96.600686] page:ffffea00066b8d38 count:1 mapcount:0 mapping:ffff8801d5961000 index:0xffff8801d5961fc1
+[ 96.610118] flags: 0x200000000000100(slab)
+[ 96.614335] raw: 0200000000000100 ffff8801d5961000 ffff8801d5961fc1 000000010000003f
+[ 96.622292] raw: ffffea0006723300 ffffea00066738b8 ffff8801dbc00100
+[ 96.628675] page dumped because: kasan: bad access detected
+[ 96.634373]
+[ 96.635978] Memory state around the buggy address:
+[ 96.640884] ffff8801d5961900: 00 00 01 fc fc fc fc fc 00 00 00 fc fc fc fc fc
+[ 96.648222] ffff8801d5961980: 00 00 00 00 fc fc fc fc fb fb fb fb fc fc fc fc
+[ 96.655567] >ffff8801d5961a00: 00 00 00 fc fc fc fc fc fb fb fb fb fc fc fc fc
+[ 96.663255] ^
+[ 96.668685] ffff8801d5961a80: fb fb fb fb fc fc fc fc 00 00 00 fc fc fc fc fc
+[ 96.676022] ffff8801d5961b00: 04 fc fc fc fc fc fc fc fb fb fb fb fc fc fc fc
+[ 96.683357] ==================================================================
+[ 96.690692] Disabling lock debugging due to kernel taint
+[ 96.696117] Kernel panic - not syncing: panic_on_warn set ...
+[ 96.696117]
+[ 96.703470] CPU: 0 PID: 11514 Comm: syz-executor5 Tainted: G B 4.12.0-rc7+ #2
+[ 96.711847] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+[ 96.721354] Call Trace:
+[ 96.723926] dump_stack+0x194/0x257
+[ 96.727539] ? arch_local_irq_restore+0x53/0x53
+[ 96.732366] ? kasan_end_report+0x32/0x50
+[ 96.736497] ? lock_downgrade+0x990/0x990
+[ 96.740631] panic+0x1e4/0x3fb
+[ 96.743807] ? percpu_up_read_preempt_enable.constprop.38+0xae/0xae
+[ 96.750194] ? add_taint+0x40/0x50
+[ 96.753723] ? selinux_tun_dev_free_security+0x15/0x20
+[ 96.758976] ? selinux_tun_dev_free_security+0x15/0x20
+[ 96.764233] kasan_end_report+0x50/0x50
+[ 96.768192] kasan_report_double_free+0x72/0x80
+[ 96.772843] kasan_slab_free+0xa0/0xc0
+[ 96.776711] kfree+0xd3/0x260
+[ 96.779802] selinux_tun_dev_free_security+0x15/0x20
+[ 96.784886] security_tun_dev_free_security+0x48/0x80
+[ 96.790061] __tun_chr_ioctl+0x2cc1/0x3d60
+[ 96.794285] ? tun_chr_close+0x60/0x60
+[ 96.798152] ? lock_downgrade+0x990/0x990
+[ 96.802803] ? lock_release+0xa40/0xa40
+[ 96.806763] ? __lock_is_held+0xb6/0x140
+[ 96.810829] ? check_same_owner+0x320/0x320
+[ 96.815137] ? tun_chr_compat_ioctl+0x30/0x30
+[ 96.819611] tun_chr_ioctl+0x2a/0x40
+[ 96.823306] ? tun_chr_ioctl+0x2a/0x40
+[ 96.827181] do_vfs_ioctl+0x1b1/0x15c0
+[ 96.831057] ? ioctl_preallocate+0x2d0/0x2d0
+[ 96.835450] ? selinux_capable+0x40/0x40
+[ 96.839494] ? SyS_futex+0x2b0/0x3a0
+[ 96.843200] ? security_file_ioctl+0x89/0xb0
+[ 96.847590] SyS_ioctl+0x8f/0xc0
+[ 96.850941] entry_SYSCALL_64_fastpath+0x1f/0xbe
+[ 96.855676] RIP: 0033:0x4512c9
+[ 96.859020] RSP: 002b:00007fc65827bc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
+[ 96.866708] RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
+[ 96.873956] RDX: 000000002053c000 RSI: 00000000400454ca RDI: 0000000000000005
+[ 96.881208] RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
+[ 96.888461] R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004baa97
+[ 96.895708] R13: 00000000ffffffff R14: 0000000020124ff3 R15: 0000000000000000
+[ 96.903943] Dumping ftrace buffer:
+[ 96.907460] (ftrace buffer empty)
+[ 96.911148] Kernel Offset: disabled
+[ 96.914753] Rebooting in 86400 seconds..`,
+ out: `blk_update_request: I/O error, dev loop0, sector 0
+==================================================================
+BUG: KASAN: double-free or invalid-free in selinux_tun_dev_free_security+0x15/0x20
+
+CPU: 0 PID: 11514 Comm: syz-executor5 Not tainted 4.12.0-rc7+ #2
+Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+Call Trace:
+ dump_stack+0x194/0x257
+ print_address_description+0x7f/0x260
+ kasan_report_double_free+0x55/0x80
+ kasan_slab_free+0xa0/0xc0
+ kfree+0xd3/0x260
+ selinux_tun_dev_free_security+0x15/0x20
+ security_tun_dev_free_security+0x48/0x80
+ __tun_chr_ioctl+0x2cc1/0x3d60
+ tun_chr_ioctl+0x2a/0x40
+ do_vfs_ioctl+0x1b1/0x15c0
+ SyS_ioctl+0x8f/0xc0
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+RIP: 0033:0x4512c9
+RSP: 002b:00007fc65827bc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
+RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
+RDX: 000000002053c000 RSI: 00000000400454ca RDI: 0000000000000005
+RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004baa97
+R13: 00000000ffffffff R14: 0000000020124ff3 R15: 0000000000000000
+
+Allocated by task 11514:
+ save_stack_trace+0x16/0x20
+ save_stack+0x43/0xd0
+ kasan_kmalloc+0xaa/0xd0
+ kmem_cache_alloc_trace+0x101/0x6f0
+ selinux_tun_dev_alloc_security+0x49/0x170
+ security_tun_dev_alloc_security+0x6d/0xa0
+ __tun_chr_ioctl+0x16bc/0x3d60
+ tun_chr_ioctl+0x2a/0x40
+ do_vfs_ioctl+0x1b1/0x15c0
+ SyS_ioctl+0x8f/0xc0
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+
+Freed by task 11514:
+ save_stack_trace+0x16/0x20
+ save_stack+0x43/0xd0
+ kasan_slab_free+0x6e/0xc0
+ kfree+0xd3/0x260
+ selinux_tun_dev_free_security+0x15/0x20
+ security_tun_dev_free_security+0x48/0x80
+ tun_free_netdev+0x13b/0x1b0
+ register_netdevice+0x8d0/0xee0
+ __tun_chr_ioctl+0x1bae/0x3d60
+ tun_chr_ioctl+0x2a/0x40
+ do_vfs_ioctl+0x1b1/0x15c0
+ SyS_ioctl+0x8f/0xc0
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+
+The buggy address belongs to the object at ffff8801d5961a40
+ which belongs to the cache kmalloc-32 of size 32
+The buggy address is located 0 bytes inside of
+ 32-byte region [ffff8801d5961a40, ffff8801d5961a60)
+The buggy address belongs to the page:
+page:ffffea00066b8d38 count:1 mapcount:0 mapping:ffff8801d5961000 index:0xffff8801d5961fc1
+flags: 0x200000000000100(slab)
+raw: 0200000000000100 ffff8801d5961000 ffff8801d5961fc1 000000010000003f
+raw: ffffea0006723300 ffffea00066738b8 ffff8801dbc00100
+page dumped because: kasan: bad access detected
+
+Memory state around the buggy address:
+ ffff8801d5961900: 00 00 01 fc fc fc fc fc 00 00 00 fc fc fc fc fc
+ ffff8801d5961980: 00 00 00 00 fc fc fc fc fb fb fb fb fc fc fc fc
+>ffff8801d5961a00: 00 00 00 fc fc fc fc fc fb fb fb fb fc fc fc fc
+ ^
+ ffff8801d5961a80: fb fb fb fb fc fc fc fc 00 00 00 fc fc fc fc fc
+ ffff8801d5961b00: 04 fc fc fc fc fc fc fc fb fb fb fb fc fc fc fc
+==================================================================
+`,
+ },
+
+ // Test that we don't strip the report after "Kernel panic - not syncing" line
+ // because we have too few lines before it.
+ {
+ in: `2017/06/30 10:13:30 executing program 1:
+mmap(&(0x7f0000000000/0xd000)=nil, (0xd000), 0x2000001, 0x4012, 0xffffffffffffffff, 0x0)
+r0 = socket$inet6_sctp(0xa, 0x205, 0x84)
+mmap(&(0x7f000000d000/0x1000)=nil, (0x1000), 0x3, 0x32, 0xffffffffffffffff, 0x0)
+r1 = openat$autofs(0xffffffffffffff9c, &(0x7f000000d000)="2f6465762f6175746f667300", 0x472440, 0x0)
+mmap(&(0x7f000000d000/0x1000)=nil, (0x1000), 0x3, 0x32, 0xffffffffffffffff, 0x0)
+ioctl$KVM_CREATE_DEVICE(r1, 0xc00caee0, &(0x7f000000d000)={0x3, r0, 0x0})
+setsockopt$inet_sctp6_SCTP_I_WANT_MAPPED_V4_ADDR(r0, 0x84, 0xc, &(0x7f0000007000)=0x1, 0x4)
+setsockopt$inet_sctp6_SCTP_ASSOCINFO(r0, 0x84, 0x1, &(0x7f0000ece000)={0x0, 0x20, 0x0, 0x7, 0x0, 0x0}, 0x14)
+[ 55.950418] ------------[ cut here ]------------
+[ 55.967976] WARNING: CPU: 1 PID: 8377 at arch/x86/kvm/x86.c:7209 kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+[ 56.041277] Kernel panic - not syncing: panic_on_warn set ...
+[ 56.041277]
+[ 56.048693] CPU: 1 PID: 8377 Comm: syz-executor6 Not tainted 4.12.0-rc7+ #2
+[ 56.055794] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+[ 56.065137] Call Trace:
+[ 56.067707] dump_stack+0x194/0x257
+[ 56.071334] ? arch_local_irq_restore+0x53/0x53
+[ 56.076017] panic+0x1e4/0x3fb
+[ 56.079188] ? percpu_up_read_preempt_enable.constprop.38+0xae/0xae
+[ 56.085571] ? load_image_and_restore+0x10f/0x10f
+[ 56.090396] ? __warn+0x1a9/0x1e0
+[ 56.093850] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+[ 56.098863] __warn+0x1c4/0x1e0
+[ 56.102131] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+[ 56.107126] report_bug+0x211/0x2d0
+[ 56.110735] fixup_bug+0x40/0x90
+[ 56.114123] do_trap+0x260/0x390
+[ 56.117481] do_error_trap+0x120/0x390
+[ 56.121352] ? do_trap+0x390/0x390
+[ 56.124875] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+[ 56.129868] ? fpu__activate_curr+0xed/0x650
+[ 56.134251] ? futex_wait_setup+0x14a/0x3d0
+[ 56.138551] ? fpstate_init+0x160/0x160
+[ 56.142510] ? trace_hardirqs_off_thunk+0x1a/0x1c
+[ 56.147324] ? vcpu_load+0x1c/0x70
+[ 56.150845] do_invalid_op+0x1b/0x20
+[ 56.154533] invalid_op+0x1e/0x30
+[ 56.157961] RIP: 0010:kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+[ 56.163554] RSP: 0018:ffff8801c5e37720 EFLAGS: 00010212
+[ 56.168891] RAX: 0000000000010000 RBX: ffff8801c8baa000 RCX: ffffc90004763000
+[ 56.176134] RDX: 0000000000000052 RSI: ffffffff810de507 RDI: ffff8801c6358f60
+[ 56.183377] RBP: ffff8801c5e37a80 R08: 1ffffffff097c151 R09: 0000000000000001
+[ 56.190621] R10: 0000000000000000 R11: ffffffff81066ddc R12: 0000000000000000
+[ 56.197865] R13: ffff8801c52be780 R14: ffff8801c65be600 R15: ffff8801c6358d40
+[ 56.205118] ? vcpu_load+0x1c/0x70
+[ 56.208636] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+[ 56.213644] ? debug_check_no_locks_freed+0x3c0/0x3c0
+[ 56.218815] ? drop_futex_key_refs.isra.12+0x63/0xb0
+[ 56.223894] ? futex_wait+0x6cf/0xa00
+[ 56.227671] ? kvm_arch_vcpu_runnable+0x520/0x520
+[ 56.232513] ? vmcs_load+0xb3/0x180
+[ 56.236115] ? kvm_arch_has_assigned_device+0x57/0xe0
+[ 56.241280] ? kvm_arch_end_assignment+0x20/0x20
+[ 56.246008] ? futex_wait_setup+0x3d0/0x3d0
+[ 56.250303] ? lock_downgrade+0x990/0x990
+[ 56.254430] ? vmx_vcpu_load+0x63f/0xa30
+[ 56.258468] ? handle_invept+0x5f0/0x5f0
+[ 56.262505] ? get_futex_key+0x1c10/0x1c10
+[ 56.266721] ? kvm_arch_vcpu_load+0x4b0/0x8f0
+[ 56.271193] ? kvm_arch_dev_ioctl+0x490/0x490
+[ 56.275663] ? task_rq_unlock+0x90/0x90
+[ 56.279615] ? up_write+0x6b/0x120
+[ 56.283141] kvm_vcpu_ioctl+0x627/0x1110
+[ 56.287176] ? kvm_vcpu_ioctl+0x627/0x1110
+[ 56.291393] ? vcpu_stat_get_per_vm_open+0x30/0x30
+[ 56.296298] ? find_held_lock+0x35/0x1d0
+[ 56.300342] ? __fget+0x333/0x570
+[ 56.303777] ? lock_downgrade+0x990/0x990
+[ 56.307907] ? lock_release+0xa40/0xa40
+[ 56.311866] ? __lock_is_held+0xb6/0x140
+[ 56.315916] ? __fget+0x35c/0x570
+[ 56.319349] ? iterate_fd+0x3f0/0x3f0
+[ 56.323135] ? vcpu_stat_get_per_vm_open+0x30/0x30
+[ 56.328041] do_vfs_ioctl+0x1b1/0x15c0
+[ 56.331907] ? ioctl_preallocate+0x2d0/0x2d0
+[ 56.336292] ? selinux_capable+0x40/0x40
+[ 56.340332] ? SyS_futex+0x2b0/0x3a0
+[ 56.344032] ? security_file_ioctl+0x89/0xb0
+[ 56.348420] SyS_ioctl+0x8f/0xc0
+[ 56.351776] entry_SYSCALL_64_fastpath+0x1f/0xbe
+[ 56.356509] RIP: 0033:0x4512c9
+[ 56.359673] RSP: 002b:00007f7e59d4fc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
+[ 56.367353] RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
+[ 56.374598] RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000016
+[ 56.381841] RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
+[ 56.389084] R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004b93f0
+[ 56.396328] R13: 00000000ffffffff R14: 0000000020000000 R15: 0000000000ffa000
+[ 56.404665] Dumping ftrace buffer:
+[ 56.408256] (ftrace buffer empty)
+[ 56.411940] Kernel Offset: disabled
+[ 56.415543] Rebooting in 86400 seconds..
+`,
+ out: `------------[ cut here ]------------
+WARNING: CPU: 1 PID: 8377 at arch/x86/kvm/x86.c:7209 kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+Kernel panic - not syncing: panic_on_warn set ...
+
+CPU: 1 PID: 8377 Comm: syz-executor6 Not tainted 4.12.0-rc7+ #2
+Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+Call Trace:
+ dump_stack+0x194/0x257
+ panic+0x1e4/0x3fb
+ __warn+0x1c4/0x1e0
+ report_bug+0x211/0x2d0
+ fixup_bug+0x40/0x90
+ do_trap+0x260/0x390
+ do_error_trap+0x120/0x390
+ do_invalid_op+0x1b/0x20
+ invalid_op+0x1e/0x30
+RIP: 0010:kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
+RSP: 0018:ffff8801c5e37720 EFLAGS: 00010212
+RAX: 0000000000010000 RBX: ffff8801c8baa000 RCX: ffffc90004763000
+RDX: 0000000000000052 RSI: ffffffff810de507 RDI: ffff8801c6358f60
+RBP: ffff8801c5e37a80 R08: 1ffffffff097c151 R09: 0000000000000001
+R10: 0000000000000000 R11: ffffffff81066ddc R12: 0000000000000000
+R13: ffff8801c52be780 R14: ffff8801c65be600 R15: ffff8801c6358d40
+ kvm_vcpu_ioctl+0x627/0x1110
+ do_vfs_ioctl+0x1b1/0x15c0
+ SyS_ioctl+0x8f/0xc0
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+RIP: 0033:0x4512c9
+RSP: 002b:00007f7e59d4fc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
+RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
+RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000016
+RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004b93f0
+R13: 00000000ffffffff R14: 0000000020000000 R15: 0000000000ffa000
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: disabled
+Rebooting in 86400 seconds..
+`,
+ },
+}
+
+func TestLinuxGuilty(t *testing.T) {
+ tests := map[string]string{
+ `
+==================================================================
+BUG: KASAN: use-after-free in ip6_send_skb+0x2f5/0x330 net/ipv6/ip6_output.c:1748
+Read of size 8 at addr ffff88004fab1858 by task syz-executor0/30168
+
+CPU: 0 PID: 30168 Comm: syz-executor0 Not tainted 4.12.0-rc3+ #3
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:16 [inline]
+ dump_stack+0x292/0x395 lib/dump_stack.c:52
+ print_address_description+0x78/0x280 mm/kasan/report.c:252
+ kasan_report_error mm/kasan/report.c:351 [inline]
+ kasan_report+0x230/0x340 mm/kasan/report.c:408
+ __asan_report_load8_noabort+0x19/0x20 mm/kasan/report.c:429
+ ip6_send_skb+0x2f5/0x330 net/ipv6/ip6_output.c:1748
+ ip6_push_pending_frames+0xb8/0xe0 net/ipv6/ip6_output.c:1763
+ rawv6_push_pending_frames net/ipv6/raw.c:613 [inline]
+ rawv6_sendmsg+0x2ede/0x4400 net/ipv6/raw.c:932
+ inet_sendmsg+0x169/0x5c0 net/ipv4/af_inet.c:762
+ sock_sendmsg_nosec net/socket.c:633 [inline]
+ sock_sendmsg+0xcf/0x110 net/socket.c:643
+ SYSC_sendto+0x660/0x810 net/socket.c:1696
+ SyS_sendto+0x45/0x60 net/socket.c:1664
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+RIP: 0033:0x446179
+RSP: 002b:00007f1f48124c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002c
+RAX: ffffffffffffffda RBX: 0000000000004350 RCX: 0000000000446179
+RDX: 0000000000000873 RSI: 0000000020fd878d RDI: 0000000000000016
+RBP: 00000000ffffffff R08: 00000000204e8fe4 R09: 000000000000001c
+R10: 0000000000000840 R11: 0000000000000286 R12: 0000000000000016
+R13: 0000000000000000 R14: 00007f1f481259c0 R15: 00007f1f48125700
+`: `net/ipv6/ip6_output.c`,
+ `
+DEBUG_LOCKS_WARN_ON(class_idx > MAX_LOCKDEP_KEYS)
+------------[ cut here ]------------
+WARNING: CPU: 2 PID: 24023 at kernel/locking/lockdep.c:3344 __lock_acquire+0x10e5/0x3690 kernel/locking/lockdep.c:3344
+Kernel panic - not syncing: panic_on_warn set ...
+
+CPU: 2 PID: 24023 Comm: syz-executor1 Not tainted 4.12.0-rc3+ #370
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:16 [inline]
+ dump_stack+0x292/0x395 lib/dump_stack.c:52
+ panic+0x1cb/0x3a9 kernel/panic.c:180
+ __warn+0x1c4/0x1e0 kernel/panic.c:541
+ report_bug+0x211/0x2d0 lib/bug.c:183
+ fixup_bug arch/x86/kernel/traps.c:190 [inline]
+ do_trap_no_signal arch/x86/kernel/traps.c:224 [inline]
+ do_trap+0x32c/0x410 arch/x86/kernel/traps.c:273
+ do_error_trap+0x15a/0x3e0 arch/x86/kernel/traps.c:310
+ do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:323
+ invalid_op+0x1e/0x30 arch/x86/entry/entry_64.S:844
+RIP: 0010:__lock_acquire+0x10e5/0x3690 kernel/locking/lockdep.c:3344
+RSP: 0018:ffff88005aba6100 EFLAGS: 00010086
+RAX: 0000000000000031 RBX: ffff880058995b40 RCX: 0000000000000000
+RDX: 0000000000000031 RSI: ffffffff81458577 RDI: ffffed000b574c12
+RBP: ffff88005aba6640 R08: 0000000000000001 R09: 0000000000000001
+R10: ffff8800589963a0 R11: fffffbfff0e0fc7a R12: 0000000000000000
+R13: 0000000000000010 R14: 0000000000000001 R15: 0000000000000010
+ lock_acquire+0x22d/0x560 kernel/locking/lockdep.c:3855
+ seqcount_lockdep_reader_access include/linux/seqlock.h:80 [inline]
+ read_seqcount_begin include/linux/seqlock.h:163 [inline]
+ read_seqbegin include/linux/seqlock.h:433 [inline]
+ neigh_hh_output include/net/neighbour.h:456 [inline]
+ neigh_output include/net/neighbour.h:477 [inline]
+ ip6_finish_output2+0x109a/0x2540 net/ipv6/ip6_output.c:123
+ ip6_finish_output+0x302/0x930 net/ipv6/ip6_output.c:149
+ NF_HOOK_COND include/linux/netfilter.h:246 [inline]
+ ip6_output+0x1c2/0x8a0 net/ipv6/ip6_output.c:163
+ ip6_xmit+0xd38/0x21c0 include/net/dst.h:492
+ inet6_csk_xmit+0x331/0x600 net/ipv6/inet6_connection_sock.c:139
+ tcp_transmit_skb+0x1ad8/0x3460 net/ipv4/tcp_output.c:1055
+ tcp_connect+0x2195/0x2f30 net/ipv4/tcp_output.c:3381
+ tcp_v6_connect+0x1c0b/0x20f0 net/ipv6/tcp_ipv6.c:304
+ __inet_stream_connect+0x2ee/0xf90 net/ipv4/af_inet.c:618
+ inet_stream_connect+0x58/0xa0 net/ipv4/af_inet.c:682
+ SYSC_connect+0x251/0x590 net/socket.c:1588
+ SyS_connect+0x24/0x30 net/socket.c:1569
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+RIP: 0033:0x446179
+RSP: 002b:00007fb738f47c08 EFLAGS: 00000286 ORIG_RAX: 000000000000002a
+RAX: ffffffffffffffda RBX: 0000000000000400 RCX: 0000000000446179
+RDX: 000000000000001c RSI: 0000000020411000 RDI: 0000000000000005
+RBP: 00000000ffffffff R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000286 R12: 0000000000000005
+R13: 0000000000000000 R14: 00007fb738f489c0 R15: 00007fb738f48700
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: disabled
+Rebooting in 86400 seconds..
+`: `net/ipv6/ip6_output.c`,
+ `
+kasan: CONFIG_KASAN_INLINE enabled
+kasan: GPF could be caused by NULL-ptr deref or user memory access
+general protection fault: 0000 [#1] SMP KASAN
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Modules linked in:
+CPU: 2 PID: 10785 Comm: kworker/2:4 Not tainted 4.12.0-rc3+ #370
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Workqueue: events bpf_map_free_deferred
+task: ffff880061ce9700 task.stack: ffff880060b40000
+RIP: 0010:pcpu_addr_to_page mm/percpu-vm.c:358 [inline]
+RIP: 0010:pcpu_chunk_addr_search mm/percpu.c:852 [inline]
+RIP: 0010:free_percpu+0x189/0x4a0 mm/percpu.c:1264
+RSP: 0018:ffff880060b47188 EFLAGS: 00010002
+RAX: 0000000000000000 RBX: 1ffff1000c168e34 RCX: 0000000000000002
+RDX: dffffc0000000000 RSI: 000000000ca9ca67 RDI: 0000000000000010
+RBP: ffff880060b47328 R08: 0000000000000002 R09: 8a21721700000000
+R10: ffff880061ce9f38 R11: dffffc0000000000 R12: ffff88007ffee210
+R13: ffff880060b47300 R14: ffff88003ec00000 R15: ffffe8fcd0a1c608
+FS: 0000000000000000(0000) GS:ffff88006de00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 00000000006e7680 CR3: 000000002e973000 CR4: 00000000000006e0
+Call Trace:
+ htab_free_elems+0x191/0x250 kernel/bpf/hashtab.c:112
+ prealloc_destroy+0x17/0x90 kernel/bpf/hashtab.c:191
+ htab_map_free+0xe6/0x650 kernel/bpf/hashtab.c:1093
+ bpf_map_free_deferred+0xac/0xd0 kernel/bpf/syscall.c:124
+ process_one_work+0xc03/0x1bd0 kernel/workqueue.c:2097
+ worker_thread+0x223/0x1860 kernel/workqueue.c:2231
+ kthread+0x35e/0x430 kernel/kthread.c:231
+ ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:424
+Code: 80 3c 02 00 0f 85 e0 02 00 00 49 8b 3c 24 4c 01 ff e8 ec be 06 00 48 8d 78 10 48 ba 00 00 00 00 00 fc ff df 48 89 f9 48 c1 e9 03 <80> 3c 11 00 0f 85 c2 02 00 00 4c 8b 60 10 48 b8 00 00 00 00 00
+RIP: pcpu_addr_to_page mm/percpu-vm.c:358 [inline] RSP: ffff880060b47188
+RIP: pcpu_chunk_addr_search mm/percpu.c:852 [inline] RSP: ffff880060b47188
+RIP: free_percpu+0x189/0x4a0 mm/percpu.c:1264 RSP: ffff880060b47188
+---[ end trace 2faa26575ba6ca1f ]---
+Kernel panic - not syncing: Fatal exception
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: disabled
+Rebooting in 86400 seconds..
+`: `kernel/bpf/hashtab.c`,
+ `
+kasan: CONFIG_KASAN_INLINE enabled
+kasan: GPF could be caused by NULL-ptr deref or user memory access
+general protection fault: 0000 [#1] SMP KASAN
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Modules linked in:
+CPU: 3 PID: 5124 Comm: kworker/3:3 Not tainted 4.12.0-rc3+ #370
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Workqueue: events bpf_map_free_deferred
+task: ffff880065321700 task.stack: ffff880065380000
+RIP: 0010:css_put include/linux/cgroup.h:354 [inline]
+RIP: 0010:cgroup_put include/linux/cgroup.h:373 [inline]
+RIP: 0010:cgroup_fd_array_put_ptr+0x88/0x370 kernel/bpf/arraymap.c:535
+RSP: 0018:ffff880065387378 EFLAGS: 00010202
+RAX: 000000002000000d RBX: 1ffff1000ca70e71 RCX: 1ffffffff0a1912c
+RDX: 0000000000000000 RSI: 1ffff1000ca643e6 RDI: 0000000100000069
+RBP: ffff880065387450 R08: ffffffff85b0b9e0 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000000 R12: 00000000fffffffd
+R13: ffff880065387428 R14: dffffc0000000000 R15: ffffffff850c8920
+FS: 0000000000000000(0000) GS:ffff88006df00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 0000000020014000 CR3: 00000000231ae000 CR4: 00000000000006e0
+Call Trace:
+ fd_array_map_delete_elem kernel/bpf/arraymap.c:374 [inline]
+ bpf_fd_array_map_clear+0x144/0x260 kernel/bpf/arraymap.c:410
+ cgroup_fd_array_free+0x15/0x20 kernel/bpf/arraymap.c:540
+ bpf_map_free_deferred+0xac/0xd0 kernel/bpf/syscall.c:124
+ process_one_work+0xc03/0x1bd0 kernel/workqueue.c:2097
+ worker_thread+0x223/0x1860 kernel/workqueue.c:2231
+ kthread+0x35e/0x430 kernel/kthread.c:231
+ ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:424
+Code: 04 00 f2 f2 f2 c7 40 08 f2 f2 f2 f2 c7 40 0c 00 f2 f2 f2 c7 40 10 f3 f3 f3 f3 e8 a4 dc f0 ff 49 8d 7c 24 6c 48 89 f8 48 c1 e8 03 <42> 0f b6 14 30 48 89 f8 83 e0 07 83 c0 03 38 d0 7c 08 84 d2 0f
+RIP: css_put include/linux/cgroup.h:354 [inline] RSP: ffff880065387378
+RIP: cgroup_put include/linux/cgroup.h:373 [inline] RSP: ffff880065387378
+RIP: cgroup_fd_array_put_ptr+0x88/0x370 kernel/bpf/arraymap.c:535 RSP: ffff880065387378
+---[ end trace 6192ca3b51b170a8 ]---
+Kernel panic - not syncing: Fatal exception
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: disabled
+Rebooting in 86400 seconds..
+`: `kernel/bpf/arraymap.c`,
+ `
+------------[ cut here ]------------
+WARNING: CPU: 1 PID: 4961 at lib/refcount.c:150 refcount_inc+0x47/0x50 lib/refcount.c:150
+Kernel panic - not syncing: panic_on_warn set ...
+
+CPU: 1 PID: 4961 Comm: syz-executor1 Not tainted 4.12.0-rc2+ #77
+Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:16 [inline]
+ dump_stack+0x2ee/0x3ea lib/dump_stack.c:52
+ panic+0x1fb/0x412 kernel/panic.c:180
+ __warn+0x1c4/0x1e0 kernel/panic.c:541
+ report_bug+0x211/0x2d0 lib/bug.c:183
+ fixup_bug arch/x86/kernel/traps.c:190 [inline]
+ do_trap_no_signal arch/x86/kernel/traps.c:224 [inline]
+ do_trap+0x32c/0x410 arch/x86/kernel/traps.c:273
+ do_error_trap+0x15a/0x3b0 arch/x86/kernel/traps.c:310
+ do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:323
+ invalid_op+0x1e/0x30 arch/x86/entry/entry_64.S:847
+RIP: 0010:refcount_inc+0x47/0x50 lib/refcount.c:150
+RSP: 0018:ffff8801d3d4fcc0 EFLAGS: 00010282
+RAX: 000000000000002b RBX: ffff8801c2514240 RCX: 0000000000000000
+RDX: 000000000000002b RSI: ffffc90002fb8000 RDI: ffffed003a7a9f8a
+RBP: ffff8801d3d4fcc8 R08: 1ffff1003a7a9e71 R09: 0000000000000000
+R10: dffffc0000000000 R11: 0000000000000000 R12: 1ffff1003a7a9fa0
+R13: 000000001fd29e67 R14: 000000001fd29e67 R15: ffff8801c2514240
+ __key_get include/linux/key.h:254 [inline]
+ key_lookup+0x1ec/0x230 security/keys/key.c:670
+ lookup_user_key+0x8ba/0x11e0 security/keys/process_keys.c:680
+ keyctl_keyring_link+0x24/0xc0 security/keys/keyctl.c:507
+ SYSC_keyctl security/keys/keyctl.c:1661 [inline]
+ SyS_keyctl+0x1af/0x290 security/keys/keyctl.c:1633
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+RIP: 0033:0x44fe99
+RSP: 002b:00007f93b93c9b58 EFLAGS: 00000212 ORIG_RAX: 00000000000000fa
+RAX: ffffffffffffffda RBX: ffffffffffffffff RCX: 000000000044fe99
+RDX: 000000001fd29e67 RSI: ffffffffffffffff RDI: 0000000000000008
+RBP: 0000000000000008 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000212 R12: 00000000007180a8
+R13: 0000000000001000 R14: 0000000000000003 R15: 0000000000000000
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: 0x6000000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
+Rebooting in 86400 seconds..
+`: `security/keys/key.c`,
+ `
+kasan: GPF could be caused by NULL-ptr deref or user memory access
+general protection fault: 0000 [#1] SMP KASAN
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Modules linked in:
+CPU: 1 PID: 14551 Comm: syz-executor0 Not tainted 4.12.0-rc1+ #366
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+task: ffff880028ceadc0 task.stack: ffff880038460000
+RIP: 0010:__read_once_size include/linux/compiler.h:254 [inline]
+RIP: 0010:raw_seqcount_begin include/linux/seqlock.h:183 [inline]
+RIP: 0010:__d_lookup_rcu+0x27b/0xa10 fs/dcache.c:2144
+RSP: 0018:ffff880038466d18 EFLAGS: 00010a03
+RAX: 1fff6a12b169980b RBX: 1ffff1000708cdc2 RCX: ffffc90000abd000
+RDX: 00000000000001b4 RSI: ffffffff819034c6 RDI: 0000000000000a06
+RBP: ffff880038466ef8 R08: ffffffff8590ba60 R09: ffff880038466b20
+R10: 0000000000000000 R11: 0000000000000000 R12: 000000004cfffffb
+R13: fffb50958b4cc05d R14: dffffc0000000000 R15: fffb50958b4cc085
+FS: 00007f63f0717700(0000) GS:ffff88003ed00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 000000002000fff8 CR3: 0000000027bd5000 CR4: 00000000000006e0
+Call Trace:
+ lookup_fast+0x12c/0xf80 fs/namei.c:1554
+ walk_component+0x129/0x13e0 fs/namei.c:1780
+ lookup_last fs/namei.c:2252 [inline]
+ path_lookupat+0x1d7/0xbc0 fs/namei.c:2302
+ filename_lookup+0x29e/0x5b0 fs/namei.c:2336
+ kern_path+0x33/0x40 fs/namei.c:2425
+ bpf_obj_do_get kernel/bpf/inode.c:305 [inline]
+ bpf_obj_get_user+0x11f/0xdd0 kernel/bpf/inode.c:340
+ bpf_obj_get kernel/bpf/syscall.c:888 [inline]
+ SYSC_bpf kernel/bpf/syscall.c:1061 [inline]
+ SyS_bpf+0xdc2/0x3a80 kernel/bpf/syscall.c:997
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+RIP: 0033:0x445e89
+RSP: 002b:00007f63f0716b58 EFLAGS: 00000296 ORIG_RAX: 0000000000000141
+RAX: ffffffffffffffda RBX: 0000000000000007 RCX: 0000000000445e89
+RDX: 0000000000000010 RSI: 0000000020005ff0 RDI: 0000000000000007
+RBP: 00000000006e0370 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000296 R12: 0000000000708000
+R13: 4000000000080000 R14: 0000000000000000 R15: 0000000000000000
+Code: 89 bd 18 ff ff ff 42 c6 04 33 f8 0f 84 33 04 00 00 e8 da fc ca ff 48 8b 85 b0 fe ff ff 4d 8d 6f d8 c6 00 04 4c 89 e8 48 c1 e8 03 <42> 0f b6 0c 30 4c 89 e8 83 e0 07 83 c0 03 38 c8 7c 08 84 c9 0f
+RIP: __read_once_size include/linux/compiler.h:254 [inline] RSP: ffff880038466d18
+RIP: raw_seqcount_begin include/linux/seqlock.h:183 [inline] RSP: ffff880038466d18
+RIP: __d_lookup_rcu+0x27b/0xa10 fs/dcache.c:2144 RSP: ffff880038466d18
+---[ end trace cc5c09f1eb5b005a ]---
+Kernel panic - not syncing: Fatal exception
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: disabled
+Rebooting in 86400 seconds..
+`: `fs/dcache.c`,
+ `
+==================================================================
+BUG: KASAN: use-after-free in ip6_dst_store include/net/ip6_fib.h:176 [inline]
+BUG: KASAN: use-after-free in tcp_v6_connect+0x1dfd/0x20f0 net/ipv6/tcp_ipv6.c:271
+Read of size 4 at addr ffff880066df126c by task syz-executor6/22754
+
+CPU: 0 PID: 22754 Comm: syz-executor6 Not tainted 4.12.0-rc1+ #366
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:16 [inline]
+ dump_stack+0x292/0x395 lib/dump_stack.c:52
+ print_address_description+0x73/0x280 mm/kasan/report.c:252
+ kasan_report_error mm/kasan/report.c:351 [inline]
+ kasan_report+0x22b/0x340 mm/kasan/report.c:408
+ __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:428
+ ip6_dst_store include/net/ip6_fib.h:176 [inline]
+ tcp_v6_connect+0x1dfd/0x20f0 net/ipv6/tcp_ipv6.c:271
+ __inet_stream_connect+0x2ee/0xf90 net/ipv4/af_inet.c:618
+ inet_stream_connect+0x58/0xa0 net/ipv4/af_inet.c:682
+ SYSC_connect+0x251/0x590 net/socket.c:1588
+ SyS_connect+0x24/0x30 net/socket.c:1569
+ entry_SYSCALL_64_fastpath+0x1f/0xbe
+RIP: 0033:0x445e89
+RSP: 002b:00007fc98a723b58 EFLAGS: 00000286 ORIG_RAX: 000000000000002a
+RAX: ffffffffffffffda RBX: 0000000000000016 RCX: 0000000000445e89
+RDX: 000000000000001c RSI: 0000000020066000 RDI: 0000000000000016
+RBP: 00000000006e04c0 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000000 R11: 0000000000000286 R12: 00000000007081f8
+R13: 0000000000000000 R14: 00007fc98a7249c0 R15: 00007fc98a724700
+`: `net/ipv6/tcp_ipv6.c`,
+ `
+------------[ cut here ]------------
+WARNING: CPU: 1 PID: 23686 at net/core/dev.c:2444 skb_warn_bad_offload+0x2c0/0x3a0 net/core/dev.c:2439()
+lo: caps=(0x00000014401b7c69, 0x0000000000000000) len=246 data_len=0 gso_size=35328 gso_type=4 ip_summed=0
+Kernel panic - not syncing: panic_on_warn set ...
+
+CPU: 1 PID: 23686 Comm: syz-executor0 Not tainted 4.4.64+ #26
+Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+ 0000000000000001 ffff8801d8a674b8 ffffffff81bfd89c ffffffff82a382a0
+ ffff8801d8a67590 ffffffff82c2f040 0000000000000009 ffff8801d8a67580
+ ffffffff813a0073 0000000041b58ab3 ffffffff82d52827 ffffffff8139fed1
+Call Trace:
+ [<ffffffff81bfd89c>] __dump_stack lib/dump_stack.c:15 [inline]
+ [<ffffffff81bfd89c>] dump_stack+0x80/0xb4 lib/dump_stack.c:51
+ [<ffffffff813a0073>] panic+0x1a2/0x347 kernel/panic.c:115
+ [<ffffffff810e209a>] warn_slowpath_common+0x12a/0x140 kernel/panic.c:463
+ [<ffffffff810e2160>] warn_slowpath_fmt+0xb0/0xe0 kernel/panic.c:479
+ [<ffffffff8217e980>] skb_warn_bad_offload+0x2c0/0x3a0 net/core/dev.c:2439
+ [<ffffffff8218cc64>] __skb_gso_segment+0x3c4/0x4b0 net/core/dev.c:2596
+ [<ffffffff8218d883>] skb_gso_segment include/linux/netdevice.h:3702 [inline]
+ [<ffffffff8218d883>] validate_xmit_skb.isra.102.part.103+0x453/0x980 net/core/dev.c:2804
+ [<ffffffff821902eb>] validate_xmit_skb include/linux/spinlock.h:347 [inline]
+ [<ffffffff821902eb>] __dev_queue_xmit+0x133b/0x1550 net/core/dev.c:3173
+ [<ffffffff8219051c>] dev_queue_xmit+0x1c/0x20 net/core/dev.c:3215
+ [<ffffffff8278c519>] packet_snd net/packet/af_packet.c:2825 [inline]
+ [<ffffffff8278c519>] packet_sendmsg+0x2959/0x4950 net/packet/af_packet.c:2850
+ [<ffffffff821260af>] sock_sendmsg_nosec net/socket.c:611 [inline]
+ [<ffffffff821260af>] sock_sendmsg+0xcf/0x110 net/socket.c:621
+ [<ffffffff82127c49>] ___sys_sendmsg+0x6f9/0x810 net/socket.c:1947
+ [<ffffffff82129590>] __sys_sendmsg+0xd0/0x180 net/socket.c:1981
+ [<ffffffff82129672>] SYSC_sendmsg net/socket.c:1992 [inline]
+ [<ffffffff82129672>] SyS_sendmsg+0x32/0x50 net/socket.c:1988
+ [<ffffffff828ab96e>] entry_SYSCALL_64_fastpath+0x12/0x6d
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: disabled
+`: `net/packet/af_packet.c`,
+ `
+==================================================================
+BUG: KASAN: use-after-free in dst_check include/net/dst.h:498 [inline]
+BUG: KASAN: use-after-free in tcp_v4_early_demux+0x967/0xa60 net/ipv4/tcp_ipv4.c:1480
+Read of size 8 at addr ffff8800397d2fe0 by task syz-executor0/4289
+
+CPU: 0 PID: 4289 Comm: syz-executor0 Not tainted 4.12.0-rc1+ #366
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+ <IRQ>
+ __dump_stack lib/dump_stack.c:16 [inline]
+ dump_stack+0x292/0x395 lib/dump_stack.c:52
+ print_address_description+0x73/0x280 mm/kasan/report.c:252
+ kasan_report_error mm/kasan/report.c:351 [inline]
+ kasan_report+0x22b/0x340 mm/kasan/report.c:408
+ __asan_report_load8_noabort+0x14/0x20 mm/kasan/report.c:429
+ dst_check include/net/dst.h:498 [inline]
+ tcp_v4_early_demux+0x967/0xa60 net/ipv4/tcp_ipv4.c:1480
+ ip_rcv_finish+0x1941/0x2110 net/ipv4/ip_input.c:334
+sctp: [Deprecated]: syz-executor7 (pid 4299) Use of struct sctp_assoc_value in delayed_ack socket option.
+Use struct sctp_sack_info instead
+ NF_HOOK include/linux/netfilter.h:257 [inline]
+ ip_rcv+0xd8c/0x19c0 net/ipv4/ip_input.c:488
+ __netif_receive_skb_core+0x1ad1/0x3400 net/core/dev.c:4216
+ __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:4254
+ netif_receive_skb_internal+0x240/0x1b20 net/core/dev.c:4416
+ napi_skb_finish net/core/dev.c:4773 [inline]
+ napi_gro_receive+0x4e6/0x680 net/core/dev.c:4807
+ e1000_receive_skb drivers/net/ethernet/intel/e1000/e1000_main.c:4018 [inline]
+ e1000_clean_rx_irq+0x5e0/0x1490 drivers/net/ethernet/intel/e1000/e1000_main.c:4474
+ e1000_clean+0xb9a/0x28f0 drivers/net/ethernet/intel/e1000/e1000_main.c:3819
+ napi_poll net/core/dev.c:5407 [inline]
+ net_rx_action+0xe7a/0x18f0 net/core/dev.c:5473
+ __do_softirq+0x2fb/0xb99 kernel/softirq.c:284
+ invoke_softirq kernel/softirq.c:364 [inline]
+ irq_exit+0x19e/0x1d0 kernel/softirq.c:405
+ exiting_irq arch/x86/include/asm/apic.h:652 [inline]
+ smp_apic_timer_interrupt+0x76/0xa0 arch/x86/kernel/apic/apic.c:966
+ apic_timer_interrupt+0x93/0xa0 arch/x86/entry/entry_64.S:484
+RIP: 0033:0x449783
+RSP: 002b:00007ffde3d48590 EFLAGS: 00000202 ORIG_RAX: ffffffffffffff10
+RAX: 00000000006e6bc0 RBX: 0000000000000001 RCX: 0000000000000040
+RDX: 0000000000000001 RSI: 0000000000a640a0 RDI: 00007ffb7ef3a700
+RBP: 0000000000000000 R08: 000000000139cda0 R09: 0000000000000012
+R10: 0000000000020022 R11: 0000000000000201 R12: 00007ffde3d486c0
+R13: 0000000000000000 R14: 0000000000000444 R15: 0000000000a640c8
+ </IRQ>
+`: `net/ipv4/tcp_ipv4.c`,
+ `
+==================================================================
+BUG: KMSAN: use of unitialized memory in rtnl_fdb_dump+0x5dc/0x1000
+CPU: 0 PID: 1039 Comm: probe Not tainted 4.11.0-rc5+ #2727
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:16
+ dump_stack+0x143/0x1b0 lib/dump_stack.c:52
+ kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:1007
+ __kmsan_warning_32+0x66/0xb0 mm/kmsan/kmsan_instr.c:491
+ rtnl_fdb_dump+0x5dc/0x1000 net/core/rtnetlink.c:3230
+ netlink_dump+0x84f/0x1190 net/netlink/af_netlink.c:2168
+ __netlink_dump_start+0xc97/0xe50 net/netlink/af_netlink.c:2258
+ netlink_dump_start ./include/linux/netlink.h:165
+ rtnetlink_rcv_msg+0xae9/0xb40 net/core/rtnetlink.c:4094
+ netlink_rcv_skb+0x339/0x5a0 net/netlink/af_netlink.c:2339
+ rtnetlink_rcv+0x83/0xa0 net/core/rtnetlink.c:4110
+ netlink_unicast_kernel net/netlink/af_netlink.c:1272
+ netlink_unicast+0x13b7/0x1480 net/netlink/af_netlink.c:1298
+ netlink_sendmsg+0x10b8/0x10f0 net/netlink/af_netlink.c:1844
+ sock_sendmsg_nosec net/socket.c:633
+ sock_sendmsg net/socket.c:643
+ ___sys_sendmsg+0xd4b/0x10f0 net/socket.c:1997
+ __sys_sendmsg net/socket.c:2031
+ SYSC_sendmsg+0x2c6/0x3f0 net/socket.c:2042
+ SyS_sendmsg+0x87/0xb0 net/socket.c:2038
+ do_syscall_64+0x102/0x150 arch/x86/entry/common.c:285
+ entry_SYSCALL64_slow_path+0x25/0x25 arch/x86/entry/entry_64.S:246
+`: `net/core/rtnetlink.c`,
+ `
+==================================================================
+BUG: KASAN: use-after-free in __read_once_size include/linux/compiler.h:254 [inline] at addr ffff88004f0f1938
+BUG: KASAN: use-after-free in atomic_read arch/x86/include/asm/atomic.h:26 [inline] at addr ffff88004f0f1938
+BUG: KASAN: use-after-free in virt_spin_lock arch/x86/include/asm/qspinlock.h:62 [inline] at addr ffff88004f0f1938
+BUG: KASAN: use-after-free in queued_spin_lock_slowpath+0xb0a/0xfd0 kernel/locking/qspinlock.c:421 at addr ffff88004f0f1938
+Read of size 4 by task syz-executor0/28813
+CPU: 1 PID: 28813 Comm: syz-executor0 Not tainted 4.11.0-rc7+ #251
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:16 [inline]
+ dump_stack+0x292/0x398 lib/dump_stack.c:52
+ kasan_object_err+0x1c/0x70 mm/kasan/report.c:164
+ print_address_description mm/kasan/report.c:202 [inline]
+ kasan_report_error mm/kasan/report.c:291 [inline]
+ kasan_report+0x252/0x510 mm/kasan/report.c:347
+ __asan_report_load4_noabort+0x14/0x20 mm/kasan/report.c:367
+ __read_once_size include/linux/compiler.h:254 [inline]
+ atomic_read arch/x86/include/asm/atomic.h:26 [inline]
+ virt_spin_lock arch/x86/include/asm/qspinlock.h:62 [inline]
+ queued_spin_lock_slowpath+0xb0a/0xfd0 kernel/locking/qspinlock.c:421
+ queued_spin_lock include/asm-generic/qspinlock.h:103 [inline]
+ do_raw_spin_lock+0x151/0x1e0 kernel/locking/spinlock_debug.c:113
+ __raw_spin_lock include/linux/spinlock_api_smp.h:143 [inline]
+ _raw_spin_lock+0x32/0x40 kernel/locking/spinlock.c:151
+ spin_lock include/linux/spinlock.h:299 [inline]
+ lockref_get_not_dead+0x19/0x80 lib/lockref.c:179
+ __ns_get_path+0x197/0x860 fs/nsfs.c:66
+ open_related_ns+0xda/0x200 fs/nsfs.c:143
+ sock_ioctl+0x39d/0x440 net/socket.c:1001
+ vfs_ioctl fs/ioctl.c:45 [inline]
+ do_vfs_ioctl+0x1bf/0x1780 fs/ioctl.c:685
+ SYSC_ioctl fs/ioctl.c:700 [inline]
+ SyS_ioctl+0x8f/0xc0 fs/ioctl.c:691
+ entry_SYSCALL_64_fastpath+0x1f/0xc2
+`: `fs/nsfs.c`,
+ `
+irq bypass consumer (token ffff8801bff15e80) registration fails: -16
+kasan: CONFIG_KASAN_INLINE enabled
+kasan: GPF could be caused by NULL-ptr deref or user memory access
+general protection fault: 0000 [#1] SMP KASAN
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Modules linked in:
+CPU: 0 PID: 1427 Comm: kworker/0:3 Not tainted 4.9.0+ #9
+Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+Workqueue: kvm-irqfd-cleanup irqfd_shutdown
+task: ffff8801d60cc700 task.stack: ffff8801d62f8000
+RIP: 0010:[<ffffffff84352ab6>] [<ffffffff84352ab6>] __list_del include/linux/list.h:89 [inline]
+RIP: 0010:[<ffffffff84352ab6>] [<ffffffff84352ab6>] list_del include/linux/list.h:107 [inline]
+RIP: 0010:[<ffffffff84352ab6>] [<ffffffff84352ab6>] irq_bypass_unregister_consumer+0x296/0x470 virt/lib/irqbypass.c:258
+RSP: 0018:ffff8801d62ff318 EFLAGS: 00010202
+RAX: 0000000000000000 RBX: 1ffff1003ac5fe65 RCX: dffffc0000000000
+RDX: ffff8801d3075170 RSI: 0000000000000001 RDI: 0000000000000008
+RBP: ffff8801d62ff3b0 R08: 0000000000000000 R09: 0000000000000000
+R10: 0000000000000006 R11: 0000000000000000 R12: ffff8801d3075168
+R13: ffff8801d7d071a8 R14: 0000000000000000 R15: ffffffff8541bbe0
+FS: 0000000000000000(0000) GS:ffff8801dc000000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 00007f960f8f3db8 CR3: 00000001da19b000 CR4: 00000000001426f0
+DR0: 0000000020000000 DR1: 0000000020000000 DR2: 0000000000000000
+DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000600
+Stack:
+ ffffffff814cc212 ffff8801d60cc700 0000000041b58ab3 ffffffff84ad688d
+ ffffffff84352820 ffffffff815720c0 ffff8801da11b640 0000000041b58ab3
+ ffffffff84aea0a0 ffffffff81262e90 1ffff1003ac5fe74 0000000041b58ab3
+Call Trace:
+ [<ffffffff8108aaf3>] irqfd_shutdown+0x123/0x1c0 arch/x86/kvm/../../../virt/kvm/eventfd.c:145
+ [<ffffffff81492c00>] process_one_work+0xbd0/0x1c10 kernel/workqueue.c:2096
+ [<ffffffff81493e63>] worker_thread+0x223/0x1990 kernel/workqueue.c:2230
+ [<ffffffff814abd53>] kthread+0x323/0x3e0 kernel/kthread.c:209
+ [<ffffffff84377c6a>] ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:433
+Code: 48 89 d1 48 c1 e9 03 80 3c 01 00 0f 85 76 01 00 00 49 8d 7e 08 48 b9 00 00 00 00 00 fc ff df 49 8b 44 24 08 48 89 fe 48 c1 ee 03 <80> 3c 0e 00 0f 85 2c 01 00 00 4c 8d 6d 98 48 b9 00 00 00 00 00
+RIP [<ffffffff84352ab6>] __list_del include/linux/list.h:89 [inline]
+RIP [<ffffffff84352ab6>] list_del include/linux/list.h:107 [inline]
+RIP [<ffffffff84352ab6>] irq_bypass_unregister_consumer+0x296/0x470 virt/lib/irqbypass.c:258
+ RSP <ffff8801d62ff318>
+---[ end trace c88bb3be8e63e0af ]---
+Kernel panic - not syncing: Fatal exception
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Kernel Offset: disabled
+Rebooting in 86400 seconds..
+`: `arch/x86/kvm/../../../virt/kvm/eventfd.c`,
+ `
+------------[ cut here ]------------
+kernel BUG at ./include/linux/skbuff.h:2389!
+invalid opcode: 0000 [#1] SMP KASAN
+Dumping ftrace buffer:
+ (ftrace buffer empty)
+Modules linked in:
+CPU: 2 PID: 10793 Comm: syz-executor0 Not tainted 4.10.0-rc8+ #201
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+task: ffff88006aeb1700 task.stack: ffff880069b08000
+RIP: 0010:skb_set_owner_r include/linux/skbuff.h:2389 [inline]
+RIP: 0010:__sock_queue_rcv_skb+0x8c0/0xda0 net/core/sock.c:425
+RSP: 0018:ffff88006de06b58 EFLAGS: 00010206
+RAX: ffff88006aeb1700 RBX: ffff8800581dc170 RCX: 0000000000000000
+RDX: 0000000000000100 RSI: 1ffff1000d5fcb7b RDI: ffff88006afe5be0
+RBP: ffff88006de06dc0 R08: 0000000000000002 R09: 0000000000000001
+R10: 0000000000000000 R11: dffffc0000000000 R12: ffff88006afe5bc0
+R13: ffff88006de06d98 R14: ffff8800581dc198 R15: ffff88006afe5c20
+FS: 00007f06a3bd9700(0000) GS:ffff88006de00000(0000) knlGS:0000000000000000
+CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
+CR2: 0000000020007000 CR3: 000000006a280000 CR4: 00000000000006e0
+Call Trace:
+ <IRQ>
+ sock_queue_rcv_skb+0x3a/0x50 net/core/sock.c:451
+PF_BRIDGE: RTM_DELNEIGH with invalid address
+ llc_sap_state_process+0x3e3/0x4e0 net/llc/llc_sap.c:220
+ llc_sap_rcv net/llc/llc_sap.c:294 [inline]
+ llc_sap_handler+0x695/0x1320 net/llc/llc_sap.c:434
+ llc_rcv+0x6da/0xed0 net/llc/llc_input.c:208
+ __netif_receive_skb_core+0x1ae5/0x3400 net/core/dev.c:4190
+ __netif_receive_skb+0x2a/0x170 net/core/dev.c:4228
+ process_backlog+0xe5/0x6c0 net/core/dev.c:4839
+ napi_poll net/core/dev.c:5202 [inline]
+ net_rx_action+0xe70/0x1900 net/core/dev.c:5267
+ __do_softirq+0x2fb/0xb7d kernel/softirq.c:284
+ do_softirq_own_stack+0x1c/0x30 arch/x86/entry/entry_64.S:902
+ </IRQ>
+ do_softirq.part.17+0x1e8/0x230 kernel/softirq.c:328
+ do_softirq kernel/softirq.c:176 [inline]
+ __local_bh_enable_ip+0x1f2/0x200 kernel/softirq.c:181
+ local_bh_enable include/linux/bottom_half.h:31 [inline]
+ rcu_read_unlock_bh include/linux/rcupdate.h:971 [inline]
+ __dev_queue_xmit+0xd87/0x2860 net/core/dev.c:3399
+ dev_queue_xmit+0x17/0x20 net/core/dev.c:3405
+ llc_build_and_send_ui_pkt+0x240/0x330 net/llc/llc_output.c:74
+ llc_ui_sendmsg+0x98d/0x1430 net/llc/af_llc.c:928
+ sock_sendmsg_nosec net/socket.c:635 [inline]
+ sock_sendmsg+0xca/0x110 net/socket.c:645
+ ___sys_sendmsg+0x9d2/0xae0 net/socket.c:1985
+ __sys_sendmsg+0x138/0x320 net/socket.c:2019
+ SYSC_sendmsg net/socket.c:2030 [inline]
+ SyS_sendmsg+0x2d/0x50 net/socket.c:2026
+ entry_SYSCALL_64_fastpath+0x1f/0xc2
+`: `net/llc/llc_sap.c`,
+ `
+==================================================================
+BUG: KASAN: use-after-free in skb_pfmemalloc include/linux/skbuff.h:829 [inline] at addr ffff88003b910d8c
+BUG: KASAN: use-after-free in skb_clone+0x3a2/0x420 net/core/skbuff.c:1029 at addr ffff88003b910d8c
+Read of size 4 by task syz-executor0/5591
+CPU: 1 PID: 5591 Comm: syz-executor0 Not tainted 4.10.0-rc8+ #201
+Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
+Call Trace:
+ <IRQ>
+ __dump_stack lib/dump_stack.c:15 [inline]
+ dump_stack+0x292/0x398 lib/dump_stack.c:51
+ kasan_object_err+0x1c/0x70 mm/kasan/report.c:162
+ print_address_description mm/kasan/report.c:200 [inline]
+ kasan_report_error mm/kasan/report.c:289 [inline]
+ kasan_report.part.1+0x20e/0x4e0 mm/kasan/report.c:311
+ kasan_report mm/kasan/report.c:331 [inline]
+ __asan_report_load4_noabort+0x29/0x30 mm/kasan/report.c:331
+ skb_pfmemalloc include/linux/skbuff.h:829 [inline]
+ skb_clone+0x3a2/0x420 net/core/skbuff.c:1029
+ dccp_v6_request_recv_sock+0xb5e/0x1960 net/dccp/ipv6.c:527
+ dccp_check_req+0x335/0x5a0 net/dccp/minisocks.c:186
+ dccp_v6_rcv+0x69e/0x1d00 net/dccp/ipv6.c:711
+ ip6_input_finish+0x46d/0x17a0 net/ipv6/ip6_input.c:279
+ NF_HOOK include/linux/netfilter.h:257 [inline]
+ ip6_input+0xdb/0x590 net/ipv6/ip6_input.c:322
+ dst_input include/net/dst.h:507 [inline]
+ ip6_rcv_finish+0x289/0x890 net/ipv6/ip6_input.c:69
+ NF_HOOK include/linux/netfilter.h:257 [inline]
+ ipv6_rcv+0x12ec/0x23d0 net/ipv6/ip6_input.c:203
+ __netif_receive_skb_core+0x1ae5/0x3400 net/core/dev.c:4190
+ __netif_receive_skb+0x2a/0x170 net/core/dev.c:4228
+ process_backlog+0xe5/0x6c0 net/core/dev.c:4839
+ napi_poll net/core/dev.c:5202 [inline]
+ net_rx_action+0xe70/0x1900 net/core/dev.c:5267
+ __do_softirq+0x2fb/0xb7d kernel/softirq.c:284
+ do_softirq_own_stack+0x1c/0x30 arch/x86/entry/entry_64.S:902
+ </IRQ>
+ do_softirq.part.17+0x1e8/0x230 kernel/softirq.c:328
+ do_softirq kernel/softirq.c:176 [inline]
+ __local_bh_enable_ip+0x1f2/0x200 kernel/softirq.c:181
+ local_bh_enable include/linux/bottom_half.h:31 [inline]
+ rcu_read_unlock_bh include/linux/rcupdate.h:971 [inline]
+ ip6_finish_output2+0xbb0/0x23d0 net/ipv6/ip6_output.c:123
+ ip6_finish_output+0x302/0x960 net/ipv6/ip6_output.c:148
+ NF_HOOK_COND include/linux/netfilter.h:246 [inline]
+ ip6_output+0x1cb/0x8d0 net/ipv6/ip6_output.c:162
+ ip6_xmit+0xce6/0x20d0 include/net/dst.h:501
+ inet6_csk_xmit+0x320/0x5f0 net/ipv6/inet6_connection_sock.c:179
+ dccp_transmit_skb+0xb09/0x1120 net/dccp/output.c:141
+ dccp_send_ack+0x1bf/0x350 net/dccp/output.c:594
+ dccp_rcv_request_sent_state_process net/dccp/input.c:501 [inline]
+ dccp_rcv_state_process+0x102f/0x1650 net/dccp/input.c:670
+ dccp_v6_do_rcv+0x213/0x350 net/dccp/ipv6.c:632
+ sk_backlog_rcv include/net/sock.h:893 [inline]
+ __release_sock+0x127/0x3a0 net/core/sock.c:2053
+ release_sock+0xa5/0x2b0 net/core/sock.c:2540
+ inet_wait_for_connect net/ipv4/af_inet.c:557 [inline]
+ __inet_stream_connect+0x5f7/0xeb0 net/ipv4/af_inet.c:626
+ inet_stream_connect+0x55/0xa0 net/ipv4/af_inet.c:665
+ SYSC_connect+0x251/0x590 net/socket.c:1579
+ SyS_connect+0x24/0x30 net/socket.c:1560
+ entry_SYSCALL_64_fastpath+0x1f/0xc2
+`: `net/dccp/ipv6.c`,
+ `
+==================================================================
+BUG: KASAN: use-after-free in __list_add_rcu include/linux/rculist.h:57 [inline] at addr ffff8801c5b6c110
+BUG: KASAN: use-after-free in list_add_rcu include/linux/rculist.h:78 [inline] at addr ffff8801c5b6c110
+BUG: KASAN: use-after-free in timerfd_setup_cancel fs/timerfd.c:141 [inline] at addr ffff8801c5b6c110
+BUG: KASAN: use-after-free in do_timerfd_settime+0xd32/0xf50 fs/timerfd.c:446 at addr ffff8801c5b6c110
+Write of size 8 by task syz-executor5/10885
+CPU: 1 PID: 10885 Comm: syz-executor5 Not tainted 4.10.0+ #7
+Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
+Call Trace:
+ __dump_stack lib/dump_stack.c:15 [inline]
+ dump_stack+0x2ee/0x3ef lib/dump_stack.c:51
+ kasan_object_err+0x1c/0x70 mm/kasan/report.c:162
+ print_address_description mm/kasan/report.c:200 [inline]
+ kasan_report_error mm/kasan/report.c:289 [inline]
+ kasan_report.part.2+0x1e5/0x4b0 mm/kasan/report.c:311
+ kasan_report mm/kasan/report.c:337 [inline]
+ __asan_report_store8_noabort+0x2c/0x30 mm/kasan/report.c:337
+ __list_add_rcu include/linux/rculist.h:57 [inline]
+ list_add_rcu include/linux/rculist.h:78 [inline]
+ timerfd_setup_cancel fs/timerfd.c:141 [inline]
+ do_timerfd_settime+0xd32/0xf50 fs/timerfd.c:446
+ SYSC_timerfd_settime fs/timerfd.c:533 [inline]
+ SyS_timerfd_settime+0xef/0x1c0 fs/timerfd.c:524
+ entry_SYSCALL_64_fastpath+0x1f/0xc
+`: `fs/timerfd.c`,
+ `
+driver/foo/lib/foo.c:10
+`: `driver/foo/lib/foo.c`,
+ `
+BUG: soft lockup - CPU#1 stuck for 22s! [syz-executor2:7067]
+hardirqs last enabled at (210421): [<ffffffff82c51728>] restore_regs_and_iret+0x0/0x1d
+hardirqs last disabled at (210422): [<ffffffff8100fb22>] apic_timer_interrupt+0x82/0x90 arch/x86/entry/entry_64.S:710
+softirqs last enabled at (210420): [<ffffffff810114a3>] __do_softirq+0x613/0x8c4 kernel/softirq.c:344
+softirqs last disabled at (210415): [<ffffffff812c1650>] invoke_softirq kernel/softirq.c:395 [inline]
+softirqs last disabled at (210415): [<ffffffff812c1650>] irq_exit+0x170/0x1a0 kernel/softirq.c:436
+RIP: 0010:[<ffffffff8181134a>] [<ffffffff8181134a>] next_group+0x5a/0x2e0 fs/pnode.c:172
+`: `fs/pnode.c`,
+ `
+------------[ cut here ]------------
+WARNING: CPU: 1 PID: 7733 at mm/vmalloc.c:1473 __vunmap+0x1ca/0x300 mm/vmalloc.c:1472()
+Trying to vfree() bad address (ffff8800b3254fc0)
+Kernel panic - not syncing: panic_on_warn set ...
+
+Call Trace:
+ [<ffffffff81c8f6cd>] __dump_stack lib/dump_stack.c:15 [inline]
+ [<ffffffff81c8f6cd>] dump_stack+0xc1/0x124 lib/dump_stack.c:51
+ [<ffffffff815f5f34>] __panic+0x11f/0x30b kernel/panic.c:179
+ [<ffffffff815f61da>] panic_saved_regs+0xba/0xba kernel/panic.c:280
+ [<ffffffff812b148f>] warn_slowpath_common+0x12f/0x150 kernel/panic.c:642
+ [<ffffffff812b1560>] warn_slowpath_fmt+0xb0/0xe0 kernel/panic.c:658
+ [<ffffffff816d015a>] __vunmap+0x1ca/0x300 mm/vmalloc.c:1472
+ [<ffffffff816d0355>] vfree+0x55/0xe0 mm/vmalloc.c:1533
+ [<ffffffff81b26404>] ipc_free+0x44/0x50 ipc/util.c:420
+ [<ffffffff81b3203d>] semctl_main+0x20d/0x1ba0 ipc/sem.c:1496
+`: `ipc/util.c`,
+ `
+
+===============================
+[ INFO: suspicious RCU usage. ]
+Call Trace:
+ [<ffffffff81c8f6cd>] __dump_stack lib/dump_stack.c:15 [inline]
+ [<ffffffff81c8f6cd>] dump_stack+0xc1/0x124 lib/dump_stack.c:51
+ [<ffffffff81614578>] warn_alloc+0x208/0x230 mm/page_alloc.c:2850
+ [<ffffffff816d0915>] __vmalloc_area_node_memcg mm/vmalloc.c:1647 [inline]
+ [<ffffffff816d0915>] __vmalloc_node_range_memcg+0x375/0x670 mm/vmalloc.c:1690
+ [<ffffffff816d0c79>] __vmalloc_node_memcg mm/vmalloc.c:1751 [inline]
+ [<ffffffff816d0c79>] __vmalloc_node_memcg_flags mm/vmalloc.c:1788 [inline]
+ [<ffffffff816d0c79>] vmalloc+0x69/0x70 mm/vmalloc.c:1803
+ [<ffffffff8279a0b0>] xt_alloc_table_info+0xd0/0x100 net/netfilter/x_tables.c:952
+ [<ffffffff829a50bc>] do_replace net/ipv4/netfilter/ip_tables.c:1140 [inline]
+ [<ffffffff829a50bc>] do_ipt_set_ctl+0x21c/0x430 net/ipv4/netfilter/ip_tables.c:1687
+ [<ffffffff827436ac>] nf_sockopt net/netfilter/nf_sockopt.c:105 [inline]
+`: `net/netfilter/x_tables.c`,
+ }
+ reporter, err := NewReporter("linux", "", "", nil, nil)
+ if err != nil {
+ t.Fatal(err)
+ }
+ for report, guilty0 := range tests {
+ if guilty := reporter.ExtractGuiltyFile([]byte(report)); guilty != guilty0 {
+ t.Logf("log:\n%s", report)
+ t.Logf("want guilty:\n%s", guilty0)
+ t.Logf("got guilty:\n%s", guilty)
+ t.Fatalf("couldn't extract guilty file")
+ }
+ }
+}
diff --git a/pkg/report/report.go b/pkg/report/report.go
index 8fc78330c..5dbed7a26 100644
--- a/pkg/report/report.go
+++ b/pkg/report/report.go
@@ -1,20 +1,61 @@
// 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.
+// Package report contains functions that process kernel output,
+// detect/extract crash messages, symbolize them, etc.
package report
import (
- "bufio"
"bytes"
"fmt"
- "path/filepath"
"regexp"
- "strconv"
"strings"
"github.com/google/syzkaller/pkg/symbolizer"
)
+type Reporter interface {
+ // ContainsCrash searches kernel console output for oops messages.
+ ContainsCrash(output []byte) bool
+
+ // Parse extracts information about oops from console output.
+ // Desc contains a representative description of the first oops (empty if no oops found),
+ // text contains whole oops text,
+ // start and end denote region of output with oops message(s).
+ Parse(output []byte) (desc string, text []byte, start int, end int)
+
+ Symbolize(text []byte) ([]byte, error)
+
+ ExtractConsoleOutput(output []byte) (result []byte)
+ ExtractGuiltyFile(report []byte) string
+ GetMaintainers(file string) ([]string, error)
+}
+
+// NewReporter creates reporter for the specified OS:
+// kernelSrc: path to kernel sources directory
+// kernelObj: path to kernel build directory (can be empty for in-tree build)
+// symbols: kernel symbols (result of pkg/symbolizer.ReadSymbols on kernel object file)
+// ignores: optional list of regexps to ignore (must match first line of crash message)
+func NewReporter(os, kernelSrc, kernelObj string, symbols map[string][]symbolizer.Symbol,
+ ignores []*regexp.Regexp) (Reporter, error) {
+ type fn func(string, string, map[string][]symbolizer.Symbol, []*regexp.Regexp) (Reporter, error)
+ ctors := map[string]fn{
+ "akaros": ctorAkaros,
+ "linux": ctorLinux,
+ "freebsd": ctorFreebsd,
+ "fuchsia": ctorFuchsia,
+ "windows": ctorWindows,
+ }
+ ctor := ctors[os]
+ if ctor == nil {
+ return nil, fmt.Errorf("unknown os: %v", os)
+ }
+ if kernelObj == "" {
+ kernelObj = kernelSrc // assume in-tree build
+ }
+ return ctor(kernelSrc, kernelObj, symbols, ignores)
+}
+
type oops struct {
header []byte
formats []oopsFormat
@@ -26,337 +67,6 @@ type oopsFormat struct {
fmt string
}
-var oopses = []*oops{
- &oops{
- []byte("BUG:"),
- []oopsFormat{
- {
- compile("BUG: KASAN: ([a-z\\-]+) in {{FUNC}}(?:.*\\n)+?.*(Read|Write) of size ([0-9]+)"),
- "KASAN: %[1]v %[3]v in %[2]v",
- },
- {
- compile("BUG: KASAN: ([a-z\\-]+) on address(?:.*\\n)+?.*(Read|Write) of size ([0-9]+)"),
- "KASAN: %[1]v %[2]v",
- },
- {
- compile("BUG: KASAN: (.*)"),
- "KASAN: %[1]v",
- },
- {
- compile("BUG: unable to handle kernel paging request(?:.*\\n)+?.*IP: (?:{{PC}} +)?{{FUNC}}"),
- "BUG: unable to handle kernel paging request in %[1]v",
- },
- {
- compile("BUG: unable to handle kernel paging request"),
- "BUG: unable to handle kernel paging request",
- },
- {
- compile("BUG: unable to handle kernel NULL pointer dereference(?:.*\\n)+?.*IP: (?:{{PC}} +)?{{FUNC}}"),
- "BUG: unable to handle kernel NULL pointer dereference in %[1]v",
- },
- {
- compile("BUG: spinlock lockup suspected"),
- "BUG: spinlock lockup suspected",
- },
- {
- compile("BUG: spinlock recursion"),
- "BUG: spinlock recursion",
- },
- {
- compile("BUG: soft lockup"),
- "BUG: soft lockup",
- },
- {
- compile("BUG: .*still has locks held!(?:.*\\n)+?.*{{PC}} +{{FUNC}}"),
- "BUG: still has locks held in %[1]v",
- },
- {
- compile("BUG: bad unlock balance detected!(?:.*\\n)+?.*{{PC}} +{{FUNC}}"),
- "BUG: bad unlock balance in %[1]v",
- },
- {
- compile("BUG: held lock freed!(?:.*\\n)+?.*{{PC}} +{{FUNC}}"),
- "BUG: held lock freed in %[1]v",
- },
- {
- compile("BUG: Bad rss-counter state"),
- "BUG: Bad rss-counter state",
- },
- {
- compile("BUG: non-zero nr_ptes on freeing mm"),
- "BUG: non-zero nr_ptes on freeing mm",
- },
- {
- compile("BUG: non-zero nr_pmds on freeing mm"),
- "BUG: non-zero nr_pmds on freeing mm",
- },
- {
- compile("BUG: Dentry .* still in use \\([0-9]+\\) \\[unmount of ([^\\]]+)\\]"),
- "BUG: Dentry still in use [unmount of %[1]v]",
- },
- {
- compile("BUG: Bad page state .*"),
- "BUG: Bad page state",
- },
- {
- compile("BUG: spinlock bad magic .*"),
- "BUG: spinlock bad magic",
- },
- },
- []*regexp.Regexp{
- // Android prints this sometimes during boot.
- compile("Boot_DEBUG:"),
- },
- },
- &oops{
- []byte("WARNING:"),
- []oopsFormat{
- {
- compile("WARNING: .* at {{SRC}} {{FUNC}}"),
- "WARNING in %[2]v",
- },
- {
- compile("WARNING: possible circular locking dependency detected(?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("WARNING: possible irq lock inversion dependency detected(?:.*\\n)+?.*just changed the state of lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected(?:.*\\n)+?.*is trying to acquire(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("WARNING: possible recursive locking detected(?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("WARNING: inconsistent lock state(?:.*\\n)+?.*takes(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "inconsistent lock state in %[1]v",
- },
- {
- compile("WARNING: suspicious RCU usage(?:.*\n)+?.*?{{SRC}}"),
- "suspicious RCU usage at %[1]v",
- },
- {
- compile("WARNING: kernel stack regs at [0-9a-f]+ in [^ ]* has bad '([^']+)' value"),
- "WARNING: kernel stack regs has bad '%[1]v' value",
- },
- {
- compile("WARNING: kernel stack frame pointer at [0-9a-f]+ in [^ ]* has bad value"),
- "WARNING: kernel stack frame pointer has bad value",
- },
- },
- []*regexp.Regexp{
- compile("WARNING: /etc/ssh/moduli does not exist, using fixed modulus"), // printed by sshd
- },
- },
- &oops{
- []byte("INFO:"),
- []oopsFormat{
- {
- compile("INFO: possible circular locking dependency detected \\](?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("INFO: possible irq lock inversion dependency detected \\](?:.*\\n)+?.*just changed the state of lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected \\](?:.*\\n)+?.*is trying to acquire(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("INFO: possible recursive locking detected \\](?:.*\\n)+?.*is trying to acquire lock(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "possible deadlock in %[1]v",
- },
- {
- compile("INFO: inconsistent lock state \\](?:.*\\n)+?.*takes(?:.*\\n)+?.*at: {{PC}} +{{FUNC}}"),
- "inconsistent lock state in %[1]v",
- },
- {
- compile("INFO: rcu_preempt detected stalls(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
- "INFO: rcu detected stall in %[1]v",
- },
- {
- compile("INFO: rcu_preempt detected stalls"),
- "INFO: rcu detected stall",
- },
- {
- compile("INFO: rcu_sched detected(?: expedited)? stalls(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
- "INFO: rcu detected stall in %[1]v",
- },
- {
- compile("INFO: rcu_sched detected(?: expedited)? stalls"),
- "INFO: rcu detected stall",
- },
- {
- compile("INFO: rcu_preempt self-detected stall on CPU(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
- "INFO: rcu detected stall in %[1]v",
- },
- {
- compile("INFO: rcu_preempt self-detected stall on CPU"),
- "INFO: rcu detected stall",
- },
- {
- compile("INFO: rcu_sched self-detected stall on CPU(?:.*\\n)+?.*</IRQ>.*\n(?:.* \\? .*\\n)+?(?:.*rcu.*\\n)+?.*\\] {{FUNC}}"),
- "INFO: rcu detected stall in %[1]v",
- },
- {
- compile("INFO: rcu_sched self-detected stall on CPU"),
- "INFO: rcu detected stall",
- },
- {
- compile("INFO: rcu_bh detected stalls on CPU"),
- "INFO: rcu detected stall",
- },
- {
- compile("INFO: suspicious RCU usage(?:.*\n)+?.*?{{SRC}}"),
- "suspicious RCU usage at %[1]v",
- },
- {
- compile("INFO: task .* blocked for more than [0-9]+ seconds"),
- "INFO: task hung",
- },
- },
- []*regexp.Regexp{
- compile("INFO: lockdep is turned off"),
- compile("INFO: Stall ended before state dump start"),
- compile("INFO: NMI handler .* took too long to run"),
- compile("_INFO::"), // Android can print this during boot.
- },
- },
- &oops{
- []byte("Unable to handle kernel paging request"),
- []oopsFormat{
- {
- compile("Unable to handle kernel paging request(?:.*\\n)+?.*PC is at {{FUNC}}"),
- "unable to handle kernel paging request in %[1]v",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("general protection fault:"),
- []oopsFormat{
- {
- compile("general protection fault:(?:.*\\n)+?.*RIP: [0-9]+:{{PC}} +{{PC}} +{{FUNC}}"),
- "general protection fault in %[1]v",
- },
- {
- compile("general protection fault:(?:.*\\n)+?.*RIP: [0-9]+:{{FUNC}}"),
- "general protection fault in %[1]v",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("Kernel panic"),
- []oopsFormat{
- {
- compile("Kernel panic - not syncing: Attempted to kill init!"),
- "kernel panic: Attempted to kill init!",
- },
- {
- compile("Kernel panic - not syncing: Couldn't open N_TTY ldisc for [^ ]+ --- error -[0-9]+"),
- "kernel panic: Couldn't open N_TTY ldisc",
- },
- {
- compile("Kernel panic - not syncing: (.*)"),
- "kernel panic: %[1]v",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("kernel BUG"),
- []oopsFormat{
- {
- compile("kernel BUG (.*)"),
- "kernel BUG %[1]v",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("Kernel BUG"),
- []oopsFormat{
- {
- compile("Kernel BUG (.*)"),
- "kernel BUG %[1]v",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("BUG kmalloc-"),
- []oopsFormat{
- {
- compile("BUG kmalloc-.*: Object already free"),
- "BUG: Object already free",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("divide error:"),
- []oopsFormat{
- {
- compile("divide error: (?:.*\\n)+?.*RIP: [0-9]+:{{PC}} +{{PC}} +{{FUNC}}"),
- "divide error in %[1]v",
- },
- {
- compile("divide error: (?:.*\\n)+?.*RIP: [0-9]+:{{FUNC}}"),
- "divide error in %[1]v",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("invalid opcode:"),
- []oopsFormat{
- {
- compile("invalid opcode: (?:.*\\n)+?.*RIP: [0-9]+:{{PC}} +{{PC}} +{{FUNC}}"),
- "invalid opcode in %[1]v",
- },
- {
- compile("invalid opcode: (?:.*\\n)+?.*RIP: [0-9]+:{{FUNC}}"),
- "invalid opcode in %[1]v",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("unreferenced object"),
- []oopsFormat{
- {
- compile("unreferenced object {{ADDR}} \\(size ([0-9]+)\\):(?:.*\n.*)+backtrace:.*\n.*{{PC}}.*\n.*{{PC}}.*\n.*{{PC}} {{FUNC}}"),
- "memory leak in %[2]v (size %[1]v)",
- },
- },
- []*regexp.Regexp{},
- },
- &oops{
- []byte("UBSAN:"),
- []oopsFormat{},
- []*regexp.Regexp{},
- },
-}
-
-var (
- consoleOutputRe = regexp.MustCompile(`^(?:\<[0-9]+\>)?\[ *[0-9]+\.[0-9]+\] `)
- questionableRe = regexp.MustCompile(`(?:\[\<[0-9a-f]+\>\])? \? +[a-zA-Z0-9_.]+\+0x[0-9a-f]+/[0-9a-f]+`)
- symbolizeRe = regexp.MustCompile(`(?:\[\<(?:[0-9a-f]+)\>\])?[ \t]+(?:[0-9]+:)?([a-zA-Z0-9_.]+)\+0x([0-9a-f]+)/0x([0-9a-f]+)`)
- decNumRe = regexp.MustCompile(`[0-9]{5,}`)
- lineNumRe = regexp.MustCompile(`(:[0-9]+)+`)
- addrRe = regexp.MustCompile(`[0-9a-f]{8,}`)
- funcRe = regexp.MustCompile(`([a-zA-Z][a-zA-Z0-9_.]+)\+0x[0-9a-z]+/0x[0-9a-z]+`)
- cpuRe = regexp.MustCompile(`CPU#[0-9]+`)
- executorRe = regexp.MustCompile(`syz-executor[0-9]+((/|:)[0-9]+)?`)
- eoi = []byte("<EOI>")
-)
-
func compile(re string) *regexp.Regexp {
re = strings.Replace(re, "{{ADDR}}", "0x[0-9a-f]+", -1)
re = strings.Replace(re, "{{PC}}", "\\[\\<[0-9a-f]+\\>\\]", -1)
@@ -365,8 +75,7 @@ func compile(re string) *regexp.Regexp {
return regexp.MustCompile(re)
}
-// ContainsCrash searches kernel console output for oops messages.
-func ContainsCrash(output []byte, ignores []*regexp.Regexp) bool {
+func containsCrash(output []byte, oopses []*oops, ignores []*regexp.Regexp) bool {
for pos := 0; pos < len(output); {
next := bytes.IndexByte(output[pos:], '\n')
if next != -1 {
@@ -386,132 +95,6 @@ func ContainsCrash(output []byte, ignores []*regexp.Regexp) bool {
return false
}
-// Parse extracts information about oops from console output.
-// Desc contains a representative description of the first oops (empty if no oops found),
-// text contains whole oops text,
-// start and end denote region of output with oops message(s).
-func Parse(output []byte, ignores []*regexp.Regexp) (desc string, text []byte, start int, end int) {
- var oops *oops
- var textPrefix [][]byte
- textLines := 0
- skipText := false
- for pos := 0; pos < len(output); {
- next := bytes.IndexByte(output[pos:], '\n')
- if next != -1 {
- next += pos
- } else {
- next = len(output)
- }
- for _, oops1 := range oopses {
- match := matchOops(output[pos:next], oops1, ignores)
- if match == -1 {
- continue
- }
- if oops == nil {
- oops = oops1
- start = pos
- desc = string(output[pos+match : next])
- }
- end = next
- }
- if consoleOutputRe.Match(output[pos:next]) &&
- (!questionableRe.Match(output[pos:next]) || bytes.Index(output[pos:next], eoi) != -1) {
- lineStart := bytes.Index(output[pos:next], []byte("] ")) + pos + 2
- lineEnd := next
- if lineEnd != 0 && output[lineEnd-1] == '\r' {
- lineEnd--
- }
- if oops == nil {
- textPrefix = append(textPrefix, append([]byte{}, output[lineStart:lineEnd]...))
- if len(textPrefix) > 5 {
- textPrefix = textPrefix[1:]
- }
- } else {
- // Prepend 5 lines preceding start of the report,
- // they can contain additional info related to the report.
- for _, prefix := range textPrefix {
- text = append(text, prefix...)
- text = append(text, '\n')
- }
- textPrefix = nil
- textLines++
- ln := output[lineStart:lineEnd]
- skipLine := skipText
- if bytes.Contains(ln, []byte("Disabling lock debugging due to kernel taint")) {
- skipLine = true
- } else if textLines > 40 && bytes.Contains(ln, []byte("Kernel panic - not syncing")) {
- // If panic_on_warn set, then we frequently have 2 stacks:
- // one for the actual report (or maybe even more than one),
- // and then one for panic caused by panic_on_warn. This makes
- // reports unnecessary long and the panic (current) stack
- // is always present in the actual report. So we strip the
- // panic message. However, we check that we have enough lines
- // before the panic, because sometimes we have, for example,
- // a single WARNING line without a stack and then the panic
- // with the stack.
- skipText = true
- skipLine = true
- }
- if !skipLine {
- text = append(text, ln...)
- text = append(text, '\n')
- }
- }
- }
- pos = next + 1
- }
- if oops == nil {
- return
- }
- desc = extractDescription(output[start:], oops)
- if len(desc) > 0 && desc[len(desc)-1] == '\r' {
- desc = desc[:len(desc)-1]
- }
- // Executor PIDs are not interesting.
- desc = executorRe.ReplaceAllLiteralString(desc, "syz-executor")
- // Replace that everything looks like an address with "ADDR",
- // addresses in descriptions can't be good regardless of the oops regexps.
- desc = addrRe.ReplaceAllLiteralString(desc, "ADDR")
- // Replace that everything looks like a decimal number with "NUM".
- desc = decNumRe.ReplaceAllLiteralString(desc, "NUM")
- // Replace that everything looks like a file line number with "LINE".
- desc = lineNumRe.ReplaceAllLiteralString(desc, ":LINE")
- // Replace all raw references to runctions (e.g. "ip6_fragment+0x1052/0x2d80")
- // with just function name ("ip6_fragment"). Offsets and sizes are not stable.
- desc = funcRe.ReplaceAllString(desc, "$1")
- // CPU numbers are not interesting.
- desc = cpuRe.ReplaceAllLiteralString(desc, "CPU")
- // Corrupted/intermixed lines can be very long.
- const maxDescLen = 180
- if len(desc) > maxDescLen {
- desc = desc[:maxDescLen]
- }
- return
-}
-
-func ExtractConsoleOutput(output []byte) (result []byte) {
- for pos := 0; pos < len(output); {
- next := bytes.IndexByte(output[pos:], '\n')
- if next != -1 {
- next += pos
- } else {
- next = len(output)
- }
- if consoleOutputRe.Match(output[pos:next]) &&
- (!questionableRe.Match(output[pos:next]) || bytes.Index(output[pos:next], eoi) != -1) {
- lineStart := bytes.Index(output[pos:next], []byte("] ")) + pos + 2
- lineEnd := next
- if lineEnd != 0 && output[lineEnd-1] == '\r' {
- lineEnd--
- }
- result = append(result, output[lineStart:lineEnd]...)
- result = append(result, '\n')
- }
- pos = next + 1
- }
- return
-}
-
func matchOops(line []byte, oops *oops, ignores []*regexp.Regexp) int {
match := bytes.Index(line, oops.header)
if match == -1 {
@@ -530,132 +113,6 @@ func matchOops(line []byte, oops *oops, ignores []*regexp.Regexp) int {
return match
}
-func extractDescription(output []byte, oops *oops) string {
- result := ""
- startPos := -1
- for _, format := range oops.formats {
- match := format.re.FindSubmatchIndex(output)
- if match == nil {
- continue
- }
- if startPos != -1 && startPos <= match[0] {
- continue
- }
- startPos = match[0]
- var args []interface{}
- for i := 2; i < len(match); i += 2 {
- args = append(args, string(output[match[i]:match[i+1]]))
- }
- result = fmt.Sprintf(format.fmt, args...)
- }
- if result != "" {
- return result
- }
- pos := bytes.Index(output, oops.header)
- if pos == -1 {
- panic("non matching oops")
- }
- end := bytes.IndexByte(output[pos:], '\n')
- if end == -1 {
- end = len(output)
- } else {
- end += pos
- }
- return string(output[pos:end])
-}
-
-func Symbolize(vmlinux string, text []byte, symbols map[string][]symbolizer.Symbol) ([]byte, error) {
- var symbolized []byte
- if symbols == nil {
- var err error
- symbols, err = symbolizer.ReadSymbols(vmlinux)
- if err != nil {
- return nil, err
- }
- }
- symb := symbolizer.NewSymbolizer()
- defer symb.Close()
- symbFunc := func(bin string, pc uint64) ([]symbolizer.Frame, error) {
- return symb.Symbolize(bin, pc)
- }
- // Strip vmlinux location from all paths.
- strip, _ := filepath.Abs(vmlinux)
- strip = filepath.Dir(strip) + string(filepath.Separator)
- // Vmlinux may have been moved, so check if we can find debug info
- // for __sanitizer_cov_trace_pc. We know where it is located,
- // so we can infer correct strip prefix from it.
- if covSymbols := symbols["__sanitizer_cov_trace_pc"]; len(covSymbols) != 0 {
- for _, covSymb := range covSymbols {
- frames, _ := symb.Symbolize(vmlinux, covSymb.Addr)
- if len(frames) > 0 {
- file := frames[len(frames)-1].File
- if idx := strings.Index(file, "kernel/kcov.c"); idx != -1 {
- strip = file[:idx]
- break
- }
- }
- }
- }
- s := bufio.NewScanner(bytes.NewReader(text))
- for s.Scan() {
- line := append([]byte{}, s.Bytes()...)
- line = append(line, '\n')
- line = symbolizeLine(symbFunc, symbols, vmlinux, strip, line)
- symbolized = append(symbolized, line...)
- }
- return symbolized, nil
-}
-
-func symbolizeLine(symbFunc func(bin string, pc uint64) ([]symbolizer.Frame, error), symbols map[string][]symbolizer.Symbol, vmlinux, strip string, line []byte) []byte {
- match := symbolizeRe.FindSubmatchIndex(line)
- if match == nil {
- return line
- }
- fn := line[match[2]:match[3]]
- off, err := strconv.ParseUint(string(line[match[4]:match[5]]), 16, 64)
- if err != nil {
- return line
- }
- size, err := strconv.ParseUint(string(line[match[6]:match[7]]), 16, 64)
- if err != nil {
- return line
- }
- symb := symbols[string(fn)]
- if len(symb) == 0 {
- return line
- }
- var funcStart uint64
- for _, s := range symb {
- if funcStart == 0 || int(size) == s.Size {
- funcStart = s.Addr
- }
- }
- frames, err := symbFunc(vmlinux, funcStart+off-1)
- if err != nil || len(frames) == 0 {
- return line
- }
- var symbolized []byte
- for _, frame := range frames {
- file := frame.File
- if strings.HasPrefix(file, strip) {
- file = file[len(strip):]
- }
- if strings.HasPrefix(file, "./") {
- file = file[2:]
- }
- info := fmt.Sprintf(" %v:%v", file, frame.Line)
- modified := append([]byte{}, line...)
- modified = replace(modified, match[7], match[7], []byte(info))
- if frame.Inline {
- end := match[7] + len(info)
- modified = replace(modified, end, end, []byte(" [inline]"))
- modified = replace(modified, match[2], match[7], []byte(frame.Func))
- }
- symbolized = append(symbolized, modified...)
- }
- return symbolized
-}
-
// replace replaces [start:end] in where with what, inplace.
func replace(where []byte, start, end int, what []byte) []byte {
if len(what) >= end-start {
diff --git a/pkg/report/report_test.go b/pkg/report/report_test.go
index ea363a7ac..c45fc353e 100644
--- a/pkg/report/report_test.go
+++ b/pkg/report/report_test.go
@@ -5,907 +5,9 @@ package report
import (
"fmt"
- "regexp"
- "strings"
"testing"
-
- "github.com/google/syzkaller/pkg/symbolizer"
)
-func TestParse(t *testing.T) {
- tests := map[string]string{
- `
-[ 772.918915] BUG: unable to handle kernel paging request at ffff88002bde1e40
-unrelateed line
-[ 772.919010] IP: [<ffffffff82d4e304>] __memset+0x24/0x30
-[ 772.919010] PGD ae2c067 PUD ae2d067 PMD 7faa5067 PTE 800000002bde1060
-[ 772.919010] Oops: 0002 [#1] SMP DEBUG_PAGEALLOC KASAN
-[ 772.919010] Dumping ftrace buffer:
-[ 772.919010] (ftrace buffer empty)
-[ 772.919010] Modules linked in:
-[ 772.919010] CPU: 1 PID: 4070 Comm: syz-executor Not tainted 4.8.0-rc3+ #33
-[ 772.919010] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-[ 772.919010] task: ffff880066be2280 task.stack: ffff880066be8000
-[ 772.919010] RIP: 0010:[<ffffffff82d4e304>] [<ffffffff82d4e304>] __memset+0x24/0x30
-[ 772.919010] RSP: 0018:ffff880066befc88 EFLAGS: 00010006
-`: `BUG: unable to handle kernel paging request in __memset`,
-
- `
-[ 1019.110825] BUG: unable to handle kernel paging request at 000000010000001a
-[ 1019.112065] IP: skb_release_data+0x258/0x470
-`: `BUG: unable to handle kernel paging request in skb_release_data`,
-
- `
-BUG: unable to handle kernel paging request at 00000000ffffff8a
-IP: [<ffffffff810a376f>] __call_rcu.constprop.76+0x1f/0x280 kernel/rcu/tree.c:3046
-`: `BUG: unable to handle kernel paging request in __call_rcu`,
-
- `
-[ 1581.999813] BUG: unable to handle kernel paging request at ffffea0000f0e440
-[ 1581.999824] IP: [<ffffea0000f0e440>] 0xffffea0000f0e440
-`: `BUG: unable to handle kernel paging request`,
-
- `
-[ 1021.362826] kasan: CONFIG_KASAN_INLINE enabled
-[ 1021.363613] kasan: GPF could be caused by NULL-ptr deref or user memory access
-[ 1021.364461] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN
-[ 1021.365202] Dumping ftrace buffer:
-[ 1021.365408] (ftrace buffer empty)
-[ 1021.366951] Modules linked in:
-[ 1021.366951] CPU: 2 PID: 29350 Comm: syz-executor Not tainted 4.8.0-rc3+ #33
-[ 1021.366951] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-[ 1021.366951] task: ffff88005b4347c0 task.stack: ffff8800634c0000
-[ 1021.366951] RIP: 0010:[<ffffffff83408ca0>] [<ffffffff83408ca0>] drm_legacy_newctx+0x190/0x290
-[ 1021.366951] RSP: 0018:ffff8800634c7c50 EFLAGS: 00010246
-[ 1021.366951] RAX: dffffc0000000000 RBX: ffff880068f28840 RCX: ffffc900021d0000
-[ 1021.372626] RDX: 0000000000000000 RSI: ffff8800634c7cf8 RDI: ffff880064c0b600
-[ 1021.374099] RBP: ffff8800634c7c70 R08: 0000000000000000 R09: 0000000000000000
-[ 1021.374099] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
-[ 1021.375281] R13: ffff880067aa6000 R14: 0000000000000000 R15: 0000000000000000
-`: `general protection fault in drm_legacy_newctx`,
-
- `
-[ 1722.509639] kasan: GPF could be caused by NULL-ptr deref or user memory access
-[ 1722.510515] general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN
-[ 1722.511227] Dumping ftrace buffer:
-[ 1722.511384] (ftrace buffer empty)
-[ 1722.511384] Modules linked in:
-[ 1722.511384] CPU: 3 PID: 6856 Comm: syz-executor Not tainted 4.8.0-rc3-next-20160825+ #8
-[ 1722.511384] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-[ 1722.511384] task: ffff88005ea761c0 task.stack: ffff880050628000
-[ 1722.511384] RIP: 0010:[<ffffffff8213c531>] [<ffffffff8213c531>] logfs_init_inode.isra.6+0x111/0x470
-[ 1722.511384] RSP: 0018:ffff88005062fb48 EFLAGS: 00010206
-`: `general protection fault in logfs_init_inode`,
-
- `
-general protection fault: 0000 [#1] SMP KASAN
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Modules linked in:
-CPU: 0 PID: 27388 Comm: syz-executor5 Not tainted 4.10.0-rc6+ #117
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-task: ffff88006252db40 task.stack: ffff880062090000
-RIP: 0010:__ip_options_echo+0x120a/0x1770
-RSP: 0018:ffff880062097530 EFLAGS: 00010206
-RAX: dffffc0000000000 RBX: ffff880062097910 RCX: 0000000000000000
-RDX: 0000000000000003 RSI: ffffffff83988dca RDI: 0000000000000018
-RBP: ffff8800620976a0 R08: ffff88006209791c R09: ffffed000c412f26
-R10: 0000000000000004 R11: ffffed000c412f25 R12: ffff880062097900
-R13: ffff88003a8c0a6c R14: 1ffff1000c412eb3 R15: 000000000000000d
-FS: 00007fd61b443700(0000) GS:ffff88003ec00000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 000000002095f000 CR3: 0000000062876000 CR4: 00000000000006f0
-`: `general protection fault in __ip_options_echo`,
-
- `
-==================================================================
-BUG: KASAN: slab-out-of-bounds in memcpy+0x1d/0x40 at addr ffff88003a6bd110
-Read of size 8 by task a.out/6260
-BUG: KASAN: slab-out-of-bounds in memcpy+0x1d/0x40 at addr ffff88003a6bd110
-Write of size 4 by task a.out/6260
-`: `KASAN: slab-out-of-bounds Read in memcpy`,
-
- `
-[ 50.583499] BUG: KASAN: use-after-free in remove_wait_queue+0xfb/0x120 at addr ffff88002db3cf50
-[ 50.583499] Write of size 8 by task syzkaller_execu/10568
-`: `KASAN: use-after-free Write in remove_wait_queue`,
-
- `
-[ 380.688570] BUG: KASAN: use-after-free in copy_from_iter+0xf30/0x15e0 at addr ffff880033f4b02a
-[ 380.688570] Read of size 4059 by task syz-executor/29957
-`: `KASAN: use-after-free Read in copy_from_iter`,
-
- `
-[23818.431954] BUG: KASAN: null-ptr-deref on address (null)
-
-[23818.438140] Read of size 4 by task syz-executor/22534
-
-[23818.443211] CPU: 3 PID: 22534 Comm: syz-executor Tainted: G U 3.18.0 #78
-`: `KASAN: null-ptr-deref Read`,
-
- `
-==================================================================
-BUG: KASAN: wild-memory-access on address ffe7087450a17000
-Read of size 205 by task syz-executor1/9018
-`: `KASAN: wild-memory-access Read`,
-
- `
-[ 149.188010] BUG: unable to handle kernel NULL pointer dereference at 000000000000058c
-unrelateed line
-[ 149.188010] IP: [<ffffffff8148e81d>] __lock_acquire+0x2bd/0x3410
-`: `BUG: unable to handle kernel NULL pointer dereference in __lock_acquire`,
-
- `
-[ 55.112844] BUG: unable to handle kernel NULL pointer dereference at 000000000000001a
-[ 55.113569] IP: skb_release_data+0x258/0x470
-`: `BUG: unable to handle kernel NULL pointer dereference in skb_release_data`,
-
- `
-[ 50.583499] WARNING: CPU: 2 PID: 2636 at ipc/shm.c:162 shm_open.isra.5.part.6+0x74/0x80
-[ 50.583499] Modules linked in:
-`: `WARNING in shm_open`,
-
- `
-[ 753.120788] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:316 dev_watchdog+0x648/0x770
-[ 753.122260] NETDEV WATCHDOG: eth0 (e1000): transmit queue 0 timed out
-`: `WARNING in dev_watchdog`,
-
- `
-------------[ cut here ]------------
-WARNING: CPU: 3 PID: 1975 at fs/locks.c:241 locks_free_lock_context+0x118/0x180()
-`: `WARNING in locks_free_lock_context`,
-
- `
-WARNING: CPU: 3 PID: 23810 at /linux-src-3.18/net/netlink/genetlink.c:1037 genl_unbind+0x110/0x130()
-`: `WARNING in genl_unbind`,
-
- `
-=======================================================
-[ INFO: possible circular locking dependency detected ]
-2.6.32-rc6-00035-g8b17a4f #1
--------------------------------------------------------
-kacpi_hotplug/246 is trying to acquire lock:
- (kacpid){+.+.+.}, at: [<ffffffff8105bbd0>] flush_workqueue+0x0/0xb0
-`: `possible deadlock in flush_workqueue`,
-
- `WARNING: possible circular locking dependency detected
-4.12.0-rc2-next-20170525+ #1 Not tainted
-------------------------------------------------------
-kworker/u4:2/54 is trying to acquire lock:
- (&buf->lock){+.+...}, at: [<ffffffff9edb41bb>] tty_buffer_flush+0xbb/0x3a0 drivers/tty/tty_buffer.c:221
-
-but task is already holding lock:
- (&o_tty->termios_rwsem/1){++++..}, at: [<ffffffff9eda4961>] isig+0xa1/0x4d0 drivers/tty/n_tty.c:1100
-
-which lock already depends on the new lock.
-`: `possible deadlock in tty_buffer_flush`,
-
- `
-[ 44.025025] =========================================================
-[ 44.025025] [ INFO: possible irq lock inversion dependency detected ]
-[ 44.025025] 4.10.0-rc8+ #228 Not tainted
-[ 44.025025] ---------------------------------------------------------
-[ 44.025025] syz-executor6/1577 just changed the state of lock:
-[ 44.025025] (&(&r->consumer_lock)->rlock){+.+...}, at: [<ffffffff82de6c86>] tun_queue_purge+0xe6/0x210
-`: `possible deadlock in tun_queue_purge`,
-
- `
-[ 121.451623] ======================================================
-[ 121.452013] [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ]
-[ 121.452013] 4.10.0-rc8+ #228 Not tainted
-[ 121.453507] ------------------------------------------------------
-[ 121.453507] syz-executor1/19557 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
-[ 121.453507] (&(&r->consumer_lock)->rlock){+.+...}, at: [<ffffffff82df4347>] tun_device_event+0x897/0xc70
-`: `possible deadlock in tun_device_event`,
-
- `
-[ 48.981019] =============================================
-[ 48.981019] [ INFO: possible recursive locking detected ]
-[ 48.981019] 4.11.0-rc4+ #198 Not tainted
-[ 48.981019] ---------------------------------------------
-[ 48.981019] kauditd/901 is trying to acquire lock:
-[ 48.981019] (audit_cmd_mutex){+.+.+.}, at: [<ffffffff81585f59>] audit_receive+0x79/0x360
-`: `possible deadlock in audit_receive`,
-
- `
-[ 131.449768] ======================================================
-[ 131.449777] [ INFO: possible circular locking dependency detected ]
-[ 131.449789] 3.10.37+ #1 Not tainted
-[ 131.449797] -------------------------------------------------------
-[ 131.449807] swapper/2/0 is trying to acquire lock:
-[ 131.449859] (&port_lock_key){-.-...}, at: [<c036a6dc>] serial8250_console_write+0x108/0x134
-[ 131.449866]
-`: `possible deadlock in serial8250_console_write`,
-
- `
-[ 52.261501] =================================
-[ 52.261501] [ INFO: inconsistent lock state ]
-[ 52.261501] 4.10.0+ #60 Not tainted
-[ 52.261501] ---------------------------------
-[ 52.261501] inconsistent {IN-SOFTIRQ-W} -> {SOFTIRQ-ON-W} usage.
-[ 52.261501] syz-executor3/5076 [HC0[0]:SC0[0]:HE1:SE1] takes:
-[ 52.261501] (&(&hashinfo->ehash_locks[i])->rlock){+.?...}, at: [<ffffffff83a6a370>] inet_ehash_insert+0x240/0xad0
-`: `inconsistent lock state in inet_ehash_insert`,
-
- `
-[ INFO: suspicious RCU usage. ]
-4.3.5-smp-DEV #101 Not tainted
--------------------------------
-net/core/filter.c:1917 suspicious rcu_dereference_protected() usage!
-other info that might help us debug this:
-`: `suspicious RCU usage at net/core/filter.c:LINE`,
-
- `
-[ 37.540474] ===============================
-[ 37.540478] [ INFO: suspicious RCU usage. ]
-[ 37.540495] 4.9.0-rc4+ #47 Not tainted
-2016/11/12 06:52:29 executing program 1:
-r0 = ioctl$KVM_CREATE_VM(0xffffffffffffffff, 0xae01, 0x0)
-[ 37.540522] -------------------------------
-[ 37.540535] ./include/linux/kvm_host.h:536 suspicious rcu_dereference_check() usage!
-[ 37.540539]
-[ 37.540539] other info that might help us debug this:
-[ 37.540539]
-[ 37.540548]
-[ 37.540548] rcu_scheduler_active = 1, debug_locks = 0
-[ 37.540557] 1 lock held by syz-executor/3985:
-[ 37.540566] #0:
-[ 37.540571] (
-[ 37.540576] &vcpu->mutex
-[ 37.540580] ){+.+.+.}
-[ 37.540609] , at:
-[ 37.540610] [<ffffffff81055862>] vcpu_load+0x22/0x70
-[ 37.540614]
-[ 37.540614] stack backtrace:
-`: `suspicious RCU usage at ./include/linux/kvm_host.h:LINE`,
-
- `
-[ 80.586804] =====================================
-[ 734.270366] [ BUG: syz-executor/31761 still has locks held! ]
-[ 734.307462] 4.8.0+ #30 Not tainted
-[ 734.325126] -------------------------------------
-[ 734.417271] 1 lock held by syz-executor/31761:
-[ 734.442178] #0: (&pipe->mutex/1){+.+.+.}, at: [<ffffffff81844c6b>] pipe_lock+0x5b/0x70
-[ 734.451474]
-[ 734.451474] stack backtrace:
-[ 734.521109] CPU: 0 PID: 31761 Comm: syz-executor Not tainted 4.8.0+ #30
-[ 734.527900] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-[ 734.537256] ffff8800458dfa38 ffffffff82d383a9 ffffffff00000000 fffffbfff1097248
-[ 734.545358] ffff88005639a700 ffff88005639a700 dffffc0000000000 ffff88005639a700
-[ 734.553482] ffff8800530148f8 ffff8800458dfa58 ffffffff81463cb5 0000000000000000
-[ 734.562654] Call Trace:
-[ 734.565257] [<ffffffff82d383a9>] dump_stack+0x12e/0x185
-[ 734.570819] [<ffffffff81463cb5>] debug_check_no_locks_held+0x125/0x140
-[ 734.577590] [<ffffffff860bae47>] unix_stream_read_generic+0x1317/0x1b70
-[ 734.584440] [<ffffffff860b9b30>] ? unix_getname+0x290/0x290
-[ 734.590238] [<ffffffff8146870b>] ? __lock_acquire+0x7fb/0x3410
-[ 734.596306] [<ffffffff81467f10>] ? debug_check_no_locks_freed+0x3c0/0x3c0
-[ 734.603322] [<ffffffff81905282>] ? fsnotify+0xca2/0x1020
-[ 734.608874] [<ffffffff81467f10>] ? debug_check_no_locks_freed+0x3c0/0x3c0
-[ 734.615894] [<ffffffff814475b0>] ? prepare_to_wait_event+0x450/0x450
-[ 734.622486] [<ffffffff860bb7fb>] unix_stream_splice_read+0x15b/0x1d0
-[ 734.629066] [<ffffffff860bb6a0>] ? unix_stream_read_generic+0x1b70/0x1b70
-[ 734.636086] [<ffffffff82b27c3a>] ? common_file_perm+0x15a/0x3a0
-[ 734.642242] [<ffffffff860b52f0>] ? unix_accept+0x460/0x460
-[ 734.647963] [<ffffffff82a5c02e>] ? security_file_permission+0x8e/0x1e0
-[ 734.654729] [<ffffffff860bb6a0>] ? unix_stream_read_generic+0x1b70/0x1b70
-[ 734.661754] [<ffffffff85afc54e>] sock_splice_read+0xbe/0x100
-[ 734.667649] [<ffffffff85afc490>] ? kernel_sock_shutdown+0x80/0x80
-[ 734.673973] [<ffffffff818d11ff>] do_splice_to+0x10f/0x170
-[ 734.679697] [<ffffffff818d6acc>] SyS_splice+0x114c/0x15b0
-[ 734.685329] [<ffffffff81506bf4>] ? SyS_futex+0x144/0x2e0
-[ 734.690961] [<ffffffff818d5980>] ? compat_SyS_vmsplice+0x250/0x250
-[ 734.697375] [<ffffffff8146750c>] ? trace_hardirqs_on_caller+0x44c/0x5e0
-[ 734.704230] [<ffffffff8100501a>] ? trace_hardirqs_on_thunk+0x1a/0x1c
-[ 734.710821] [<ffffffff86da6d05>] entry_SYSCALL_64_fastpath+0x23/0xc6
-[ 734.717436] [<ffffffff816939e7>] ? perf_event_mmap+0x77/0xb20
-`: `BUG: still has locks held in pipe_lock`,
-
- `
-=====================================
-[ BUG: bad unlock balance detected! ]
-4.10.0+ #179 Not tainted
--------------------------------------
-syz-executor1/21439 is trying to release lock (sk_lock-AF_INET) at:
-[<ffffffff83f7ac8b>] sctp_sendmsg+0x2a3b/0x38a0 net/sctp/socket.c:2007
-`: `BUG: bad unlock balance in sctp_sendmsg`,
-
- `
-[ 633.049984] =========================
-[ 633.049987] [ BUG: held lock freed! ]
-[ 633.049993] 4.10.0+ #260 Not tainted
-[ 633.049996] -------------------------
-[ 633.050005] syz-executor7/27251 is freeing memory ffff8800178f8180-ffff8800178f8a77, with a lock still held there!
-[ 633.050009] (slock-AF_INET6){+.-...}, at: [<ffffffff835f22c9>] sk_clone_lock+0x3d9/0x12c0
-`: `BUG: held lock freed in sk_clone_lock`,
-
- `
-[ 2569.618120] BUG: Bad rss-counter state mm:ffff88005fac4300 idx:0 val:15
-`: `BUG: Bad rss-counter state`,
-
- `
-[ 4.556968] ================================================================================
-[ 4.556972] UBSAN: Undefined behaviour in drivers/usb/core/devio.c:1517:25
-[ 4.556975] shift exponent -1 is negative
-[ 4.556979] CPU: 2 PID: 3624 Comm: usb Not tainted 4.5.0-rc1 #252
-[ 4.556981] Hardware name: Apple Inc. MacBookPro10,2/Mac-AFD8A9D944EA4843, BIOS MBP102.88Z.0106.B0A.1509130955 09/13/2015
-[ 4.556984] 0000000000000000 0000000000000000 ffffffff845c6528 ffff8802493b3c68
-[ 4.556988] ffffffff81b2e7d9 0000000000000007 ffff8802493b3c98 ffff8802493b3c80
-[ 4.556992] ffffffff81bcb87d ffffffffffffffff ffff8802493b3d10 ffffffff81bcc1c1
-[ 4.556996] Call Trace:
-[ 4.557004] [<ffffffff81b2e7d9>] dump_stack+0x45/0x6c
-[ 4.557010] [<ffffffff81bcb87d>] ubsan_epilogue+0xd/0x40
-[ 4.557015] [<ffffffff81bcc1c1>] __ubsan_handle_shift_out_of_bounds+0xf1/0x140
-[ 4.557030] [<ffffffff822247af>] ? proc_do_submiturb+0x9af/0x2c30
-[ 4.557034] [<ffffffff82226794>] proc_do_submiturb+0x2994/0x2c30
-`: `UBSAN: Undefined behaviour in drivers/usb/core/devio.c:LINE`,
-
- `
-[ 3.805449] ================================================================================
-[ 3.805453] UBSAN: Undefined behaviour in ./arch/x86/include/asm/atomic.h:156:2
-[ 3.805455] signed integer overflow:
-[ 3.805456] -1720106381 + -1531247276 cannot be represented in type 'int'
-[ 3.805460] CPU: 3 PID: 3235 Comm: cups-browsed Not tainted 4.5.0-rc1 #252
-[ 3.805461] Hardware name: Apple Inc. MacBookPro10,2/Mac-AFD8A9D944EA4843, BIOS MBP102.88Z.0106.B0A.1509130955 09/13/2015
-[ 3.805465] 0000000000000000 0000000000000000 ffffffffa4bb0554 ffff88025f2c37c8
-[ 3.805468] ffffffff81b2e7d9 0000000000000001 ffff88025f2c37f8 ffff88025f2c37e0
-[ 3.805470] ffffffff81bcb87d ffffffff84b16a74 ffff88025f2c3868 ffffffff81bcbc4d
-[ 3.805471] Call Trace:
-[ 3.805478] <IRQ> [<ffffffff81b2e7d9>] dump_stack+0x45/0x6c
-[ 3.805483] [<ffffffff81bcb87d>] ubsan_epilogue+0xd/0x40
-[ 3.805485] [<ffffffff81bcbc4d>] handle_overflow+0xbd/0xe0
-[ 3.805490] [<ffffffff82b3409f>] ? csum_partial_copy_nocheck+0xf/0x20
-[ 3.805493] [<ffffffff81d635df>] ? get_random_bytes+0x4f/0x100
-[ 3.805496] [<ffffffff81bcbc7e>] __ubsan_handle_add_overflow+0xe/0x10
-[ 3.805500] [<ffffffff82680a4a>] ip_idents_reserve+0x9a/0xd0
-[ 3.805503] [<ffffffff826835e9>] __ip_select_ident+0xc9/0x160
-`: `UBSAN: Undefined behaviour in ./arch/x86/include/asm/atomic.h:LINE`,
-
- `
-[ 50.583499] UBSAN: Undefined behaviour in kernel/time/hrtimer.c:310:16
-[ 50.583499] signed integer overflow:
-`: `UBSAN: Undefined behaviour in kernel/time/hrtimer.c:LINE`,
-
- `
-------------[ cut here ]------------
-kernel BUG at fs/buffer.c:1917!
-invalid opcode: 0000 [#1] SMP
-`: `kernel BUG at fs/buffer.c:LINE!`,
-
- `
-[ 167.347989] Disabling lock debugging due to kernel taint
-[ 167.353311] Unable to handle kernel paging request at virtual address dead000000000108
-[ 167.361225] pgd = ffffffc0a39a0000
-[ 167.364630] [dead000000000108] *pgd=0000000000000000, *pud=0000000000000000
-[ 167.371618] Internal error: Oops: 96000044 [#1] PREEMPT SMP
-[ 167.377205] CPU: 2 PID: 12170 Comm: syz-executor Tainted: G BU 3.18.0 #78
-[ 167.384944] Hardware name: Google Tegra210 Smaug Rev 1,3+ (DT)
-[ 167.390780] task: ffffffc016e04e80 ti: ffffffc016110000 task.ti: ffffffc016110000
-[ 167.398267] PC is at _snd_timer_stop.constprop.9+0x184/0x2b0
-[ 167.403931] LR is at _snd_timer_stop.constprop.9+0x184/0x2b0
-[ 167.409593] pc : [<ffffffc000d394c4>] lr : [<ffffffc000d394c4>] pstate: 200001c5
-[ 167.416985] sp : ffffffc016113990
-`: `unable to handle kernel paging request in _snd_timer_stop`,
-
- `
-Unable to handle kernel paging request at virtual address 0c0c9ca0
-pgd = c0004000
-[0c0c9ca0] *pgd=00000000
-Internal error: Oops: 5 [#1] PREEMPT
-last sysfs file: /sys/devices/virtual/irqk/irqk/dev
-Modules linked in: cmemk dm365mmap edmak irqk
-CPU: 0 Not tainted (2.6.32-17-ridgerun #22)
-PC is at blk_rq_map_sg+0x70/0x2c0
-LR is at mmc_queue_map_sg+0x2c/0xa4
-pc : [<c01751ac>] lr : [<c025a42c>] psr: 80000013
-sp : c23e1db0 ip : c3cf8848 fp : c23e1df4
-`: `unable to handle kernel paging request in blk_rq_map_sg`,
-
- `
-[ 2713.133889] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000013
-[ 2713.133889]
-[ 2713.136293] CPU: 2 PID: 1 Comm: init.sh Not tainted 4.8.0-rc3+ #35
-[ 2713.138395] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-[ 2713.138395] ffffffff884b8280 ffff88003e1f79b8 ffffffff82d1b1d9 ffffffff00000001
-[ 2713.138395] fffffbfff1097050 ffffffff86e90b20 ffff88003e1f7a90 dffffc0000000000
-[ 2713.138395] dffffc0000000000 ffff88006cc97af0 ffff88003e1f7a80 ffffffff816ab4e3
-[ 2713.153531] Call Trace:
-[ 2713.153531] [<ffffffff82d1b1d9>] dump_stack+0x12e/0x185
-[ 2713.153531] [<ffffffff816ab4e3>] panic+0x1e4/0x3ef
-[ 2713.153531] [<ffffffff816ab2ff>] ? set_ti_thread_flag+0x1e/0x1e
-[ 2713.153531] [<ffffffff8138e51e>] ? do_exit+0x8ce/0x2c10
-[ 2713.153531] [<ffffffff86c24cc7>] ? _raw_write_unlock_irq+0x27/0x70
-[ 2713.153531] [<ffffffff8139012f>] do_exit+0x24df/0x2c10
-[ 2713.153531] [<ffffffff8138dc50>] ? mm_update_next_owner+0x640/0x640
-`: `kernel panic: Attempted to kill init!`,
-
- `
-[ 616.344091] Kernel panic - not syncing: Fatal exception in interrupt
-`: `kernel panic: Fatal exception in interrupt`,
-
- `
-[ 616.309156] divide error: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN
-[ 616.310026] Dumping ftrace buffer:
-[ 616.310085] (ftrace buffer empty)
-[ 616.310085] Modules linked in:
-[ 616.310085] CPU: 1 PID: 22257 Comm: syz-executor Not tainted 4.8.0-rc3+ #35
-[ 616.310085] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-[ 616.312546] task: ffff88002fe9e580 task.stack: ffff8800316a8000
-[ 616.312546] RIP: 0010:[<ffffffff8575b41c>] [<ffffffff8575b41c>] snd_hrtimer_callback+0x1bc/0x3c0
-[ 616.312546] RSP: 0018:ffff88003ed07d98 EFLAGS: 00010006
-`: `divide error in snd_hrtimer_callback`,
-
- `
-divide error: 0000 [#1] SMP KASAN
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Modules linked in:
-CPU: 2 PID: 5664 Comm: syz-executor5 Not tainted 4.10.0-rc6+ #122
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-task: ffff88003a46adc0 task.stack: ffff880036a00000
-RIP: 0010:__tcp_select_window+0x6db/0x920
-RSP: 0018:ffff880036a07638 EFLAGS: 00010212
-RAX: 0000000000000480 RBX: ffff880036a077d0 RCX: ffffc900030db000
-RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88003809c3b5
-RBP: ffff880036a077f8 R08: ffff880039de5dc0 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000480
-R13: 0000000000000000 R14: ffff88003809bb00 R15: 0000000000000000
-FS: 00007f35ecf32700(0000) GS:ffff88006de00000(0000) knlGS:0000000000000000
-CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-CR2: 00000000205fb000 CR3: 0000000032467000 CR4: 00000000000006e0
-`: `divide error in __tcp_select_window`,
-
- `
-unreferenced object 0xffff880039a55260 (size 64):
- comm "executor", pid 11746, jiffies 4298984475 (age 16.078s)
- hex dump (first 32 bytes):
- 2f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 /...............
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- backtrace:
- [<ffffffff848a2f5f>] sock_kmalloc+0x7f/0xc0 net/core/sock.c:1774
- [<ffffffff84e5bea0>] do_ipv6_setsockopt.isra.7+0x15d0/0x2830 net/ipv6/ipv6_sockglue.c:483
- [<ffffffff84e5d19b>] ipv6_setsockopt+0x9b/0x140 net/ipv6/ipv6_sockglue.c:885
- [<ffffffff8544616c>] sctp_setsockopt+0x15c/0x36c0 net/sctp/socket.c:3702
- [<ffffffff848a2035>] sock_common_setsockopt+0x95/0xd0 net/core/sock.c:2645
- [<ffffffff8489f1d8>] SyS_setsockopt+0x158/0x240 net/socket.c:1736
-`: `memory leak in ipv6_setsockopt (size 64)`,
-
- `
-unreferenced object 0xffff8800342540c0 (size 1864):
- comm "a.out", pid 24109, jiffies 4299060398 (age 27.984s)
- hex dump (first 32 bytes):
- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- 0a 00 07 40 00 00 00 00 00 00 00 00 00 00 00 00 ...@............
- backtrace:
- [<ffffffff85c73a22>] kmemleak_alloc+0x72/0xc0 mm/kmemleak.c:915
- [<ffffffff816cc14d>] kmem_cache_alloc+0x12d/0x2c0 mm/slub.c:2607
- [<ffffffff84b642c9>] sk_prot_alloc+0x69/0x340 net/core/sock.c:1344
- [<ffffffff84b6d36a>] sk_alloc+0x3a/0x6b0 net/core/sock.c:1419
- [<ffffffff850c6d57>] inet6_create+0x2d7/0x1000 net/ipv6/af_inet6.c:173
- [<ffffffff84b5f47c>] __sock_create+0x37c/0x640 net/socket.c:1162
-`: `memory leak in sk_prot_alloc (size 1864)`,
-
- `
-unreferenced object 0xffff880133c63800 (size 1024):
- comm "exe", pid 1521, jiffies 4294894652
- backtrace:
- [<ffffffff810f8f36>] create_object+0x126/0x2b0
- [<ffffffff810f91d5>] kmemleak_alloc+0x25/0x60
- [<ffffffff810f32a3>] __kmalloc+0x113/0x200
- [<ffffffff811aa061>] ext4_mb_init+0x1b1/0x570
- [<ffffffff8119b3d2>] ext4_fill_super+0x1de2/0x26d0
-`: `memory leak in __kmalloc (size 1024)`,
-
- `
-unreferenced object 0xc625e000 (size 2048):
- comm "swapper", pid 1, jiffies 4294937521
- backtrace:
- [<c00c89f0>] create_object+0x11c/0x200
- [<c00c6764>] __kmalloc_track_caller+0x138/0x178
- [<c01d78c0>] __alloc_skb+0x4c/0x100
- [<c01d8490>] dev_alloc_skb+0x18/0x3c
- [<c0198b48>] eth_rx_fill+0xd8/0x3fc
- [<c019ac74>] mv_eth_start_internals+0x30/0xf8
-`: `memory leak in __alloc_skb (size 2048)`,
-
- `
-unreferenced object 0xdb8040c0 (size 20):
- comm "swapper", pid 0, jiffies 4294667296
- backtrace:
- [<c04fd8b3>] kmemleak_alloc+0x193/0x2b8
- [<c04f5e73>] kmem_cache_alloc+0x11e/0x174
- [<c0aae5a7>] debug_objects_mem_init+0x63/0x1d9
- [<c0a86a62>] start_kernel+0x2da/0x38d
- [<c0a86090>] i386_start_kernel+0x7f/0x98
- [<ffffffff>] 0xffffffff
-`: `memory leak in debug_objects_mem_init (size 20)`,
-
- `
-BUG: sleeping function called from invalid context at include/linux/wait.h:1095
-in_atomic(): 1, irqs_disabled(): 0, pid: 3658, name: syz-fuzzer
-`: `BUG: sleeping function called from invalid context at include/linux/wait.h:LINE `,
-
- `
-[ 277.780013] INFO: rcu_sched self-detected stall on CPU
-[ 277.781045] INFO: rcu_sched detected stalls on CPUs/tasks:
-[ 277.781153] 1-...: (65000 ticks this GP) idle=395/140000000000001/0 softirq=122875/122875 fqs=16248
-[ 277.781197] (detected by 0, t=65002 jiffies, g=72940, c=72939, q=1777)
-[ 277.781212] Sending NMI from CPU 0 to CPUs 1:
-[ 277.782014] NMI backtrace for cpu 1
-[ 277.782014] CPU: 1 PID: 12579 Comm: syz-executor0 Not tainted 4.11.0-rc3+ #71
-[ 277.782014] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-[ 277.782014] task: ffff8801d379e140 task.stack: ffff8801cd590000
-[ 277.782014] RIP: 0010:io_serial_in+0x6b/0x90
-[ 277.782014] RSP: 0018:ffff8801dbf066a0 EFLAGS: 00000002
-[ 277.782014] RAX: dffffc0000000000 RBX: 00000000000003fd RCX: 0000000000000000
-[ 277.782014] RDX: 00000000000003fd RSI: 0000000000000005 RDI: ffffffff87020018
-[ 277.782014] RBP: ffff8801dbf066b0 R08: 0000000000000003 R09: 0000000000000001
-[ 277.782014] R10: dffffc0000000000 R11: ffffffff867ba200 R12: ffffffff8701ffe0
-[ 277.782014] R13: 0000000000000020 R14: fffffbfff0e04041 R15: fffffbfff0e04005
-[ 277.782014] FS: 00007fce6fc10700(0000) GS:ffff8801dbf00000(0000) knlGS:0000000000000000
-[ 277.782014] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
-[ 277.782014] CR2: 000000002084fffc CR3: 00000001c4500000 CR4: 00000000001406e0
-[ 277.782014] Call Trace:
-[ 277.782014] <IRQ>
-[ 277.782014] wait_for_xmitr+0x89/0x1c0
-[ 277.782014] ? wait_for_xmitr+0x1c0/0x1c0
-[ 277.782014] serial8250_console_putchar+0x1f/0x60
-[ 277.782014] uart_console_write+0x57/0xe0
-[ 277.782014] serial8250_console_write+0x423/0x840
-[ 277.782014] ? check_noncircular+0x20/0x20
-[ 277.782014] hrtimer_interrupt+0x1c2/0x5e0
-[ 277.782014] local_apic_timer_interrupt+0x6f/0xe0
-[ 277.782014] smp_apic_timer_interrupt+0x71/0xa0
-[ 277.782014] apic_timer_interrupt+0x93/0xa0
-[ 277.782014] RIP: 0010:debug_lockdep_rcu_enabled.part.19+0xf/0x60
-[ 277.782014] RSP: 0018:ffff8801cd596778 EFLAGS: 00000202 ORIG_RAX: ffffffffffffff10
-[ 277.782014] RAX: dffffc0000000000 RBX: 1ffff10039ab2cf7 RCX: ffffc90001758000
-[ 277.782014] RDX: 0000000000000004 RSI: ffffffff840561f1 RDI: ffffffff852a75c0
-[ 277.782014] RBP: ffff8801cd596780 R08: 0000000000000001 R09: 0000000000000000
-[ 277.782014] R10: dffffc0000000000 R11: ffffffff867ba200 R12: 1ffff10039ab2d1b
-[ 277.782014] R13: ffff8801c44d1880 R14: ffff8801cd596918 R15: ffff8801d9b47840
-[ 277.782014] </IRQ>
-[ 277.782014] ? __sctp_write_space+0x5b1/0x920
-[ 277.782014] debug_lockdep_rcu_enabled+0x77/0x90
-[ 277.782014] __sctp_write_space+0x5b6/0x920
-[ 277.782014] ? __sctp_write_space+0x3f7/0x920
-[ 277.782014] ? sctp_transport_lookup_process+0x190/0x190
-[ 277.782014] ? trace_hardirqs_on_thunk+0x1a/0x1c
-`: `INFO: rcu detected stall in __sctp_write_space`,
-
- `
-INFO: rcu_preempt detected stalls on CPUs/tasks: { 2} (detected by 0, t=65008 jiffies, g=48068, c=48067, q=7339)
-`: `INFO: rcu detected stall`,
-
- `
-[ 317.168127] INFO: rcu_sched detected stalls on CPUs/tasks: { 0} (detected by 1, t=2179 jiffies, g=740, c=739, q=1)
-`: `INFO: rcu detected stall`,
-
- `
-[ 50.583499] something
-[ 50.583499] INFO: rcu_preempt self-detected stall on CPU
-[ 50.583499] 0: (20822 ticks this GP) idle=94b/140000000000001/0
-`: `INFO: rcu detected stall`,
-
- `
-[ 50.583499] INFO: rcu_sched self-detected stall on CPU
-`: `INFO: rcu detected stall`,
-
- `
-[ 152.002376] INFO: rcu_bh detected stalls on CPUs/tasks:
-`: `INFO: rcu detected stall`,
-
- `
-[ 72.159680] INFO: rcu_sched detected expedited stalls on CPUs/tasks: {
-`: `INFO: rcu detected stall`,
-
- `
-BUG: spinlock lockup suspected on CPU#2, syz-executor/12636
-`: `BUG: spinlock lockup suspected`,
-
- `
-BUG: soft lockup - CPU#3 stuck for 11s! [syz-executor:643]
-`: `BUG: soft lockup`,
-
- `
-BUG: spinlock lockup suspected on CPU#2, syz-executor/12636
-BUG: soft lockup - CPU#3 stuck for 11s! [syz-executor:643]
-`: `BUG: spinlock lockup suspected`,
-
- `
-BUG: soft lockup - CPU#3 stuck for 11s! [syz-executor:643]
-BUG: spinlock lockup suspected on CPU#2, syz-executor/12636
-`: `BUG: soft lockup`,
-
- `
-[ 213.269287] BUG: spinlock recursion on CPU#0, syz-executor7/5032
-[ 213.281506] lock: 0xffff88006c122d00, .magic: dead4ead, .owner: syz-executor7/5032, .owner_cpu: -1
-[ 213.285112] CPU: 0 PID: 5032 Comm: syz-executor7 Not tainted 4.9.0-rc7+ #58
-[ 213.285112] Hardware name: Google Google/Google, BIOS Google 01/01/2011
-[ 213.285112] ffff880057c17538 ffffffff834c3ae9 ffffffff00000000 1ffff1000af82e3a
-[ 213.285112] ffffed000af82e32 0000000041b58ab3 ffffffff89580db8 ffffffff834c37fb
-[ 213.285112] ffff880068ad8858 ffff880068ad8860 1ffff1000af82e2c 0000000041b58ab3
-[ 213.285112] Call Trace:
-[ 213.285112] [<ffffffff834c3ae9>] dump_stack+0x2ee/0x3f5
-[ 213.618060] [<ffffffff834c37fb>] ? arch_local_irq_restore+0x53/0x53
-[ 213.618060] [<ffffffff81576cd2>] spin_dump+0x152/0x280
-[ 213.618060] [<ffffffff81577284>] do_raw_spin_lock+0x3f4/0x5d0
-[ 213.618060] [<ffffffff881a2750>] _raw_spin_lock+0x40/0x50
-[ 213.618060] [<ffffffff814b7615>] ? __task_rq_lock+0xf5/0x330
-[ 213.618060] [<ffffffff814b7615>] __task_rq_lock+0xf5/0x330
-[ 213.618060] [<ffffffff814c89b2>] wake_up_new_task+0x592/0x1000
-`: `BUG: spinlock recursion`,
-
- `
-[ 843.240752] INFO: task getty:2986 blocked for more than 120 seconds.
-[ 843.247365] Not tainted 3.18.0-13280-g93f6785-dirty #12
-[ 843.253777] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
-[ 843.261764] getty D ffffffff83e27d60 28152 2986 1 0x00000002
-[ 843.269316] ffff88005bb6f908 0000000000000046 ffff880050b6ab70 ffff880061e1c5d0
-[ 843.277435] fffffbfff07c4802 ffff880061e1cde8 ffffffff83e27d60 ffff88005cb71580
-[ 843.285515] ffff88005bb6f968 0000000000000000 1ffff1000b76df2b ffff88005cb71580
-[ 843.293802] Call Trace:
-[ 843.296385] [<ffffffff835bdeb4>] schedule+0x64/0x160
-[ 843.301593] [<ffffffff835c9c1a>] schedule_timeout+0x2fa/0x5d0
-[ 843.307563] [<ffffffff835c9920>] ? console_conditional_schedule+0x30/0x30
-[ 843.314790] [<ffffffff811c1eb2>] ? pick_next_task_fair+0xeb2/0x1680
-[ 843.321296] [<ffffffff81d9b3ed>] ? check_preemption_disabled+0x3d/0x210
-[ 843.328311] [<ffffffff835cb4ec>] ldsem_down_write+0x1ac/0x357
-[ 843.334295] [<ffffffff835cb340>] ? ldsem_down_read+0x3a0/0x3a0
-[ 843.340437] [<ffffffff835bec62>] ? preempt_schedule+0x62/0xa0
-[ 843.346418] [<ffffffff835cbdd2>] tty_ldisc_lock_pair_timeout+0xb2/0x160
-[ 843.353363] [<ffffffff81f8b03f>] tty_ldisc_hangup+0x21f/0x720
-`: `INFO: task hung`,
-
- `
-BUG UNIX (Not tainted): kasan: bad access detected
-`: ``,
-
- `
-[901320.960000] INFO: lockdep is turned off.
-`: ``,
-
- `
-INFO: Stall ended before state dump start
-`: ``,
-
- `
-WARNING: /etc/ssh/moduli does not exist, using fixed modulus
-`: ``,
-
- `
-[ 1579.244514] BUG: KASAN: slab-out-of-bounds in ip6_fragment+0x1052/0x2d80 at addr ffff88004ec29b58
-`: `KASAN: slab-out-of-bounds in ip6_fragment at addr ADDR`,
-
- `
-[ 982.271203] BUG: spinlock bad magic on CPU#0, syz-executor12/24932
-`: `BUG: spinlock bad magic`,
-
- `
-[ 374.860710] BUG: KASAN: use-after-free in do_con_write.part.23+0x1c50/0x1cb0 at addr ffff88000012c43a
-`: `KASAN: use-after-free in do_con_write.part.23 at addr ADDR`,
-
- `
-[ 163.314570] WARNING: kernel stack regs at ffff8801d100fea8 in syz-executor1:16059 has bad 'bp' value ffff8801d100ff28
-`: `WARNING: kernel stack regs has bad 'bp' value`,
-
- `
-[ 76.825838] BUG: using __this_cpu_add() in preemptible [00000000] code: syz-executor0/10076
-`: `BUG: using __this_cpu_add() in preemptible [ADDR] code: syz-executor`,
-
- `
-[ 367.131148] BUG kmalloc-8 (Tainted: G B ): Object already free
-`: `BUG: Object already free`,
-
- `
-[ 92.396607] APIC base relocation is unsupported by KVM
-[ 95.445015] INFO: NMI handler (perf_event_nmi_handler) took too long to run: 1.356 msecs
-[ 95.445015] perf: interrupt took too long (3985 > 3976), lowering kernel.perf_event_max_sample_rate to 50000
-`: ``,
-
- `
-[ 92.396607] general protection fault: 0000 [#1] [ 387.811073] audit: type=1326 audit(1486238739.637:135): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=10020 comm="syz-executor1" exe="/root/syz-executor1" sig=31 arch=c000003e syscall=202 compat=0 ip=0x44fad9 code=0x0
-`: `general protection fault: 0000 [#1] [ 387.NUM] audit: type=1326 audit(ADDR.637:LINE): auid=ADDR uid=0 gid=0 ses=ADDR pid=NUM comm="syz-executor" exe="/root/syz-executor" sig=31 arc`,
-
- `
-[ 40.438790] BUG: Bad page map in process syz-executor6 pte:ffff8801a700ff00 pmd:1a700f067
-[ 40.447217] addr:00000000009ca000 vm_flags:00100073 anon_vma:ffff8801d16f20e0 mapping: (null) index:9ca
-[ 40.457560] file: (null) fault: (null) mmap: (null) readpage: (null)
-`: `BUG: Bad page map in process syz-executor pte:ADDR pmd:ADDR`,
-
- `
-======================================================
-WARNING: possible circular locking dependency detected
-4.12.0-rc2-next-20170529+ #1 Not tainted
-------------------------------------------------------
-kworker/u4:2/58 is trying to acquire lock:
- (&buf->lock){+.+...}, at: [<ffffffffa41b4e5b>] tty_buffer_flush+0xbb/0x3a0 drivers/tty/tty_buffer.c:221
-
-but task is already holding lock:
- (&o_tty->termios_rwsem/1){++++..}, at: [<ffffffffa41a5601>] isig+0xa1/0x4d0 drivers/tty/n_tty.c:1100
-
-which lock already depends on the new lock.
-`: `possible deadlock in tty_buffer_flush`,
-
- `
-Buffer I/O error on dev loop0, logical block 6, async page read
-BUG: Dentry ffff880175978600{i=8bb9,n=lo} still in use (1) [unmount of proc proc]
-------------[ cut here ]------------
-WARNING: CPU: 1 PID: 8922 at fs/dcache.c:1445 umount_check+0x246/0x2c0 fs/dcache.c:1436
-Kernel panic - not syncing: panic_on_warn set ...
-`: `BUG: Dentry still in use [unmount of proc proc]`,
-
- `
-WARNING: kernel stack frame pointer at ffff88003e1f7f40 in migration/1:14 has bad value ffffffff85632fb0
-unwind stack type:0 next_sp: (null) mask:0x6 graph_idx:0
-ffff88003ed06ef0: ffff88003ed06f78 (0xffff88003ed06f78)
-`: `WARNING: kernel stack frame pointer has bad value`,
-
- `
-BUG: Bad page state in process syz-executor9 pfn:199e00
-page:ffffea00059a9000 count:0 mapcount:0 mapping: (null) index:0x20a00
-TCP: request_sock_TCPv6: Possible SYN flooding on port 20032. Sending cookies. Check SNMP counters.
-flags: 0x200000000040019(locked|uptodate|dirty|swapbacked)
-raw: 0200000000040019 0000000000000000 0000000000020a00 00000000ffffffff
-raw: dead000000000100 dead000000000200 0000000000000000
-page dumped because: PAGE_FLAGS_CHECK_AT_FREE flag(s)
-`: `BUG: Bad page state`,
-
- `
-Kernel panic - not syncing: Couldn't open N_TTY ldisc for ptm1 --- error -12.
-CPU: 1 PID: 14836 Comm: syz-executor5 Not tainted 4.12.0-rc4+ #15
-Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
-Call Trace:
-`: `kernel panic: Couldn't open N_TTY ldisc`,
-
- `
-===============================
-[ INFO: suspicious RCU usage. ]
-4.3.5+ #8 Not tainted
--------------------------------
-net/ipv6/ip6_flowlabel.c:544 suspicious rcu_dereference_check() usage!
-
-other info that might help us debug this:
-`: `suspicious RCU usage at net/ipv6/ip6_flowlabel.c:LINE`,
-
- `[ 37.991733] [4:SdpManagerServi: 3874] KEK_PACK[3874] __add_kek :: item ffffffc822340400
-[ 38.018742] [4: system_server: 3344] logger: !@Boot_DEBUG: start networkManagement
-[ 38.039013] [2: kworker/2:1: 1608] Trustonic TEE: c01|TL_TZ_KEYSTORE: Starting
-`: ``,
-
- `[ 16.761978] [syscamera][msm_companion_pll_init::526][BIN_INFO::0x0008]
-[ 16.762666] [syscamera][msm_companion_pll_init::544][WAFER_INFO::0xcf80]
-[ 16.763144] [syscamera][msm_companion_pll_init::594][BIN_INFO::0x0008][WAFER_INFO::0xcf80][voltage 0.775]
-`: ``,
- }
- for log, crash := range tests {
- if strings.Index(log, "\r\n") != -1 {
- continue
- }
- tests[strings.Replace(log, "\n", "\r\n", -1)] = crash
- }
- for log, crash := range tests {
- containsCrash := ContainsCrash([]byte(log), nil)
- expectCrash := (crash != "")
- if expectCrash && !containsCrash {
- t.Fatalf("ContainsCrash did not find crash")
- }
- if !expectCrash && containsCrash {
- t.Fatalf("ContainsCrash found unexpected crash")
- }
- desc, _, _, _ := Parse([]byte(log), nil)
- if desc == "" && crash != "" {
- t.Fatalf("did not find crash message '%v' in:\n%v", crash, log)
- }
- if desc != "" && crash == "" {
- t.Fatalf("found bogus crash message '%v' in:\n%v", desc, log)
- }
- if desc != crash {
- t.Fatalf("extracted bad crash message:\n%+q\nwant:\n%+q", desc, crash)
- }
- }
-}
-
-func TestIgnores(t *testing.T) {
- const log = `
- BUG: bug1
- BUG: bug2
- `
- if !ContainsCrash([]byte(log), nil) {
- t.Fatalf("no crash")
- }
- if desc, _, _, _ := Parse([]byte(log), nil); desc != "BUG: bug1" {
- t.Fatalf("want `BUG: bug1`, found `%v`", desc)
- }
-
- ignores1 := []*regexp.Regexp{
- regexp.MustCompile("BUG: bug3"),
- }
- if !ContainsCrash([]byte(log), ignores1) {
- t.Fatalf("no crash")
- }
- if desc, _, _, _ := Parse([]byte(log), ignores1); desc != "BUG: bug1" {
- t.Fatalf("want `BUG: bug1`, found `%v`", desc)
- }
-
- ignores2 := []*regexp.Regexp{
- regexp.MustCompile("BUG: bug3"),
- regexp.MustCompile("BUG: bug1"),
- }
- if !ContainsCrash([]byte(log), ignores2) {
- t.Fatalf("no crash")
- }
- if desc, _, _, _ := Parse([]byte(log), ignores2); desc != "BUG: bug2" {
- t.Fatalf("want `BUG: bug2`, found `%v`", desc)
- }
-
- ignores3 := []*regexp.Regexp{
- regexp.MustCompile("BUG: bug3"),
- regexp.MustCompile("BUG: bug1"),
- regexp.MustCompile("BUG: bug2"),
- }
- if ContainsCrash([]byte(log), ignores3) {
- t.Fatalf("found crash, should be ignored")
- }
- if desc, _, _, _ := Parse([]byte(log), ignores3); desc != "" {
- t.Fatalf("found `%v`, should be ignored", desc)
- }
-}
-
-func TestParseText(t *testing.T) {
- tests := map[string]string{
- `mmap(&(0x7f00008dd000/0x1000)=nil, (0x1000), 0x3, 0x32, 0xffffffffffffffff, 0x0)
-getsockopt$NETROM_N2(r2, 0x103, 0x3, &(0x7f00008de000-0x4)=0x1, &(0x7f00008dd000)=0x4)
-[ 522.560667] nla_parse: 5 callbacks suppressed
-[ 522.565344] netlink: 3 bytes leftover after parsing attributes in process 'syz-executor5'.
-[ 536.429346] NMI watchdog: BUG: soft lockup - CPU#1 stuck for 11s! [syz-executor7:16813]
-mmap(&(0x7f0000557000/0x2000)=nil, (0x2000), 0x1, 0x11, r2, 0x1b)
-[ 536.437530] Modules linked in:
-[ 536.440808] CPU: 1 PID: 16813 Comm: syz-executor7 Not tainted 4.3.5-smp-DEV #119`: `nla_parse: 5 callbacks suppressed
-netlink: 3 bytes leftover after parsing attributes in process 'syz-executor5'.
-NMI watchdog: BUG: soft lockup - CPU#1 stuck for 11s! [syz-executor7:16813]
-Modules linked in:
-CPU: 1 PID: 16813 Comm: syz-executor7 Not tainted 4.3.5-smp-DEV #119
-`,
-
- // Raw 'dmesg -r' and /proc/kmsg output.
- `<6>[ 85.501187] WARNING: foo
-<6>[ 85.501187] nouveau [ DRM] suspending kernel object tree...
-executing program 1:
-<6>[ 85.525111] nouveau [ DRM] nouveau suspended
-<14>[ 85.912347] init: computing context for service 'clear-bcb'`: `WARNING: foo
-nouveau [ DRM] suspending kernel object tree...
-nouveau [ DRM] nouveau suspended
-init: computing context for service 'clear-bcb'
-`,
-
- `[ 94.864848] line 0
-[ 94.864848] line 1
-[ 94.864848] line 2
-[ 94.864848] line 3
-[ 94.864848] line 4
-[ 94.864848] line 5
-[ 95.145581] ==================================================================
-[ 95.152992] BUG: KASAN: use-after-free in snd_seq_queue_alloc+0x670/0x690 at addr ffff8801d0c6b080
-[ 95.162080] Read of size 4 by task syz-executor2/5764`: `line 2
-line 3
-line 4
-line 5
-==================================================================
-BUG: KASAN: use-after-free in snd_seq_queue_alloc+0x670/0x690 at addr ffff8801d0c6b080
-Read of size 4 by task syz-executor2/5764
-`,
- }
- for log, text0 := range tests {
- if desc, text, _, _ := Parse([]byte(log), nil); string(text) != text0 {
- t.Logf("log:\n%s", log)
- t.Logf("want text:\n%s", text0)
- t.Logf("got text:\n%s", text)
- t.Fatalf("bad text, desc: '%v'", desc)
- }
- }
-}
-
func TestReplace(t *testing.T) {
tests := []struct {
where string
@@ -936,530 +38,3 @@ func TestReplace(t *testing.T) {
})
}
}
-
-func TestSymbolizeLine(t *testing.T) {
- tests := []struct {
- line string
- result string
- }{
- // Normal symbolization.
- {
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x101/0x185\n",
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x101/0x185 foo.c:555\n",
- },
- {
- "RIP: 0010:[<ffffffff8188c0e6>] [<ffffffff8188c0e6>] foo+0x101/0x185\n",
- "RIP: 0010:[<ffffffff8188c0e6>] [<ffffffff8188c0e6>] foo+0x101/0x185 foo.c:555\n",
- },
- // Strip "./" file prefix.
- {
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x111/0x185\n",
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x111/0x185 foo.h:111\n",
- },
- // Needs symbolization, but symbolizer returns nothing.
- {
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x121/0x185\n",
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x121/0x185\n",
- },
- // Needs symbolization, but symbolizer returns error.
- {
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x131/0x185\n",
- "[ 2713.153531] [<ffffffff82d1b1d9>] foo+0x131/0x185\n",
- },
- // Needs symbolization, but symbol is missing.
- {
- "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0x131/0x185\n",
- "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0x131/0x185\n",
- },
- // Bad offset.
- {
- "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0xffffffffffffffffffff/0x185\n",
- "[ 2713.153531] [<ffffffff82d1b1d9>] bar+0xffffffffffffffffffff/0x185\n",
- },
- // Should not be symbolized.
- {
- "WARNING: CPU: 2 PID: 2636 at ipc/shm.c:162 foo+0x101/0x185\n",
- "WARNING: CPU: 2 PID: 2636 at ipc/shm.c:162 foo+0x101/0x185 foo.c:555\n",
- },
- // Tricky function name.
- {
- " [<ffffffff84e5bea0>] do_ipv6_setsockopt.isra.7.part.3+0x101/0x2830 \n",
- " [<ffffffff84e5bea0>] do_ipv6_setsockopt.isra.7.part.3+0x101/0x2830 net.c:111 \n",
- },
- // Old KASAN frame format (with tab).
- {
- "[ 50.419727] baz+0x101/0x200\n",
- "[ 50.419727] baz+0x101/0x200 baz.c:100\n",
- },
- // Inlined frames.
- {
- " [<ffffffff84e5bea0>] foo+0x141/0x185\n",
- " [<ffffffff84e5bea0>] inlined1 net.c:111 [inline]\n" +
- " [<ffffffff84e5bea0>] inlined2 mm.c:222 [inline]\n" +
- " [<ffffffff84e5bea0>] foo+0x141/0x185 kasan.c:333\n",
- },
- // Several symbols with the same name.
- {
- "[<ffffffff82d1b1d9>] baz+0x101/0x200\n",
- "[<ffffffff82d1b1d9>] baz+0x101/0x200 baz.c:100\n",
- },
- }
- symbols := map[string][]symbolizer.Symbol{
- "foo": []symbolizer.Symbol{
- {Addr: 0x1000000, Size: 0x190},
- },
- "do_ipv6_setsockopt.isra.7.part.3": []symbolizer.Symbol{
- {Addr: 0x2000000, Size: 0x2830},
- },
- "baz": []symbolizer.Symbol{
- {Addr: 0x3000000, Size: 0x100},
- {Addr: 0x4000000, Size: 0x200},
- {Addr: 0x5000000, Size: 0x300},
- },
- }
- symb := func(bin string, pc uint64) ([]symbolizer.Frame, error) {
- if bin != "vmlinux" {
- return nil, fmt.Errorf("unknown pc 0x%x", pc)
- }
- switch pc {
- case 0x1000100:
- return []symbolizer.Frame{
- {
- File: "/linux/foo.c",
- Line: 555,
- },
- }, nil
- case 0x1000110:
- return []symbolizer.Frame{
- {
- File: "/linux/./foo.h",
- Line: 111,
- },
- }, nil
- case 0x1000120:
- return nil, nil
- case 0x1000130:
- return nil, fmt.Errorf("unknown pc 0x%x", pc)
- case 0x2000100:
- return []symbolizer.Frame{
- {
- File: "/linux/net.c",
- Line: 111,
- },
- }, nil
- case 0x1000140:
- return []symbolizer.Frame{
- {
- Func: "inlined1",
- File: "/linux/net.c",
- Line: 111,
- Inline: true,
- },
- {
- Func: "inlined2",
- File: "/linux/mm.c",
- Line: 222,
- Inline: true,
- },
- {
- Func: "noninlined3",
- File: "/linux/kasan.c",
- Line: 333,
- Inline: false,
- },
- }, nil
- case 0x4000100:
- return []symbolizer.Frame{
- {
- File: "/linux/baz.c",
- Line: 100,
- },
- }, nil
- default:
- return nil, fmt.Errorf("unknown pc 0x%x", pc)
- }
- }
- for i, test := range tests {
- t.Run(fmt.Sprint(i), func(t *testing.T) {
- result := symbolizeLine(symb, symbols, "vmlinux", "/linux/", []byte(test.line))
- if test.result != string(result) {
- t.Errorf("want %q\n\t get %q", test.result, string(result))
- }
- })
- }
-}
-
-func TestParseReport(t *testing.T) {
- for i, test := range parseReportTests {
- t.Run(fmt.Sprint(i), func(t *testing.T) {
- _, text, _, _ := Parse([]byte(test.in), nil)
- if test.out != string(text) {
- t.Logf("expect:\n%v", test.out)
- t.Logf("got:\n%v", string(text))
- t.Fail()
- }
- })
- }
-}
-
-var parseReportTests = []struct {
- in string
- out string
-}{
- // Test that we strip the report after "Kernel panic - not syncing" line.
- {
- in: `clock_gettime(0x0, &(0x7f0000475000-0x10)={<r2=>0x0, <r3=>0x0})
-write$sndseq(0xffffffffffffffff, &(0x7f0000929000-0x150)=[{0x3197a6bf, 0x0, 0x4, 0x100, @tick=0x6, {0x7, 0x6c}, {0x2, 0x9}, @connect={{0x1ff, 0x1}, {0x3ff, 0x118c}}}, {0x100000000, 0x2, 0xfffffffffffffffa, 0x2, @tick=0x5d0, {0xf556, 0x7}, {0x3, 0x1000}, @quote={{0x5, 0xfffffffffffffff7}, 0x401, &(0x7f000084a000)={0x10000, 0x9d, 0x8, 0x4, @tick=0x336f, {0x5, 0x1d}, {0x8, 0x7}, @time=@time={0x0, 0x989680}}}}, {0x200, 0x0, 0x99a, 0x6, @tick=0x1, {0x1, 0x158}, {0x200, 0x5}, @connect={{0x8, 0x4}, {0xf2, 0x100000000}}}, {0x40, 0xfffffffffffffffa, 0x100000000, 0x5, @time={r2, r3+10000000}, {0x7, 0x5}, {0x3, 0x0}, @raw32={[0x2, 0x225, 0x1]}}, {0x75f, 0x8, 0x80, 0x80, @tick=0x6, {0x9, 0x9}, {0x1, 0x6}, @queue={0x7, {0x7, 0x6}}}, {0x80, 0x6, 0x3f, 0x80000001, @time={0x0, 0x0}, {0x3f, 0x9}, {0x96, 0xfffffffffffff800}, @raw8={"e5660e9238e6f58b35448e94"}}, {0x6, 0x6f8, 0x3, 0x6, @time={0x77359400, 0x0}, {0x100000001, 0x0}, {0xe870, 0x7}, @connect={{0x4, 0x80}, {0x7ff, 0xfffffffffffffffa}}}], 0x150)
-open$dir(&(0x7f0000265000-0x8)="2e2f66696c653000", 0x400, 0x44)
-[ 96.237449] blk_update_request: I/O error, dev loop0, sector 0
-[ 96.255274] ==================================================================
-[ 96.262735] BUG: KASAN: double-free or invalid-free in selinux_tun_dev_free_security+0x15/0x20
-[ 96.271481]
-[ 96.273098] CPU: 0 PID: 11514 Comm: syz-executor5 Not tainted 4.12.0-rc7+ #2
-[ 96.280268] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-[ 96.289602] Call Trace:
-[ 96.292180] dump_stack+0x194/0x257
-[ 96.295796] ? arch_local_irq_restore+0x53/0x53
-[ 96.300454] ? load_image_and_restore+0x10f/0x10f
-[ 96.305299] ? selinux_tun_dev_free_security+0x15/0x20
-[ 96.310565] print_address_description+0x7f/0x260
-[ 96.315393] ? selinux_tun_dev_free_security+0x15/0x20
-[ 96.320656] ? selinux_tun_dev_free_security+0x15/0x20
-[ 96.325919] kasan_report_double_free+0x55/0x80
-[ 96.330577] kasan_slab_free+0xa0/0xc0
-[ 96.334450] kfree+0xd3/0x260
-[ 96.337545] selinux_tun_dev_free_security+0x15/0x20
-[ 96.342636] security_tun_dev_free_security+0x48/0x80
-[ 96.347822] __tun_chr_ioctl+0x2cc1/0x3d60
-[ 96.352054] ? tun_chr_close+0x60/0x60
-[ 96.355925] ? lock_downgrade+0x990/0x990
-[ 96.360059] ? lock_release+0xa40/0xa40
-[ 96.364025] ? __lock_is_held+0xb6/0x140
-[ 96.368213] ? check_same_owner+0x320/0x320
-[ 96.372530] ? tun_chr_compat_ioctl+0x30/0x30
-[ 96.377005] tun_chr_ioctl+0x2a/0x40
-[ 96.380701] ? tun_chr_ioctl+0x2a/0x40
-[ 96.385099] do_vfs_ioctl+0x1b1/0x15c0
-[ 96.388981] ? ioctl_preallocate+0x2d0/0x2d0
-[ 96.393378] ? selinux_capable+0x40/0x40
-[ 96.397430] ? SyS_futex+0x2b0/0x3a0
-[ 96.401147] ? security_file_ioctl+0x89/0xb0
-[ 96.405547] SyS_ioctl+0x8f/0xc0
-[ 96.408912] entry_SYSCALL_64_fastpath+0x1f/0xbe
-[ 96.413651] RIP: 0033:0x4512c9
-[ 96.416824] RSP: 002b:00007fc65827bc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
-[ 96.424603] RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
-[ 96.431863] RDX: 000000002053c000 RSI: 00000000400454ca RDI: 0000000000000005
-[ 96.439133] RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
-[ 96.446389] R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004baa97
-[ 96.453647] R13: 00000000ffffffff R14: 0000000020124ff3 R15: 0000000000000000
-[ 96.460931]
-[ 96.462552] Allocated by task 11514:
-[ 96.466258] save_stack_trace+0x16/0x20
-[ 96.470212] save_stack+0x43/0xd0
-[ 96.473649] kasan_kmalloc+0xaa/0xd0
-[ 96.477347] kmem_cache_alloc_trace+0x101/0x6f0
-[ 96.481995] selinux_tun_dev_alloc_security+0x49/0x170
-[ 96.487250] security_tun_dev_alloc_security+0x6d/0xa0
-[ 96.492508] __tun_chr_ioctl+0x16bc/0x3d60
-[ 96.496722] tun_chr_ioctl+0x2a/0x40
-[ 96.500417] do_vfs_ioctl+0x1b1/0x15c0
-[ 96.504282] SyS_ioctl+0x8f/0xc0
-[ 96.507630] entry_SYSCALL_64_fastpath+0x1f/0xbe
-[ 96.512367]
-[ 96.513973] Freed by task 11514:
-[ 96.517323] save_stack_trace+0x16/0x20
-[ 96.521276] save_stack+0x43/0xd0
-[ 96.524709] kasan_slab_free+0x6e/0xc0
-[ 96.528577] kfree+0xd3/0x260
-[ 96.531666] selinux_tun_dev_free_security+0x15/0x20
-[ 96.536747] security_tun_dev_free_security+0x48/0x80
-[ 96.541918] tun_free_netdev+0x13b/0x1b0
-[ 96.545959] register_netdevice+0x8d0/0xee0
-[ 96.550260] __tun_chr_ioctl+0x1bae/0x3d60
-[ 96.554475] tun_chr_ioctl+0x2a/0x40
-[ 96.558169] do_vfs_ioctl+0x1b1/0x15c0
-[ 96.562035] SyS_ioctl+0x8f/0xc0
-[ 96.565385] entry_SYSCALL_64_fastpath+0x1f/0xbe
-[ 96.570116]
-[ 96.571724] The buggy address belongs to the object at ffff8801d5961a40
-[ 96.571724] which belongs to the cache kmalloc-32 of size 32
-[ 96.584186] The buggy address is located 0 bytes inside of
-[ 96.584186] 32-byte region [ffff8801d5961a40, ffff8801d5961a60)
-[ 96.595775] The buggy address belongs to the page:
-[ 96.600686] page:ffffea00066b8d38 count:1 mapcount:0 mapping:ffff8801d5961000 index:0xffff8801d5961fc1
-[ 96.610118] flags: 0x200000000000100(slab)
-[ 96.614335] raw: 0200000000000100 ffff8801d5961000 ffff8801d5961fc1 000000010000003f
-[ 96.622292] raw: ffffea0006723300 ffffea00066738b8 ffff8801dbc00100
-[ 96.628675] page dumped because: kasan: bad access detected
-[ 96.634373]
-[ 96.635978] Memory state around the buggy address:
-[ 96.640884] ffff8801d5961900: 00 00 01 fc fc fc fc fc 00 00 00 fc fc fc fc fc
-[ 96.648222] ffff8801d5961980: 00 00 00 00 fc fc fc fc fb fb fb fb fc fc fc fc
-[ 96.655567] >ffff8801d5961a00: 00 00 00 fc fc fc fc fc fb fb fb fb fc fc fc fc
-[ 96.663255] ^
-[ 96.668685] ffff8801d5961a80: fb fb fb fb fc fc fc fc 00 00 00 fc fc fc fc fc
-[ 96.676022] ffff8801d5961b00: 04 fc fc fc fc fc fc fc fb fb fb fb fc fc fc fc
-[ 96.683357] ==================================================================
-[ 96.690692] Disabling lock debugging due to kernel taint
-[ 96.696117] Kernel panic - not syncing: panic_on_warn set ...
-[ 96.696117]
-[ 96.703470] CPU: 0 PID: 11514 Comm: syz-executor5 Tainted: G B 4.12.0-rc7+ #2
-[ 96.711847] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-[ 96.721354] Call Trace:
-[ 96.723926] dump_stack+0x194/0x257
-[ 96.727539] ? arch_local_irq_restore+0x53/0x53
-[ 96.732366] ? kasan_end_report+0x32/0x50
-[ 96.736497] ? lock_downgrade+0x990/0x990
-[ 96.740631] panic+0x1e4/0x3fb
-[ 96.743807] ? percpu_up_read_preempt_enable.constprop.38+0xae/0xae
-[ 96.750194] ? add_taint+0x40/0x50
-[ 96.753723] ? selinux_tun_dev_free_security+0x15/0x20
-[ 96.758976] ? selinux_tun_dev_free_security+0x15/0x20
-[ 96.764233] kasan_end_report+0x50/0x50
-[ 96.768192] kasan_report_double_free+0x72/0x80
-[ 96.772843] kasan_slab_free+0xa0/0xc0
-[ 96.776711] kfree+0xd3/0x260
-[ 96.779802] selinux_tun_dev_free_security+0x15/0x20
-[ 96.784886] security_tun_dev_free_security+0x48/0x80
-[ 96.790061] __tun_chr_ioctl+0x2cc1/0x3d60
-[ 96.794285] ? tun_chr_close+0x60/0x60
-[ 96.798152] ? lock_downgrade+0x990/0x990
-[ 96.802803] ? lock_release+0xa40/0xa40
-[ 96.806763] ? __lock_is_held+0xb6/0x140
-[ 96.810829] ? check_same_owner+0x320/0x320
-[ 96.815137] ? tun_chr_compat_ioctl+0x30/0x30
-[ 96.819611] tun_chr_ioctl+0x2a/0x40
-[ 96.823306] ? tun_chr_ioctl+0x2a/0x40
-[ 96.827181] do_vfs_ioctl+0x1b1/0x15c0
-[ 96.831057] ? ioctl_preallocate+0x2d0/0x2d0
-[ 96.835450] ? selinux_capable+0x40/0x40
-[ 96.839494] ? SyS_futex+0x2b0/0x3a0
-[ 96.843200] ? security_file_ioctl+0x89/0xb0
-[ 96.847590] SyS_ioctl+0x8f/0xc0
-[ 96.850941] entry_SYSCALL_64_fastpath+0x1f/0xbe
-[ 96.855676] RIP: 0033:0x4512c9
-[ 96.859020] RSP: 002b:00007fc65827bc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
-[ 96.866708] RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
-[ 96.873956] RDX: 000000002053c000 RSI: 00000000400454ca RDI: 0000000000000005
-[ 96.881208] RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
-[ 96.888461] R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004baa97
-[ 96.895708] R13: 00000000ffffffff R14: 0000000020124ff3 R15: 0000000000000000
-[ 96.903943] Dumping ftrace buffer:
-[ 96.907460] (ftrace buffer empty)
-[ 96.911148] Kernel Offset: disabled
-[ 96.914753] Rebooting in 86400 seconds..`,
- out: `blk_update_request: I/O error, dev loop0, sector 0
-==================================================================
-BUG: KASAN: double-free or invalid-free in selinux_tun_dev_free_security+0x15/0x20
-
-CPU: 0 PID: 11514 Comm: syz-executor5 Not tainted 4.12.0-rc7+ #2
-Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-Call Trace:
- dump_stack+0x194/0x257
- print_address_description+0x7f/0x260
- kasan_report_double_free+0x55/0x80
- kasan_slab_free+0xa0/0xc0
- kfree+0xd3/0x260
- selinux_tun_dev_free_security+0x15/0x20
- security_tun_dev_free_security+0x48/0x80
- __tun_chr_ioctl+0x2cc1/0x3d60
- tun_chr_ioctl+0x2a/0x40
- do_vfs_ioctl+0x1b1/0x15c0
- SyS_ioctl+0x8f/0xc0
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-RIP: 0033:0x4512c9
-RSP: 002b:00007fc65827bc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
-RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
-RDX: 000000002053c000 RSI: 00000000400454ca RDI: 0000000000000005
-RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004baa97
-R13: 00000000ffffffff R14: 0000000020124ff3 R15: 0000000000000000
-
-Allocated by task 11514:
- save_stack_trace+0x16/0x20
- save_stack+0x43/0xd0
- kasan_kmalloc+0xaa/0xd0
- kmem_cache_alloc_trace+0x101/0x6f0
- selinux_tun_dev_alloc_security+0x49/0x170
- security_tun_dev_alloc_security+0x6d/0xa0
- __tun_chr_ioctl+0x16bc/0x3d60
- tun_chr_ioctl+0x2a/0x40
- do_vfs_ioctl+0x1b1/0x15c0
- SyS_ioctl+0x8f/0xc0
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-
-Freed by task 11514:
- save_stack_trace+0x16/0x20
- save_stack+0x43/0xd0
- kasan_slab_free+0x6e/0xc0
- kfree+0xd3/0x260
- selinux_tun_dev_free_security+0x15/0x20
- security_tun_dev_free_security+0x48/0x80
- tun_free_netdev+0x13b/0x1b0
- register_netdevice+0x8d0/0xee0
- __tun_chr_ioctl+0x1bae/0x3d60
- tun_chr_ioctl+0x2a/0x40
- do_vfs_ioctl+0x1b1/0x15c0
- SyS_ioctl+0x8f/0xc0
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-
-The buggy address belongs to the object at ffff8801d5961a40
- which belongs to the cache kmalloc-32 of size 32
-The buggy address is located 0 bytes inside of
- 32-byte region [ffff8801d5961a40, ffff8801d5961a60)
-The buggy address belongs to the page:
-page:ffffea00066b8d38 count:1 mapcount:0 mapping:ffff8801d5961000 index:0xffff8801d5961fc1
-flags: 0x200000000000100(slab)
-raw: 0200000000000100 ffff8801d5961000 ffff8801d5961fc1 000000010000003f
-raw: ffffea0006723300 ffffea00066738b8 ffff8801dbc00100
-page dumped because: kasan: bad access detected
-
-Memory state around the buggy address:
- ffff8801d5961900: 00 00 01 fc fc fc fc fc 00 00 00 fc fc fc fc fc
- ffff8801d5961980: 00 00 00 00 fc fc fc fc fb fb fb fb fc fc fc fc
->ffff8801d5961a00: 00 00 00 fc fc fc fc fc fb fb fb fb fc fc fc fc
- ^
- ffff8801d5961a80: fb fb fb fb fc fc fc fc 00 00 00 fc fc fc fc fc
- ffff8801d5961b00: 04 fc fc fc fc fc fc fc fb fb fb fb fc fc fc fc
-==================================================================
-`,
- },
-
- // Test that we don't strip the report after "Kernel panic - not syncing" line
- // because we have too few lines before it.
- {
- in: `2017/06/30 10:13:30 executing program 1:
-mmap(&(0x7f0000000000/0xd000)=nil, (0xd000), 0x2000001, 0x4012, 0xffffffffffffffff, 0x0)
-r0 = socket$inet6_sctp(0xa, 0x205, 0x84)
-mmap(&(0x7f000000d000/0x1000)=nil, (0x1000), 0x3, 0x32, 0xffffffffffffffff, 0x0)
-r1 = openat$autofs(0xffffffffffffff9c, &(0x7f000000d000)="2f6465762f6175746f667300", 0x472440, 0x0)
-mmap(&(0x7f000000d000/0x1000)=nil, (0x1000), 0x3, 0x32, 0xffffffffffffffff, 0x0)
-ioctl$KVM_CREATE_DEVICE(r1, 0xc00caee0, &(0x7f000000d000)={0x3, r0, 0x0})
-setsockopt$inet_sctp6_SCTP_I_WANT_MAPPED_V4_ADDR(r0, 0x84, 0xc, &(0x7f0000007000)=0x1, 0x4)
-setsockopt$inet_sctp6_SCTP_ASSOCINFO(r0, 0x84, 0x1, &(0x7f0000ece000)={0x0, 0x20, 0x0, 0x7, 0x0, 0x0}, 0x14)
-[ 55.950418] ------------[ cut here ]------------
-[ 55.967976] WARNING: CPU: 1 PID: 8377 at arch/x86/kvm/x86.c:7209 kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-[ 56.041277] Kernel panic - not syncing: panic_on_warn set ...
-[ 56.041277]
-[ 56.048693] CPU: 1 PID: 8377 Comm: syz-executor6 Not tainted 4.12.0-rc7+ #2
-[ 56.055794] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-[ 56.065137] Call Trace:
-[ 56.067707] dump_stack+0x194/0x257
-[ 56.071334] ? arch_local_irq_restore+0x53/0x53
-[ 56.076017] panic+0x1e4/0x3fb
-[ 56.079188] ? percpu_up_read_preempt_enable.constprop.38+0xae/0xae
-[ 56.085571] ? load_image_and_restore+0x10f/0x10f
-[ 56.090396] ? __warn+0x1a9/0x1e0
-[ 56.093850] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-[ 56.098863] __warn+0x1c4/0x1e0
-[ 56.102131] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-[ 56.107126] report_bug+0x211/0x2d0
-[ 56.110735] fixup_bug+0x40/0x90
-[ 56.114123] do_trap+0x260/0x390
-[ 56.117481] do_error_trap+0x120/0x390
-[ 56.121352] ? do_trap+0x390/0x390
-[ 56.124875] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-[ 56.129868] ? fpu__activate_curr+0xed/0x650
-[ 56.134251] ? futex_wait_setup+0x14a/0x3d0
-[ 56.138551] ? fpstate_init+0x160/0x160
-[ 56.142510] ? trace_hardirqs_off_thunk+0x1a/0x1c
-[ 56.147324] ? vcpu_load+0x1c/0x70
-[ 56.150845] do_invalid_op+0x1b/0x20
-[ 56.154533] invalid_op+0x1e/0x30
-[ 56.157961] RIP: 0010:kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-[ 56.163554] RSP: 0018:ffff8801c5e37720 EFLAGS: 00010212
-[ 56.168891] RAX: 0000000000010000 RBX: ffff8801c8baa000 RCX: ffffc90004763000
-[ 56.176134] RDX: 0000000000000052 RSI: ffffffff810de507 RDI: ffff8801c6358f60
-[ 56.183377] RBP: ffff8801c5e37a80 R08: 1ffffffff097c151 R09: 0000000000000001
-[ 56.190621] R10: 0000000000000000 R11: ffffffff81066ddc R12: 0000000000000000
-[ 56.197865] R13: ffff8801c52be780 R14: ffff8801c65be600 R15: ffff8801c6358d40
-[ 56.205118] ? vcpu_load+0x1c/0x70
-[ 56.208636] ? kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-[ 56.213644] ? debug_check_no_locks_freed+0x3c0/0x3c0
-[ 56.218815] ? drop_futex_key_refs.isra.12+0x63/0xb0
-[ 56.223894] ? futex_wait+0x6cf/0xa00
-[ 56.227671] ? kvm_arch_vcpu_runnable+0x520/0x520
-[ 56.232513] ? vmcs_load+0xb3/0x180
-[ 56.236115] ? kvm_arch_has_assigned_device+0x57/0xe0
-[ 56.241280] ? kvm_arch_end_assignment+0x20/0x20
-[ 56.246008] ? futex_wait_setup+0x3d0/0x3d0
-[ 56.250303] ? lock_downgrade+0x990/0x990
-[ 56.254430] ? vmx_vcpu_load+0x63f/0xa30
-[ 56.258468] ? handle_invept+0x5f0/0x5f0
-[ 56.262505] ? get_futex_key+0x1c10/0x1c10
-[ 56.266721] ? kvm_arch_vcpu_load+0x4b0/0x8f0
-[ 56.271193] ? kvm_arch_dev_ioctl+0x490/0x490
-[ 56.275663] ? task_rq_unlock+0x90/0x90
-[ 56.279615] ? up_write+0x6b/0x120
-[ 56.283141] kvm_vcpu_ioctl+0x627/0x1110
-[ 56.287176] ? kvm_vcpu_ioctl+0x627/0x1110
-[ 56.291393] ? vcpu_stat_get_per_vm_open+0x30/0x30
-[ 56.296298] ? find_held_lock+0x35/0x1d0
-[ 56.300342] ? __fget+0x333/0x570
-[ 56.303777] ? lock_downgrade+0x990/0x990
-[ 56.307907] ? lock_release+0xa40/0xa40
-[ 56.311866] ? __lock_is_held+0xb6/0x140
-[ 56.315916] ? __fget+0x35c/0x570
-[ 56.319349] ? iterate_fd+0x3f0/0x3f0
-[ 56.323135] ? vcpu_stat_get_per_vm_open+0x30/0x30
-[ 56.328041] do_vfs_ioctl+0x1b1/0x15c0
-[ 56.331907] ? ioctl_preallocate+0x2d0/0x2d0
-[ 56.336292] ? selinux_capable+0x40/0x40
-[ 56.340332] ? SyS_futex+0x2b0/0x3a0
-[ 56.344032] ? security_file_ioctl+0x89/0xb0
-[ 56.348420] SyS_ioctl+0x8f/0xc0
-[ 56.351776] entry_SYSCALL_64_fastpath+0x1f/0xbe
-[ 56.356509] RIP: 0033:0x4512c9
-[ 56.359673] RSP: 002b:00007f7e59d4fc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
-[ 56.367353] RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
-[ 56.374598] RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000016
-[ 56.381841] RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
-[ 56.389084] R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004b93f0
-[ 56.396328] R13: 00000000ffffffff R14: 0000000020000000 R15: 0000000000ffa000
-[ 56.404665] Dumping ftrace buffer:
-[ 56.408256] (ftrace buffer empty)
-[ 56.411940] Kernel Offset: disabled
-[ 56.415543] Rebooting in 86400 seconds..
-`,
- out: `------------[ cut here ]------------
-WARNING: CPU: 1 PID: 8377 at arch/x86/kvm/x86.c:7209 kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-Kernel panic - not syncing: panic_on_warn set ...
-
-CPU: 1 PID: 8377 Comm: syz-executor6 Not tainted 4.12.0-rc7+ #2
-Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
-Call Trace:
- dump_stack+0x194/0x257
- panic+0x1e4/0x3fb
- __warn+0x1c4/0x1e0
- report_bug+0x211/0x2d0
- fixup_bug+0x40/0x90
- do_trap+0x260/0x390
- do_error_trap+0x120/0x390
- do_invalid_op+0x1b/0x20
- invalid_op+0x1e/0x30
-RIP: 0010:kvm_arch_vcpu_ioctl_run+0x1f7/0x5a00
-RSP: 0018:ffff8801c5e37720 EFLAGS: 00010212
-RAX: 0000000000010000 RBX: ffff8801c8baa000 RCX: ffffc90004763000
-RDX: 0000000000000052 RSI: ffffffff810de507 RDI: ffff8801c6358f60
-RBP: ffff8801c5e37a80 R08: 1ffffffff097c151 R09: 0000000000000001
-R10: 0000000000000000 R11: ffffffff81066ddc R12: 0000000000000000
-R13: ffff8801c52be780 R14: ffff8801c65be600 R15: ffff8801c6358d40
- kvm_vcpu_ioctl+0x627/0x1110
- do_vfs_ioctl+0x1b1/0x15c0
- SyS_ioctl+0x8f/0xc0
- entry_SYSCALL_64_fastpath+0x1f/0xbe
-RIP: 0033:0x4512c9
-RSP: 002b:00007f7e59d4fc08 EFLAGS: 00000216 ORIG_RAX: 0000000000000010
-RAX: ffffffffffffffda RBX: 0000000000718000 RCX: 00000000004512c9
-RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000016
-RBP: 0000000000000082 R08: 0000000000000000 R09: 0000000000000000
-R10: 0000000000000000 R11: 0000000000000216 R12: 00000000004b93f0
-R13: 00000000ffffffff R14: 0000000020000000 R15: 0000000000ffa000
-Dumping ftrace buffer:
- (ftrace buffer empty)
-Kernel Offset: disabled
-Rebooting in 86400 seconds..
-`,
- },
-}
diff --git a/pkg/report/windows.go b/pkg/report/windows.go
new file mode 100644
index 000000000..8e44d9432
--- /dev/null
+++ b/pkg/report/windows.go
@@ -0,0 +1,52 @@
+// Copyright 2017 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.
+
+package report
+
+import (
+ "regexp"
+
+ "github.com/google/syzkaller/pkg/symbolizer"
+)
+
+type windows struct {
+ kernelSrc string
+ kernelObj string
+ symbols map[string][]symbolizer.Symbol
+ ignores []*regexp.Regexp
+}
+
+func ctorWindows(kernelSrc, kernelObj string, symbols map[string][]symbolizer.Symbol,
+ ignores []*regexp.Regexp) (Reporter, error) {
+ ctx := &windows{
+ kernelSrc: kernelSrc,
+ kernelObj: kernelObj,
+ symbols: symbols,
+ ignores: ignores,
+ }
+ return ctx, nil
+}
+
+func (ctx *windows) ContainsCrash(output []byte) bool {
+ panic("not implemented")
+}
+
+func (ctx *windows) Parse(output []byte) (desc string, text []byte, start int, end int) {
+ panic("not implemented")
+}
+
+func (ctx *windows) Symbolize(text []byte) ([]byte, error) {
+ panic("not implemented")
+}
+
+func (ctx *windows) ExtractConsoleOutput(output []byte) (result []byte) {
+ panic("not implemented")
+}
+
+func (ctx *windows) ExtractGuiltyFile(report []byte) string {
+ panic("not implemented")
+}
+
+func (ctx *windows) GetMaintainers(file string) ([]string, error) {
+ panic("not implemented")
+}
diff --git a/pkg/repro/repro.go b/pkg/repro/repro.go
index 32a48f87a..51b055640 100644
--- a/pkg/repro/repro.go
+++ b/pkg/repro/repro.go
@@ -44,6 +44,7 @@ type Result struct {
type context struct {
cfg *mgrconfig.Config
+ reporter report.Reporter
crashDesc string
instances chan *instance
bootRequests chan int
@@ -60,7 +61,8 @@ type instance struct {
executorBin string
}
-func Run(crashLog []byte, cfg *mgrconfig.Config, vmPool *vm.Pool, vmIndexes []int) (*Result, error) {
+func Run(crashLog []byte, cfg *mgrconfig.Config, reporter report.Reporter, vmPool *vm.Pool,
+ vmIndexes []int) (*Result, error) {
if len(vmIndexes) == 0 {
return nil, fmt.Errorf("no VMs provided")
}
@@ -72,7 +74,7 @@ func Run(crashLog []byte, cfg *mgrconfig.Config, vmPool *vm.Pool, vmIndexes []in
if len(entries) == 0 {
return nil, fmt.Errorf("crash log does not contain any programs")
}
- crashDesc, _, crashStart, _ := report.Parse(crashLog, cfg.ParsedIgnores)
+ crashDesc, _, crashStart, _ := reporter.Parse(crashLog)
if crashDesc == "" {
crashStart = len(crashLog) // assuming VM hanged
crashDesc = "hang"
@@ -80,6 +82,7 @@ func Run(crashLog []byte, cfg *mgrconfig.Config, vmPool *vm.Pool, vmIndexes []in
ctx := &context{
cfg: cfg,
+ reporter: reporter,
crashDesc: crashDesc,
instances: make(chan *instance, len(vmIndexes)),
bootRequests: make(chan int, len(vmIndexes)),
@@ -591,7 +594,7 @@ func (ctx *context) testImpl(inst *vm.Instance, command string, duration time.Du
if err != nil {
return false, fmt.Errorf("failed to run command in VM: %v", err)
}
- desc, report, output, crashed, _ := vm.MonitorExecution(outc, errc, false, ctx.cfg.ParsedIgnores)
+ desc, report, output, crashed, _ := vm.MonitorExecution(outc, errc, false, ctx.reporter)
if !crashed {
ctx.reproLog(2, "program did not crash")
return false, nil