Re: [patch] Real-Time Preemption, -RT-2.6.9-rc4-mm1-U5

From: Adam Heath
Date: Mon Oct 18 2004 - 20:32:43 EST


On Mon, 18 Oct 2004, Ingo Molnar wrote:

>
> i have released the -U5 Real-Time Preemption patch:

>From the first line of the attached oops file:

kernel BUG at lib/rwsem-generic.c:130!

Then, a BUG, sleeping while atomic.
------------[ cut here ]------------
kernel BUG at lib/rwsem-generic.c:130!
invalid operand: 0000 [#1]
PREEMPT
Modules linked in: nfsd exportfs snd_cmipci snd_opl3_lib snd_hwdep snd_mpu401_uart snd_rawmidi snd_seq_device 8250 serial_core nfs lockd sunrpc raid5 xor md dm_mirror dm_mod aic7xxx sg sr_mod cdrom sd_mod scsi_mod snd_intel8x0 snd_ac97_codec snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd snd_page_alloc soundcore 3c59x mii sis900 crc32 siimage
CPU: 0
EIP: 0060:[<c01da56b>] Not tainted VLI
EFLAGS: 00010002 (2.6.9-rc4-mm1-rt-u5)
EIP is at rwsem_owner_del+0x6b/0x90
eax: 00000001 ebx: f7b31658 ecx: 00000000 edx: 00000001
esi: 00000000 edi: f7b31658 ebp: d3113f34 esp: d3113f28
ds: 007b es: 007b ss: 0068 preempt: 00000002
Process liquidwar (pid: 6352, threadinfo=d3113000 task=d7ec6e60)
Stack: f7b31658 00000202 d3113fa8 d3113f48 c01db057 f7b31658 f741ac00 d74036c0
d3113f64 f88c1c18 d3113f64 c0113104 00000000 f88c1be0 d74036c0 d3113f90
c015b61b d74036c0 080d77f8 00000800 d3113fa8 f0d94164 f0d94164 d74036c0
Call Trace:
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
preempt count: 00000003
. 3-level deep critical section nesting:
.. entry 1: up_write+0x70/0x80 / (snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss])
.. entry 2: die+0x3f/0x1a0 / (do_invalid_op+0x106/0x110)
.. entry 3: print_traces+0x1d/0x70 / (show_stack+0x83/0xa0)

Code: 16 bb 00 f0 ff ff 21 e3 8b 44 8f 10 3b 03 74 28 41 89 d6 39 d1 7c f1 8b 15 b8 fe 2e c0 85 d2 74 12 c7 05 b8 fe 2e c0 00 00 00 00 <0f> 0b 82 00 e1 05 2c c0 5b 5e 5f c9 c3 8d 56 ff 39 d1 74 08 8b
<6>note: liquidwar[6352] exited with preempt_count 1
BUG: sleeping function called from invalid context liquidwar(6352) at kernel/fork.c:421
in_atomic():1 [00000001], irqs_disabled():0
[<c0119582>] __might_sleep+0xc2/0xe0
[<c0119bce>] mm_release+0x6e/0xd0
[<c011c4dd>] printk+0x1d/0x20
[<c011e6d3>] do_exit+0x83/0x4a0
[<c01075f0>] do_invalid_op+0x0/0x110
[<c0107242>] die+0x192/0x1a0
[<c0116c5c>] fixup_exception+0x1c/0x40
[<c01076f6>] do_invalid_op+0x106/0x110
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c0106a25>] error_code+0x2d/0x38
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
preempt count: 00000002
. 2-level deep critical section nesting:
.. entry 1: task_rq_lock+0x1e/0x30 / (try_to_wake_up+0x2d/0xc0)
.. entry 2: print_traces+0x1d/0x70 / (dump_stack+0x23/0x30)

BUG: scheduling while atomic: liquidwar/0x04000001/6352
caller is cond_resched+0x62/0x90
[<c02a2ab9>] __sched_text_start+0x539/0x570
[<c02a31c2>] cond_resched+0x62/0x90
[<c0113104>] mcount+0x14/0x18
[<c02a31c2>] cond_resched+0x62/0x90
[<c0119bd3>] mm_release+0x73/0xd0
[<c011c4dd>] printk+0x1d/0x20
[<c011e6d3>] do_exit+0x83/0x4a0
[<c01075f0>] do_invalid_op+0x0/0x110
[<c0107242>] die+0x192/0x1a0
[<c0116c5c>] fixup_exception+0x1c/0x40
[<c01076f6>] do_invalid_op+0x106/0x110
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c0106a25>] error_code+0x2d/0x38
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
preempt count: 04000002
. 2-level deep critical section nesting:
.. entry 1: __do_IRQ+0x111/0x190 / (do_IRQ+0x75/0xa0)
.. entry 2: print_traces+0x1d/0x70 / (dump_stack+0x23/0x30)

