[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110515105505.GA21631@joi.lan>
Date: Sun, 15 May 2011 12:55:05 +0200
From: Marcin Slusarz <marcin.slusarz@...il.com>
To: LKML <linux-kernel@...r.kernel.org>
Cc: Tejun Heo <tj@...nel.org>,
Catalin Marinas <catalin.marinas@....com>
Subject: early kernel crash when kmemleak is enabled
Hi
Yesterday I enabled kmemleak for the first time and it greeted me with a panic :).
It's fully reproducible in qemu (for some reason only when kvm is enabled).
Dmesg, .config and disassembly of __queue_work (which it dies in) below.
Booting with kmemleak=off does not crash the kernel.
[ 0.000000] Linux version 2.6.39-rc4-nv+ (marcin@joi) (gcc version 4.4.5 (Gentoo 4.4.5 p1.0, pie-0.4.5) ) #697 SMP PREEMPT Sun May 15 12:30:37 CEST 2011
[ 0.000000] Command line: console=ttyS0
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f400 (usable)
[ 0.000000] BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 0000000007ffd000 (usable)
[ 0.000000] BIOS-e820: 0000000007ffd000 - 0000000008000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fffc0000 - 0000000100000000 (reserved)
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] DMI 2.4 present.
[ 0.000000] No AGP bridge found
[ 0.000000] last_pfn = 0x7ffd max_arch_pfn = 0x400000000
[ 0.000000] PAT not supported by CPU.
[ 0.000000] init_memory_mapping: 0000000000000000-0000000007ffd000
[ 0.000000] ACPI: RSDP 00000000000fdbb0 00014 (v00 BOCHS )
[ 0.000000] ACPI: RSDT 0000000007ffde30 00034 (v01 BOCHS BXPCRSDT 00000001 BXPC 00000001)
[ 0.000000] ACPI: FACP 0000000007fffe70 00074 (v01 BOCHS BXPCFACP 00000001 BXPC 00000001)
[ 0.000000] ACPI: DSDT 0000000007ffdfd0 01E22 (v01 BXPC BXDSDT 00000001 INTL 20090123)
[ 0.000000] ACPI: FACS 0000000007fffe00 00040
[ 0.000000] ACPI: SSDT 0000000007ffdf90 00037 (v01 BOCHS BXPCSSDT 00000001 BXPC 00000001)
[ 0.000000] ACPI: APIC 0000000007ffdeb0 00072 (v01 BOCHS BXPCAPIC 00000001 BXPC 00000001)
[ 0.000000] ACPI: HPET 0000000007ffde70 00038 (v01 BOCHS BXPCHPET 00000001 BXPC 00000001)
[ 0.000000] Zone PFN ranges:
[ 0.000000] DMA 0x00000010 -> 0x00001000
[ 0.000000] DMA32 0x00001000 -> 0x00100000
[ 0.000000] Normal empty
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[2] active PFN ranges
[ 0.000000] 0: 0x00000010 -> 0x0000009f
[ 0.000000] 0: 0x00000100 -> 0x00007ffd
[ 0.000000] ACPI: PM-Timer IO Port: 0xb008
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 1, version 17, address 0xfec00000, GSI 0-23
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs
[ 0.000000] Allocating PCI resources starting at 8000000 (gap: 8000000:f7fc0000)
[ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:1 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 26 pages/cpu @ffff880007c00000 s76224 r8192 d22080 u2097152
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32199
[ 0.000000] Kernel command line: console=ttyS0
[ 0.000000] PID hash table entries: 512 (order: 0, 4096 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 4, 65536 bytes)
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Memory: 112972k/131060k available (4866k kernel code, 452k absent, 17636k reserved, 5923k data, 1740k init)
[ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] Preemptable hierarchical RCU implementation.
[ 0.000000] NR_IRQS:512
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [ttyS0] enabled
[ 0.000000] Fast TSC calibration using PIT
[ 0.000000] Detected 2672.813 MHz processor.
[ 0.020003] Calibrating delay loop (skipped), value calculated using timer frequency.. 5345.62 BogoMIPS (lpj=26728130)
[ 0.021929] pid_max: default: 32768 minimum: 301
[ 0.023380] Mount-cache hash table entries: 256
[ 0.030625] mce: CPU supports 10 MCE banks
[ 0.031614] SMP alternatives: switching to UP code
[ 0.040891] debug: unmapping init memory ffffffff81c3e000..ffffffff81c43000
[ 0.042167] ACPI: Core revision 20110316
[ 0.077518] Setting APIC routing to flat
[ 0.079415] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.100047] BUG: unable to handle kernel NULL pointer dereference at (null)
[ 0.101416] IP: [<ffffffff810854d1>] __queue_work+0x29/0x41a
[ 0.102390] PGD 0
[ 0.102751] Oops: 0000 [#1] PREEMPT SMP DEBUG_PAGEALLOC
[ 0.103711] last sysfs file:
[ 0.104216] CPU 0
[ 0.104535] Modules linked in:
[ 0.105117]
[ 0.105379] Pid: 1, comm: swapper Not tainted 2.6.39-rc4-nv+ #697 Bochs Bochs
[ 0.106605] RIP: 0010:[<ffffffff810854d1>] [<ffffffff810854d1>] __queue_work+0x29/0x41a
[ 0.108001] RSP: 0018:ffff880007c03c90 EFLAGS: 00010246
[ 0.108912] RAX: 0000000000000000 RBX: ffffffff81a4fa80 RCX: ffff880007c03bb0
[ 0.110000] RDX: 0000000000000003 RSI: ffffffff81e41de8 RDI: 0000000000000001
[ 0.110000] RBP: ffff880007c03ce0 R08: ffffffff81e41de0 R09: 000000000000005a
[ 0.110000] R10: ffffea0000000008 R11: 0000000000000000 R12: 0000000000000000
[ 0.110000] R13: 0000000000000000 R14: 0000000000000000 R15: ffff88000794b150
[ 0.110000] FS: 0000000000000000(0000) GS:ffff880007c00000(0000) knlGS:0000000000000000
[ 0.110000] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 0.110000] CR2: 0000000000000000 CR3: 0000000001a23000 CR4: 00000000000006f0
[ 0.110000] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 0.110000] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[ 0.110000] Process swapper (pid: 1, threadinfo ffff880007ac2000, task ffff880007ac8000)
[ 0.110000] Stack:
[ 0.110000] 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 0.110000] 0000000000000000 0000000000000000 ffffffff81a4fa80 ffff88000794b000
[ 0.110000] 0000000000000000 ffff88000794b150 ffff880007c03cf0 ffffffff81085910
[ 0.110000] Call Trace:
[ 0.110000] <IRQ>
[ 0.110000] [<ffffffff81085910>] queue_work_on+0x16/0x1d
[ 0.110000] [<ffffffff81085abc>] queue_work+0x29/0x55
[ 0.110000] [<ffffffff81085afb>] schedule_work+0x13/0x15
[ 0.110000] [<ffffffff81242de1>] free_object+0x90/0x95
[ 0.110000] [<ffffffff81242f6d>] debug_check_no_obj_freed+0x187/0x1d3
[ 0.110000] [<ffffffff814b6504>] ? _raw_spin_unlock_irqrestore+0x30/0x4d
[ 0.110000] [<ffffffff8110bd14>] ? free_object_rcu+0x68/0x6d
[ 0.110000] [<ffffffff8110890c>] kmem_cache_free+0x64/0x12c
[ 0.110000] [<ffffffff8110bd14>] free_object_rcu+0x68/0x6d
[ 0.110000] [<ffffffff810b58bc>] __rcu_process_callbacks+0x1b6/0x2d9
[ 0.110000] [<ffffffff81095c9f>] ? tick_handle_periodic+0x1f/0x6c
[ 0.110000] [<ffffffff810b5a5a>] rcu_process_callbacks+0x7b/0x83
[ 0.110000] [<ffffffff810733b2>] __do_softirq+0x117/0x207
[ 0.110000] [<ffffffff810b05d3>] ? handle_irq_event+0x47/0x5c
[ 0.110000] [<ffffffff814bd0cc>] call_softirq+0x1c/0x30
[ 0.110000] [<ffffffff81034bc4>] do_softirq+0x38/0x80
[ 0.110000] [<ffffffff810730ed>] irq_exit+0x4e/0xa0
[ 0.110000] [<ffffffff8103429a>] do_IRQ+0x97/0xae
[ 0.110000] [<ffffffff814b6853>] common_interrupt+0x13/0x13
[ 0.110000] <EOI>
[ 0.110000] [<ffffffff814b92b8>] ? add_preempt_count+0x62/0xc5
[ 0.110000] [<ffffffff8123d28f>] delay_tsc+0x78/0xcb
[ 0.110000] [<ffffffff8123d32a>] __const_udelay+0x25/0x27
[ 0.110000] [<ffffffff81aaae16>] timer_irq_works+0x3c/0x77
[ 0.110000] [<ffffffff81aab422>] setup_IO_APIC+0x337/0x755
[ 0.110000] [<ffffffff81aa956c>] native_smp_prepare_cpus+0x3a0/0x451
[ 0.110000] [<ffffffff814b64b9>] ? _raw_spin_unlock_irq+0x19/0x34
[ 0.110000] [<ffffffff81a9e52b>] kernel_init+0x4e/0x135
[ 0.110000] [<ffffffff8123e0fe>] ? trace_hardirqs_on_thunk+0x3a/0x3c
[ 0.110000] [<ffffffff814bcfd4>] kernel_thread_helper+0x4/0x10
[ 0.110000] [<ffffffff81063d70>] ? finish_task_switch+0x5a/0xcb
[ 0.110000] [<ffffffff814b64b9>] ? _raw_spin_unlock_irq+0x19/0x34
[ 0.110000] [<ffffffff814b68b1>] ? retint_restore_args+0xe/0xe
[ 0.110000] [<ffffffff81a9e4dd>] ? parse_early_options+0x20/0x20
[ 0.110000] [<ffffffff814bcfd0>] ? gs_change+0xb/0xb
[ 0.110000] Code: c9 c3 55 48 89 e5 41 57 41 56 41 55 49 89 f5 41 54 48 c7 c6 a0 b7 a3 81 53 41 89 fc 48 83 ec 28 48 89 d3 48 89 d7 e8 63 d7 1b 00
[ 0.110000] f6 45 00 40 0f 84 6b 01 00 00 b8 09 00 00 00 83 3d 28 10 a0
[ 0.110000] RIP [<ffffffff810854d1>] __queue_work+0x29/0x41a
[ 0.110000] RSP <ffff880007c03c90>
[ 0.110000] CR2: 0000000000000000
[ 0.110005] ---[ end trace 4eaa2a86a8e2da22 ]---
[ 0.110788] Kernel panic - not syncing: Fatal exception in interrupt
[ 0.120003] Pid: 1, comm: swapper Tainted: G D 2.6.39-rc4-nv+ #697
[ 0.121184] Call Trace:
[ 0.121609] <IRQ> [<ffffffff814b2e58>] panic+0x96/0x1a1
[ 0.122558] [<ffffffff814b7667>] oops_end+0x81/0x8e
[ 0.123417] [<ffffffff81052ac3>] no_context+0x1f7/0x206
[ 0.124352] [<ffffffff81052c62>] __bad_area_nosemaphore+0x190/0x1b3
[ 0.125427] [<ffffffff81052c93>] bad_area_nosemaphore+0xe/0x10
[ 0.126436] [<ffffffff814b8f80>] do_page_fault+0x265/0x48a
[ 0.127377] [<ffffffff8123e13a>] ? trace_hardirqs_off_thunk+0x3a/0x6c
[ 0.128488] [<ffffffff814b6acf>] page_fault+0x1f/0x30
[ 0.130004] [<ffffffff810854d1>] ? __queue_work+0x29/0x41a
[ 0.130965] [<ffffffff81085910>] queue_work_on+0x16/0x1d
[ 0.131884] [<ffffffff81085abc>] queue_work+0x29/0x55
[ 0.132762] [<ffffffff81085afb>] schedule_work+0x13/0x15
[ 0.133685] [<ffffffff81242de1>] free_object+0x90/0x95
[ 0.134572] [<ffffffff81242f6d>] debug_check_no_obj_freed+0x187/0x1d3
[ 0.135678] [<ffffffff814b6504>] ? _raw_spin_unlock_irqrestore+0x30/0x4d
[ 0.136850] [<ffffffff8110bd14>] ? free_object_rcu+0x68/0x6d
[ 0.137835] [<ffffffff8110890c>] kmem_cache_free+0x64/0x12c
[ 0.138810] [<ffffffff8110bd14>] free_object_rcu+0x68/0x6d
[ 0.139786] [<ffffffff810b58bc>] __rcu_process_callbacks+0x1b6/0x2d9
[ 0.140004] [<ffffffff81095c9f>] ? tick_handle_periodic+0x1f/0x6c
[ 0.141106] [<ffffffff810b5a5a>] rcu_process_callbacks+0x7b/0x83
[ 0.142185] [<ffffffff810733b2>] __do_softirq+0x117/0x207
[ 0.143167] [<ffffffff810b05d3>] ? handle_irq_event+0x47/0x5c
[ 0.144199] [<ffffffff814bd0cc>] call_softirq+0x1c/0x30
[ 0.145142] [<ffffffff81034bc4>] do_softirq+0x38/0x80
[ 0.146062] [<ffffffff810730ed>] irq_exit+0x4e/0xa0
[ 0.146940] [<ffffffff8103429a>] do_IRQ+0x97/0xae
[ 0.147784] [<ffffffff814b6853>] common_interrupt+0x13/0x13
[ 0.148768] <EOI> [<ffffffff814b92b8>] ? add_preempt_count+0x62/0xc5
[ 0.150791] [<ffffffff8123d28f>] delay_tsc+0x78/0xcb
[ 0.151645] [<ffffffff8123d32a>] __const_udelay+0x25/0x27
[ 0.152594] [<ffffffff81aaae16>] timer_irq_works+0x3c/0x77
[ 0.153545] [<ffffffff81aab422>] setup_IO_APIC+0x337/0x755
[ 0.154533] [<ffffffff81aa956c>] native_smp_prepare_cpus+0x3a0/0x451
[ 0.155627] [<ffffffff814b64b9>] ? _raw_spin_unlock_irq+0x19/0x34
[ 0.156679] [<ffffffff81a9e52b>] kernel_init+0x4e/0x135
[ 0.157590] [<ffffffff8123e0fe>] ? trace_hardirqs_on_thunk+0x3a/0x3c
[ 0.158680] [<ffffffff814bcfd4>] kernel_thread_helper+0x4/0x10
[ 0.160004] [<ffffffff81063d70>] ? finish_task_switch+0x5a/0xcb
[ 0.161038] [<ffffffff814b64b9>] ? _raw_spin_unlock_irq+0x19/0x34
[ 0.162087] [<ffffffff814b68b1>] ? retint_restore_args+0xe/0xe
[ 0.163086] [<ffffffff81a9e4dd>] ? parse_early_options+0x20/0x20
[ 0.164130] [<ffffffff814bcfd0>] ? gs_change+0xb/0xb
(gdb) disassemble __queue_work
Dump of assembler code for function __queue_work:
0x0000000000085318 <+0>: push %rbp
0x0000000000085319 <+1>: mov %rsp,%rbp
0x000000000008531c <+4>: push %r15
0x000000000008531e <+6>: push %r14
0x0000000000085320 <+8>: push %r13
0x0000000000085322 <+10>: mov %rsi,%r13
0x0000000000085325 <+13>: push %r12
0x0000000000085327 <+15>: mov $0x0,%rsi
0x000000000008532e <+22>: push %rbx
0x000000000008532f <+23>: mov %edi,%r12d
0x0000000000085332 <+26>: sub $0x28,%rsp
0x0000000000085336 <+30>: mov %rdx,%rbx
0x0000000000085339 <+33>: mov %rdx,%rdi
0x000000000008533c <+36>: callq 0x85341 <__queue_work+41> <----------- this line ?!
0x0000000000085341 <+41>: testb $0x40,0x0(%r13)
0x0000000000085346 <+46>: je 0x854b7 <__queue_work+415>
0x000000000008534c <+52>: mov $0x9,%eax
0x0000000000085351 <+57>: cmpl $0x0,0x0(%rip) # 0x85358 <__queue_work+64>
0x0000000000085358 <+64>: js 0x8537b <__queue_work+99>
0x000000000008535a <+66>: xor %edx,%edx
0x000000000008535c <+68>: mov $0x8,%esi
0x0000000000085361 <+73>: mov 0x0(%rip),%rdi # 0x85368 <__queue_work+80>
0x0000000000085368 <+80>: callq 0x8536d <__queue_work+85>
0x000000000008536d <+85>: mov $0x8,%edx
0x0000000000085372 <+90>: cmp 0x0(%rip),%eax # 0x85378 <__queue_work+96>
0x0000000000085378 <+96>: cmovge %edx,%eax
0x000000000008537b <+99>: mov %eax,-0x34(%rbp)
0x000000000008537e <+102>: mov $0x0,%r14
0x0000000000085385 <+109>: mov $0x8,%r15d
0x000000000008538b <+115>: mov %gs:0x0,%rax
0x0000000000085394 <+124>: mov %rax,-0x40(%rbp)
0x0000000000085398 <+128>: jmpq 0x8547d <__queue_work+357>
0x000000000008539d <+133>: jne 0x853a8 <__queue_work+144>
0x000000000008539f <+135>: mov $0x0,%rdx
0x00000000000853a6 <+142>: jmp 0x853b6 <__queue_work+158>
0x00000000000853a8 <+144>: mov -0x34(%rbp),%eax
0x00000000000853ab <+147>: mov %r14,%rdx
0x00000000000853ae <+150>: add 0x0(,%rax,8),%rdx
0x00000000000853b6 <+158>: mov %rdx,%rdi
0x00000000000853b9 <+161>: mov %rdx,-0x48(%rbp)
0x00000000000853bd <+165>: callq 0x853c2 <__queue_work+170>
0x00000000000853c2 <+170>: xor %edi,%edi
0x00000000000853c4 <+172>: mov %rax,%rsi
0x00000000000853c7 <+175>: mov -0x48(%rbp),%rdx
0x00000000000853cb <+179>: mov 0x48(%rdx,%rdi,1),%rcx
0x00000000000853d0 <+184>: jmp 0x853f5 <__queue_work+221>
0x00000000000853d2 <+186>: mov %rcx,-0x48(%rbp)
0x00000000000853d6 <+190>: mov %rdx,%rdi
0x00000000000853d9 <+193>: callq 0x853de <__queue_work+198>
0x00000000000853de <+198>: mov -0x48(%rbp),%rcx
0x00000000000853e2 <+202>: mov 0x18(%rcx),%rax
0x00000000000853e6 <+206>: cmp %r13,0x8(%rax)
0x00000000000853ea <+210>: sete %al
0x00000000000853ed <+213>: jmpq 0x85489 <__queue_work+369>
0x00000000000853f2 <+218>: mov %rax,%rcx
0x00000000000853f5 <+221>: test %rcx,%rcx
0x00000000000853f8 <+224>: je 0x8540c <__queue_work+244>
0x00000000000853fa <+226>: mov (%rcx),%rax
0x00000000000853fd <+229>: mov -0x40(%rbp),%r8
0x0000000000085401 <+233>: prefetcht0 (%rax)
0x0000000000085404 <+236>: cmp %r8,0x30(%rcx)
0x0000000000085408 <+240>: jne 0x853f2 <__queue_work+218>
0x000000000008540a <+242>: jmp 0x853d2 <__queue_work+186>
0x000000000008540c <+244>: add $0x8,%rdi
0x0000000000085410 <+248>: cmp $0x200,%rdi
0x0000000000085417 <+255>: jne 0x853cb <__queue_work+179>
0x0000000000085419 <+257>: mov %rdx,%rdi
0x000000000008541c <+260>: callq 0x85421 <__queue_work+265>
0x0000000000085421 <+265>: mov -0x34(%rbp),%edx
0x0000000000085424 <+268>: mov $0x9,%eax
0x0000000000085429 <+273>: cmp 0x0(%rip),%edx # 0x8542f <__queue_work+279>
0x000000000008542f <+279>: jge 0x8547a <__queue_work+354>
0x0000000000085431 <+281>: cmp $0x8,%edx
0x0000000000085434 <+284>: jne 0x85457 <__queue_work+319>
0x0000000000085436 <+286>: cmpb $0x1,0x0(%rip) # 0x8543d <__queue_work+293>
0x000000000008543d <+293>: je 0x85457 <__queue_work+319>
0x000000000008543f <+295>: mov $0x6b,%esi
0x0000000000085444 <+300>: mov $0x0,%rdi
0x000000000008544b <+307>: callq 0x85450 <__queue_work+312>
0x0000000000085450 <+312>: movb $0x1,0x0(%rip) # 0x85457 <__queue_work+319>
0x0000000000085457 <+319>: mov -0x34(%rbp),%edx
0x000000000008545a <+322>: mov $0x8,%esi
0x000000000008545f <+327>: inc %edx
0x0000000000085461 <+329>: mov 0x0(%rip),%rdi # 0x85468 <__queue_work+336>
0x0000000000085468 <+336>: movslq %edx,%rdx
0x000000000008546b <+339>: callq 0x85470 <__queue_work+344>
0x0000000000085470 <+344>: cmp 0x0(%rip),%eax # 0x85476 <__queue_work+350>
0x0000000000085476 <+350>: cmovge %r15d,%eax
0x000000000008547a <+354>: mov %eax,-0x34(%rbp)
0x000000000008547d <+357>: cmpl $0x8,-0x34(%rbp)
0x0000000000085481 <+361>: jbe 0x8539d <__queue_work+133>
0x0000000000085487 <+367>: xor %eax,%eax
0x0000000000085489 <+369>: test %al,%al
0x000000000008548b <+371>: jne 0x854b7 <__queue_work+415>
0x000000000008548d <+373>: cmpb $0x1,0x0(%rip) # 0x85494 <__queue_work+380>
0x0000000000085494 <+380>: je 0x85723 <__queue_work+1035>
0x000000000008549a <+386>: mov $0x3e2,%esi
0x000000000008549f <+391>: mov $0x0,%rdi
0x00000000000854a6 <+398>: callq 0x854ab <__queue_work+403>
0x00000000000854ab <+403>: movb $0x1,0x0(%rip) # 0x854b2 <__queue_work+410>
0x00000000000854b2 <+410>: jmpq 0x85723 <__queue_work+1035>
0x00000000000854b7 <+415>: mov 0x0(%r13),%eax
0x00000000000854bb <+419>: test $0x2,%al
0x00000000000854bd <+421>: jne 0x85571 <__queue_work+601>
0x00000000000854c3 <+427>: cmp $0x8,%r12d
0x00000000000854c7 <+431>: jne 0x854df <__queue_work+455>
0x00000000000854c9 <+433>: mov %gs:0x0,%r12d
0x00000000000854d2 <+442>: mov $0x0,%r14
0x00000000000854d9 <+449>: cmp $0x8,%r12d
0x00000000000854dd <+453>: je 0x854f1 <__queue_work+473>
0x00000000000854df <+455>: mov $0x0,%r14
0x00000000000854e6 <+462>: mov %r12d,%edx
0x00000000000854e9 <+465>: add 0x0(,%rdx,8),%r14
0x00000000000854f1 <+473>: test $0x1,%al
0x00000000000854f3 <+475>: je 0x85564 <__queue_work+588>
0x00000000000854f5 <+477>: mov %rbx,%rdi
0x00000000000854f8 <+480>: callq 0x8243c <get_work_gcwq>
0x00000000000854fd <+485>: test %rax,%rax
0x0000000000085500 <+488>: je 0x85564 <__queue_work+588>
0x0000000000085502 <+490>: cmp %r14,%rax
0x0000000000085505 <+493>: je 0x85564 <__queue_work+588>
0x0000000000085507 <+495>: mov %rax,%rdi
0x000000000008550a <+498>: mov %rax,-0x48(%rbp)
0x000000000008550e <+502>: callq 0x85513 <__queue_work+507>
0x0000000000085513 <+507>: mov %rbx,%rcx
0x0000000000085516 <+510>: mov %rax,%r15
0x0000000000085519 <+513>: shr $0xb,%rcx
0x000000000008551d <+517>: mov %rbx,%rax
0x0000000000085520 <+520>: mov -0x48(%rbp),%rdx
0x0000000000085524 <+524>: shr $0x5,%rax
0x0000000000085528 <+528>: lea (%rcx,%rax,1),%rax
0x000000000008552c <+532>: and $0x3f,%eax
0x000000000008552f <+535>: mov 0x48(%rdx,%rax,8),%rax
0x0000000000085534 <+540>: test %rax,%rax
0x0000000000085537 <+543>: je 0x85559 <__queue_work+577>
0x0000000000085539 <+545>: mov (%rax),%rcx
0x000000000008553c <+548>: cmp %rbx,0x10(%rax)
0x0000000000085540 <+552>: prefetcht0 (%rcx)
0x0000000000085543 <+555>: je 0x8554a <__queue_work+562>
0x0000000000085545 <+557>: mov %rcx,%rax
0x0000000000085548 <+560>: jmp 0x85534 <__queue_work+540>
0x000000000008554a <+562>: mov 0x18(%rax),%rax
0x000000000008554e <+566>: cmp %r13,0x8(%rax)
0x0000000000085552 <+570>: jne 0x85559 <__queue_work+577>
0x0000000000085554 <+572>: mov %rdx,%r14
0x0000000000085557 <+575>: jmp 0x85587 <__queue_work+623>
0x0000000000085559 <+577>: mov %r15,%rsi
0x000000000008555c <+580>: mov %rdx,%rdi
0x000000000008555f <+583>: callq 0x85564 <__queue_work+588>
0x0000000000085564 <+588>: mov %r14,%rdi
0x0000000000085567 <+591>: callq 0x8556c <__queue_work+596>
0x000000000008556c <+596>: mov %rax,%r15
0x000000000008556f <+599>: jmp 0x85587 <__queue_work+623>
0x0000000000085571 <+601>: mov $0x0,%rdi
0x0000000000085578 <+608>: mov $0x0,%r14
0x000000000008557f <+615>: callq 0x85584 <__queue_work+620>
0x0000000000085584 <+620>: mov %rax,%r15
0x0000000000085587 <+623>: mov 0x28(%r14),%eax
0x000000000008558b <+627>: testb $0x2,0x0(%r13)
0x0000000000085590 <+632>: jne 0x855aa <__queue_work+658>
0x0000000000085592 <+634>: cmp 0x0(%rip),%eax # 0x85598 <__queue_work+640>
0x0000000000085598 <+640>: jae 0x855b5 <__queue_work+669>
0x000000000008559a <+642>: mov 0x8(%r13),%r13
0x000000000008559e <+646>: mov %eax,%eax
0x00000000000855a0 <+648>: add 0x0(,%rax,8),%r13
0x00000000000855a8 <+656>: jmp 0x855b8 <__queue_work+672>
0x00000000000855aa <+658>: cmp $0x8,%eax
0x00000000000855ad <+661>: jne 0x855b5 <__queue_work+669>
0x00000000000855af <+663>: mov 0x8(%r13),%r13
0x00000000000855b3 <+667>: jmp 0x855b8 <__queue_work+672>
0x00000000000855b5 <+669>: xor %r13d,%r13d
0x00000000000855b8 <+672>: cmpl $0x0,0x0(%rip) # 0x855bf <__queue_work+679>
0x00000000000855bf <+679>: je 0x8561c <__queue_work+772>
0x00000000000855c1 <+681>: mov %gs:0x0,%rax
0x00000000000855ca <+690>: incl -0x1fbc(%rax)
0x00000000000855d0 <+696>: mov 0x0(%rip),%rax # 0x855d7 <__queue_work+703>
0x00000000000855d7 <+703>: test %rax,%rax
0x00000000000855da <+706>: je 0x855fd <__queue_work+741>
0x00000000000855dc <+708>: mov 0x8(%rax),%rdi
0x00000000000855e0 <+712>: mov %rbx,%rcx
0x00000000000855e3 <+715>: mov %rax,-0x48(%rbp)
0x00000000000855e7 <+719>: mov %r13,%rdx
0x00000000000855ea <+722>: mov %r12d,%esi
0x00000000000855ed <+725>: callq *(%rax)
0x00000000000855ef <+727>: mov -0x48(%rbp),%rax
0x00000000000855f3 <+731>: add $0x10,%rax
0x00000000000855f7 <+735>: cmpq $0x0,(%rax)
0x00000000000855fb <+739>: jmp 0x855da <__queue_work+706>
0x00000000000855fd <+741>: mov %gs:0x0,%rax
0x0000000000085606 <+750>: decl -0x1fbc(%rax)
0x000000000008560c <+756>: mov -0x1fc8(%rax),%rax
0x0000000000085613 <+763>: test $0x8,%al
0x0000000000085615 <+765>: je 0x8561c <__queue_work+772>
0x0000000000085617 <+767>: callq 0x8561c <__queue_work+772>
0x000000000008561c <+772>: lea 0x8(%rbx),%rax
0x0000000000085620 <+776>: cmp %rax,0x8(%rbx)
0x0000000000085624 <+780>: je 0x8562a <__queue_work+786>
0x0000000000085626 <+782>: ud2a
0x0000000000085628 <+784>: jmp 0x85628 <__queue_work+784>
0x000000000008562a <+786>: movslq 0x10(%r13),%rax
0x000000000008562e <+790>: incl 0x18(%r13,%rax,4)
0x0000000000085633 <+795>: mov 0x10(%r13),%ecx
0x0000000000085637 <+799>: mov 0x54(%r13),%eax
0x000000000008563b <+803>: shl $0x5,%ecx
0x000000000008563e <+806>: cmp 0x58(%r13),%eax
0x0000000000085642 <+810>: jge 0x85706 <__queue_work+1006>
0x0000000000085648 <+816>: cmpl $0x0,0x0(%rip) # 0x8564f <__queue_work+823>
0x000000000008564f <+823>: je 0x856ae <__queue_work+918>
0x0000000000085651 <+825>: mov %gs:0x0,%rax
0x000000000008565a <+834>: incl -0x1fbc(%rax)
0x0000000000085660 <+840>: mov 0x0(%rip),%r12 # 0x85667 <__queue_work+847>
0x0000000000085667 <+847>: test %r12,%r12
0x000000000008566a <+850>: je 0x85689 <__queue_work+881>
0x000000000008566c <+852>: mov 0x8(%r12),%rdi
0x0000000000085671 <+857>: mov %rbx,%rsi
0x0000000000085674 <+860>: mov %ecx,-0x48(%rbp)
0x0000000000085677 <+863>: callq *(%r12)
0x000000000008567b <+867>: add $0x10,%r12
0x000000000008567f <+871>: mov -0x48(%rbp),%ecx
0x0000000000085682 <+874>: cmpq $0x0,(%r12)
0x0000000000085687 <+879>: jmp 0x8566a <__queue_work+850>
0x0000000000085689 <+881>: mov %gs:0x0,%rax
0x0000000000085692 <+890>: decl -0x1fbc(%rax)
0x0000000000085698 <+896>: mov -0x1fc8(%rax),%rax
0x000000000008569f <+903>: test $0x8,%al
0x00000000000856a1 <+905>: je 0x856ae <__queue_work+918>
0x00000000000856a3 <+907>: mov %ecx,-0x48(%rbp)
0x00000000000856a6 <+910>: callq 0x856ab <__queue_work+915>
0x00000000000856ab <+915>: mov -0x48(%rbp),%ecx
0x00000000000856ae <+918>: incl 0x54(%r13)
0x00000000000856b2 <+922>: mov 0x8(%r13),%rax
0x00000000000856b6 <+926>: lea 0x18(%r14),%rsi
0x00000000000856ba <+930>: testb $0x10,(%rax)
0x00000000000856bd <+933>: jne 0x856c4 <__queue_work+940>
0x00000000000856bf <+935>: mov %rsi,%rdx
0x00000000000856c2 <+938>: jmp 0x8570d <__queue_work+1013>
0x00000000000856c4 <+940>: mov 0x18(%r14),%rax
0x00000000000856c8 <+944>: sub $0x8,%rax
0x00000000000856cc <+948>: jmp 0x856ef <__queue_work+983>
0x00000000000856ce <+950>: mov (%rax),%r8
0x00000000000856d1 <+953>: xor %eax,%eax
0x00000000000856d3 <+955>: test $0x4,%r8b
0x00000000000856d7 <+959>: je 0x856e2 <__queue_work+970>
0x00000000000856d9 <+961>: mov %r8,%rax
0x00000000000856dc <+964>: and $0xfffffffffffffe00,%rax
0x00000000000856e2 <+970>: mov 0x8(%rax),%rax
0x00000000000856e6 <+974>: testb $0x10,(%rax)
0x00000000000856e9 <+977>: je 0x856ff <__queue_work+999>
0x00000000000856eb <+979>: lea -0x8(%rdi),%rax
0x00000000000856ef <+983>: mov 0x8(%rax),%rdi
0x00000000000856f3 <+987>: lea 0x8(%rax),%rdx
0x00000000000856f7 <+991>: prefetcht0 (%rdi)
0x00000000000856fa <+994>: cmp %rsi,%rdx
0x00000000000856fd <+997>: jne 0x856ce <__queue_work+950>
0x00000000000856ff <+999>: orl $0x10,0x2c(%r14)
0x0000000000085704 <+1004>: jmp 0x8570d <__queue_work+1013>
0x0000000000085706 <+1006>: or $0x2,%ecx
0x0000000000085709 <+1009>: lea 0x60(%r13),%rdx
0x000000000008570d <+1013>: mov %rbx,%rsi
0x0000000000085710 <+1016>: mov %r13,%rdi
0x0000000000085713 <+1019>: callq 0x82e4a <insert_work>
0x0000000000085718 <+1024>: mov %r15,%rsi
0x000000000008571b <+1027>: mov %r14,%rdi
0x000000000008571e <+1030>: callq 0x85723 <__queue_work+1035>
0x0000000000085723 <+1035>: add $0x28,%rsp
0x0000000000085727 <+1039>: pop %rbx
0x0000000000085728 <+1040>: pop %r12
0x000000000008572a <+1042>: pop %r13
0x000000000008572c <+1044>: pop %r14
0x000000000008572e <+1046>: pop %r15
0x0000000000085730 <+1048>: leaveq
0x0000000000085731 <+1049>: retq
End of assembler dump.
Ideas, patches welcomed.
Marcin
View attachment ".config" of type "text/plain" (60569 bytes)
Powered by blists - more mailing lists