BUG: scheduling while atomic: liquidwar/0x00000001/6352
caller is do_exit+0x292/0x4a0
[<c02a2ab9>] __sched_text_start+0x539/0x570
[<c011e8e2>] do_exit+0x292/0x4a0
[<c0113104>] mcount+0x14/0x18
[<c011e8e2>] do_exit+0x292/0x4a0
[<c01075f0>] do_invalid_op+0x0/0x110
[<c0107242>] die+0x192/0x1a0
[<c0116c5c>] fixup_exception+0x1c/0x40
[<c01076f6>] do_invalid_op+0x106/0x110
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c0106a25>] error_code+0x2d/0x38
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
preempt count: 00000002
. 2-level deep critical section nesting:
.. entry 1: __do_IRQ+0x111/0x190 / (do_IRQ+0x75/0xa0)
.. entry 2: print_traces+0x1d/0x70 / (dump_stack+0x23/0x30)

ksymoops 2.4.9 on i686 2.6.9-rc4-mm1-rt-u5. Options used
-V (default)
-k /proc/ksyms (default)
-l /proc/modules (default)
-o /lib/modules/2.6.9-rc4-mm1-rt-u5/ (default)
-m /boot/System.map-2.6.9-rc4-mm1-rt-u5 (default)

Warning: You did not tell me where to find symbol information. I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc. ksymoops -h explains the options.

Error (regular_file): read_ksyms stat /proc/ksyms failed
No modules in ksyms, skipping objects
No ksyms, skipping lsmod
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01dae41>] down_write+0x71/0xa0
[<c0132480>] sub_preempt_count+0x60/0x90
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01db07f>] up_write+0x4f/0x80
[<c01320ac>] check_preempt_timing+0x5c/0x250
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01db07f>] up_write+0x4f/0x80
[<c013193d>] __mcount+0x1d/0x20
[<c01da9be>] __up_write+0xe/0x1b0
[<c01db05f>] up_write+0x2f/0x80
[<c0113104>] mcount+0x14/0x18
[<c016ea97>] sys_ioctl+0x47/0x230
[<c0106013>] syscall_call+0x7/0xb
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01321ff>] check_preempt_timing+0x1af/0x250
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4b74>] avc_has_perm+0x14/0xa0
[<c01c6064>] inode_has_perm+0x64/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c4ba3>] avc_has_perm+0x43/0xa0
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c01db07f>] up_write+0x4f/0x80
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b3d6>] vfs_read+0xa6/0x140
[<c0113104>] mcount+0x14/0x18
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c0113104>] mcount+0x14/0x18
[<c015b3d6>] vfs_read+0xa6/0x140
[<c015c604>] fget_light+0x14/0xa0
[<c0113104>] mcount+0x14/0x18
[<c015b6e0>] sys_read+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01321ff>] check_preempt_timing+0x1af/0x250
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c013193d>] __mcount+0x1d/0x20
[<c01c499b>] avc_has_perm_noaudit+0x7b/0x240
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01320ac>] check_preempt_timing+0x5c/0x250
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01183ee>] __wake_up+0x5e/0x90
[<c01c4b74>] avc_has_perm+0x14/0xa0
[<c01c6064>] inode_has_perm+0x64/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c4ba3>] avc_has_perm+0x43/0xa0
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01db07f>] up_write+0x4f/0x80
[<c01320ac>] check_preempt_timing+0x5c/0x250
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c0113104>] mcount+0x14/0x18
[<c015b5f3>] vfs_write+0xa3/0x140
[<c015c604>] fget_light+0x14/0xa0
[<c0113104>] mcount+0x14/0x18
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01321ff>] check_preempt_timing+0x1af/0x250
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4b74>] avc_has_perm+0x14/0xa0
[<c01c6064>] inode_has_perm+0x64/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c4ba3>] avc_has_perm+0x43/0xa0
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01db07f>] up_write+0x4f/0x80
[<c013193d>] __mcount+0x1d/0x20
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c01320ac>] check_preempt_timing+0x5c/0x250
[<c0113104>] mcount+0x14/0x18
[<c015b5f3>] vfs_write+0xa3/0x140
[<c015c67f>] fget_light+0x8f/0xa0
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01321ff>] check_preempt_timing+0x1af/0x250
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4b74>] avc_has_perm+0x14/0xa0
[<c01c6064>] inode_has_perm+0x64/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c4ba3>] avc_has_perm+0x43/0xa0
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c013193d>] __mcount+0x1d/0x20
[<c0176db9>] inode_times_differ+0x9/0x50
[<c0176f6f>] inode_update_time+0x9f/0xe0
[<c0113104>] mcount+0x14/0x18
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b3d6>] vfs_read+0xa6/0x140
[<c0113104>] mcount+0x14/0x18
[<c01c8a33>] selinux_file_permission+0x133/0x170
[<c01320ac>] check_preempt_timing+0x5c/0x250
[<c0113104>] mcount+0x14/0x18
[<c015b3d6>] vfs_read+0xa6/0x140
[<c015c67f>] fget_light+0x8f/0xa0
[<c015b6e0>] sys_read+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01321ff>] check_preempt_timing+0x1af/0x250
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c0132480>] sub_preempt_count+0x60/0x90
[<c01dafff>] up_read+0x4f/0x80
[<c01c4b74>] avc_has_perm+0x14/0xa0
[<c01cabcf>] selinux_ip_postroute_last+0x1bf/0x2a0
[<c0113104>] mcount+0x14/0x18
[<c01c4ba3>] avc_has_perm+0x43/0xa0
[<c01cabcf>] selinux_ip_postroute_last+0x1bf/0x2a0
[<c0113104>] mcount+0x14/0x18
[<c01cacea>] selinux_ipv4_postroute_last+0x3a/0x40
[<c02636d0>] ip_finish_output2+0x0/0x1f0
[<c024fe65>] nf_iterate+0x75/0xb0
[<c02636d0>] ip_finish_output2+0x0/0x1f0
[<c0250280>] nf_hook_slow+0x90/0x140
[<c02636d0>] ip_finish_output2+0x0/0x1f0
[<c02610e3>] ip_finish_output+0x223/0x230
[<c02636d0>] ip_finish_output2+0x0/0x1f0
[<c0261716>] ip_queue_xmit+0x3d6/0x540
[<c01c4bd1>] avc_has_perm+0x71/0xa0
[<c0113104>] mcount+0x14/0x18
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01c4a02>] avc_has_perm_noaudit+0xe2/0x240
[<c01dafff>] up_read+0x4f/0x80
[<c013193d>] __mcount+0x1d/0x20
[<c027842e>] tcp_v4_send_check+0xe/0xf0
[<c0272119>] tcp_transmit_skb+0x439/0x860
[<c0113104>] mcount+0x14/0x18
[<c027846f>] tcp_v4_send_check+0x4f/0xf0
[<c02721c2>] tcp_transmit_skb+0x4e2/0x860
[<c0113104>] mcount+0x14/0x18
[<c0274d76>] tcp_send_ack+0xa6/0xf0
[<c026fdf4>] __tcp_ack_snd_check+0x14/0xa0
[<c0270427>] tcp_rcv_established+0x287/0x900
[<c013193d>] __mcount+0x1d/0x20
[<c027965d>] tcp_v4_do_rcv+0xd/0x120
[<c0279e7b>] tcp_v4_rcv+0x70b/0x950
[<c0113104>] mcount+0x14/0x18
[<c0279765>] tcp_v4_do_rcv+0x115/0x120
[<c0279e7b>] tcp_v4_rcv+0x70b/0x950
[<c025db75>] ip_local_deliver+0xf5/0x250
[<c025df31>] ip_rcv+0x261/0x4c0
[<c01dae41>] down_write+0x71/0xa0
[<c0245570>] netif_receive_skb+0x1b0/0x280
[<c0130008>] nanosleep_wake_up+0x18/0x20
[<c024564e>] process_backlog+0xe/0x150
[<c024580f>] net_rx_action+0x7f/0x150
[<c02456c8>] process_backlog+0x88/0x150
[<c024580f>] net_rx_action+0x7f/0x150
[<c0120f87>] ___do_softirq+0x87/0xd0
[<c0121058>] _do_softirq+0x8/0x30
[<c01213a4>] ksoftirqd+0x94/0xe0
[<c0121070>] _do_softirq+0x20/0x30
[<c01213a4>] ksoftirqd+0x94/0xe0
[<c013072a>] kthread+0xaa/0xb0
[<c0121310>] ksoftirqd+0x0/0xe0
[<c0130680>] kthread+0x0/0xb0
[<c0104099>] kernel_thread_helper+0x5/0xc
kernel BUG at lib/rwsem-generic.c:130!
invalid operand: 0000 [#1]
CPU: 0
EIP: 0060:[<c01da56b>] Not tainted VLI
Using defaults from ksymoops -t elf32-i386 -a i386
EFLAGS: 00010002 (2.6.9-rc4-mm1-rt-u5)
eax: 00000001 ebx: f7b31658 ecx: 00000000 edx: 00000001
esi: 00000000 edi: f7b31658 ebp: d3113f34 esp: d3113f28
ds: 007b es: 007b ss: 0068 preempt: 00000002
Stack: f7b31658 00000202 d3113fa8 d3113f48 c01db057 f7b31658 f741ac00 d74036c0
d3113f64 f88c1c18 d3113f64 c0113104 00000000 f88c1be0 d74036c0 d3113f90
c015b61b d74036c0 080d77f8 00000800 d3113fa8 f0d94164 f0d94164 d74036c0
Call Trace:
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
Warning (Oops_read): Code line not seen, dumping what data is available


>>EIP; c01da56b <rwsem_owner_del+6b/90> <=====

>>ebx; f7b31658 <pg0+37735658/3fc02400>
>>edi; f7b31658 <pg0+37735658/3fc02400>
>>ebp; d3113f34 <pg0+12d17f34/3fc02400>
>>esp; d3113f28 <pg0+12d17f28/3fc02400>

Trace; c01db057 <up_write+27/80>
Trace; f88c1c18 <pg0+384c5c18/3fc02400>
Trace; c0113104 <mcount+14/18>
Trace; f88c1be0 <pg0+384c5be0/3fc02400>
Trace; c015b61b <vfs_write+cb/140>
Trace; c015b760 <sys_write+50/80>
Trace; c0106013 <syscall_call+7/b>

Code: 16 bb 00 f0 ff ff 21 e3 8b 44 8f 10 3b 03 74 28 41 89 d6 39 d1 7c f1 8b 15 b8 fe 2e c0 85 d2 74 12 c7 05 b8 fe 2e c0 00 00 00 00 <0f> 0b 82 00 e1 05 2c c0 5b 5e 5f c9 c3 8d 56 ff 39 d1 74 08 8b


This architecture has variable length instructions, decoding before eip
is unreliable, take these instructions with a pinch of salt.

Code; c01da540 <rwsem_owner_del+40/90>
00000000 <_EIP>:
Code; c01da540 <rwsem_owner_del+40/90>
0: 16 push %ss
Code; c01da541 <rwsem_owner_del+41/90>
1: bb 00 f0 ff ff mov $0xfffff000,%ebx
Code; c01da546 <rwsem_owner_del+46/90>
6: 21 e3 and %esp,%ebx
Code; c01da548 <rwsem_owner_del+48/90>
8: 8b 44 8f 10 mov 0x10(%edi,%ecx,4),%eax
Code; c01da54c <rwsem_owner_del+4c/90>
c: 3b 03 cmp (%ebx),%eax
Code; c01da54e <rwsem_owner_del+4e/90>
e: 74 28 je 38 <_EIP+0x38>
Code; c01da550 <rwsem_owner_del+50/90>
10: 41 inc %ecx
Code; c01da551 <rwsem_owner_del+51/90>
11: 89 d6 mov %edx,%esi
Code; c01da553 <rwsem_owner_del+53/90>
13: 39 d1 cmp %edx,%ecx
Code; c01da555 <rwsem_owner_del+55/90>
15: 7c f1 jl 8 <_EIP+0x8>
Code; c01da557 <rwsem_owner_del+57/90>
17: 8b 15 b8 fe 2e c0 mov 0xc02efeb8,%edx
Code; c01da55d <rwsem_owner_del+5d/90>
1d: 85 d2 test %edx,%edx
Code; c01da55f <rwsem_owner_del+5f/90>
1f: 74 12 je 33 <_EIP+0x33>
Code; c01da561 <rwsem_owner_del+61/90>
21: c7 05 b8 fe 2e c0 00 movl $0x0,0xc02efeb8
Code; c01da568 <rwsem_owner_del+68/90>
28: 00 00 00

This decode from eip onwards should be reliable

Code; c01da56b <rwsem_owner_del+6b/90>
00000000 <_EIP>:
Code; c01da56b <rwsem_owner_del+6b/90>
0: 0f 0b ud2a
Code; c01da56d <rwsem_owner_del+6d/90>
2: 82 (bad)
Code; c01da56e <rwsem_owner_del+6e/90>
3: 00 e1 add %ah,%cl
Code; c01da570 <rwsem_owner_del+70/90>
5: 05 2c c0 5b 5e add $0x5e5bc02c,%eax
Code; c01da575 <rwsem_owner_del+75/90>
a: 5f pop %edi
Code; c01da576 <rwsem_owner_del+76/90>
b: c9 leave
Code; c01da577 <rwsem_owner_del+77/90>
c: c3 ret
Code; c01da578 <rwsem_owner_del+78/90>
d: 8d 56 ff lea 0xffffffff(%esi),%edx
Code; c01da57b <rwsem_owner_del+7b/90>
10: 39 d1 cmp %edx,%ecx
Code; c01da57d <rwsem_owner_del+7d/90>
12: 74 08 je 1c <_EIP+0x1c>
Code; c01da57f <rwsem_owner_del+7f/90>
14: 8b .byte 0x8b

[<c0119582>] __might_sleep+0xc2/0xe0
[<c0119bce>] mm_release+0x6e/0xd0
[<c011c4dd>] printk+0x1d/0x20
[<c011e6d3>] do_exit+0x83/0x4a0
[<c01075f0>] do_invalid_op+0x0/0x110
[<c0107242>] die+0x192/0x1a0
[<c0116c5c>] fixup_exception+0x1c/0x40
[<c01076f6>] do_invalid_op+0x106/0x110
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c0106a25>] error_code+0x2d/0x38
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
[<c02a2ab9>] __sched_text_start+0x539/0x570
[<c02a31c2>] cond_resched+0x62/0x90
[<c0113104>] mcount+0x14/0x18
[<c02a31c2>] cond_resched+0x62/0x90
[<c0119bd3>] mm_release+0x73/0xd0
[<c011c4dd>] printk+0x1d/0x20
[<c011e6d3>] do_exit+0x83/0x4a0
[<c01075f0>] do_invalid_op+0x0/0x110
[<c0107242>] die+0x192/0x1a0
[<c0116c5c>] fixup_exception+0x1c/0x40
[<c01076f6>] do_invalid_op+0x106/0x110
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c0106a25>] error_code+0x2d/0x38
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb
[<c02a2ab9>] __sched_text_start+0x539/0x570
[<c011e8e2>] do_exit+0x292/0x4a0
[<c0113104>] mcount+0x14/0x18
[<c011e8e2>] do_exit+0x292/0x4a0
[<c01075f0>] do_invalid_op+0x0/0x110
[<c0107242>] die+0x192/0x1a0
[<c0116c5c>] fixup_exception+0x1c/0x40
[<c01076f6>] do_invalid_op+0x106/0x110
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c0113104>] mcount+0x14/0x18
[<c01c6064>] inode_has_perm+0x64/0x90
[<c013193d>] __mcount+0x1d/0x20
[<c01c890e>] selinux_file_permission+0xe/0x170
[<c015b5f3>] vfs_write+0xa3/0x140
[<c0113104>] mcount+0x14/0x18
[<c0106a25>] error_code+0x2d/0x38
[<c01da56b>] rwsem_owner_del+0x6b/0x90
[<c01db057>] up_write+0x27/0x80
[<f88c1c18>] snd_pcm_oss_write+0x38/0x70 [snd_pcm_oss]
[<c0113104>] mcount+0x14/0x18
[<f88c1be0>] snd_pcm_oss_write+0x0/0x70 [snd_pcm_oss]
[<c015b61b>] vfs_write+0xcb/0x140
[<c015b760>] sys_write+0x50/0x80
[<c0106013>] syscall_call+0x7/0xb

2 warnings and 1 error issued. Results may not be reliable.