lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:	Wed, 20 Aug 2008 11:10:21 +0530
From:	Aivils Stoss <aivils@...net.lv>
To:	Jiri Kosina <jkosina@...e.cz>,
	Dmitry Torokhov <dmitry.torokhov@...il.com>
Cc:	Randy Dunlap <rdunlap@...otime.net>, stern@...land.harvard.edu,
	lud <linux-usb@...r.kernel.org>,
	Samuel Thibault <samuel.thibault@...-lyon.org>,
	linux-input@...r.kernel.org, linux-kernel@...r.kernel.org,
	linuxconsole-dev@...ts.sourceforge.net
Subject: Re: PROBLEM: USB keyboards works only 4 per PC host port

On Tuesday 19 August 2008 8:53:07 pm Jiri Kosina wrote:
> On Tue, 19 Aug 2008, Randy Dunlap wrote:
> > > 2.6.22-1-mepis-smp
> > > Quite stable. Have oops sometime inside evdev. Support up to 16
> > > USB keyboards, where 4 hubs are plugged into PC and 4 keyboards on
> > > each hub. Any hub cascade support only 4 keyboards, where 5th or more
> > > is registered but don't send input events. Oops inside evdev , when
> > > USB keyboard unplugged. No slow down even all USB keyboards does
> > > not work properly. My be this one support more than 16 keyboards, but
> > > i don't have PC USB ports enough.
> >
> > Has the evdev oops been reported and/or fixed? I think that we would
> > prefer to fix that soonish.
>
> We haven't seen the respective oops yet, or have I missed it?
>
> I'd bet it is fixed in newer kernels by patches that introduce proper
> locking into evdev code.

I don't know exists this one in the 2.6.26 and above :o(

Aivils Stoss

# cat /proc/version
Linux version 2.6.22-1-mepis-smp (root@...is-pro) (gcc version 4.1.2 20061115 
(prerelease) (Debian 4.1.1-21)) #1 SMP PREEMPT Sun Dec 2 19:15:40 EST 2007

# dmesg
input: CHESEN USB Keyboard as /class/input/input41
input: USB HID v1.10 Device [CHESEN USB Keyboard] on usb-0000:00:1d.3-2.4.4
hub 5-0:1.0: port 2 disabled by hub (EMI?), re-enabling...
usb 5-2: USB disconnect, address 8
usb 5-2.1: USB disconnect, address 14
usb 5-2.1.2: USB disconnect, address 23
BUG: unable to handle kernel paging request at virtual address 00100100
 printing eip:
f8832664
*pde = 00000000
Oops: 0000 [#1]
PREEMPT SMP
Modules linked in: i915 drm evdev binfmt_misc cpufreq_ondemand 
cpufreq_userspace cpufreq_powersave acpi_cpufreq speedstep_lib freq_table 
rfcomm hidp l2cap bluetooth ppdev lp thermal fan button processor ac battery 
ipv6 snd_emu10k1_synth snd_emux_synth snd_seq_virmidi snd_seq_midi_emul 
snd_emu10k1 snd_util_mem snd_hwdep piix ide_core fuse ndiswrapper dm_crypt 
dm_snapshot dm_mirror dm_mod usbhid hid sworks_agp amd_k7_agp ali_agp sis_agp 
ati_agp nvidia_agp via_agp wlan_scan_sta ath_rate_sample snd_emu10k1x 
snd_seq_dummy snd_seq_oss snd_seq_midi snd_seq_midi_event snd_seq snd_rawmidi 
snd_seq_device snd_ac97_codec snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd 
soundcore intel_agp agpgart ac97_bus i2c_i801 i2c_core snd_page_alloc 
parport_pc parport floppy ath_pci wlan ath_hal(P) serio_raw psmouse uhci_hcd 
atl2 pcspkr
CPU:    0
EIP:    0060:[<f8832664>]    Tainted: P       VLI
EFLAGS: 00010206   (2.6.22-1-mepis-smp #1)
EIP is at evdev_disconnect+0x73/0xb1 [evdev]
eax: 00000000   ebx: 000ffcf0   ecx: f73d5540   edx: 01329000
esi: f6c31340   edi: cf00c000   ebp: d2a56800   esp: c1a59e48
ds: 007b   es: 007b   fs: 00d8  gs: 0000  ss: 0068
Process khubd (pid: 168, ti=c1a58000 task=c1aaf030 task.ti=c1a58000)
Stack: c368c800 c368c800 c368cecc c0321be7 00000000 c048f02c c18de420 d2a56800
       f6f98ba0 cf00cc58 f8a51354 caf8501c caf85000 cf00c000 f8a4129d d2a56800
       d2a56818 f8a45dc0 e4ef2800 c030715f 00000000 d2a56818 f8a45df4 00000000
Call Trace:
 [<c0321be7>] input_unregister_device+0x67/0xfc
 [<f8a51354>] hidinput_disconnect+0x2e/0x47 [hid]
 [<f8a4129d>] hid_disconnect+0x70/0xc1 [usbhid]
 [<c030715f>] usb_unbind_interface+0x44/0x85
 [<c02b16a4>] __device_release_driver+0x71/0x8e
 [<c02b1a2c>] device_release_driver+0x1e/0x34
 [<c02b108e>] bus_remove_device+0x5e/0x6c
 [<c02afb7d>] device_del+0x1a4/0x218
 [<c0304c75>] usb_disable_device+0x5c/0xbb
 [<c0301773>] usb_disconnect+0x83/0x11b
 [<c0301761>] usb_disconnect+0x71/0x11b
 [<c0301761>] usb_disconnect+0x71/0x11b
 [<c0301e5e>] hub_thread+0x365/0xa67
 [<c0392677>] __sched_text_start+0x6f7/0x793
 [<c0133e60>] autoremove_wake_function+0x0/0x35
 [<c0301af9>] hub_thread+0x0/0xa67
 [<c0133d93>] kthread+0x38/0x5d
 [<c0133d5b>] kthread+0x0/0x5d
 [<c01049d7>] kernel_thread_helper+0x7/0x10
 =======================
Code: e8 07 e4 ae c7 8b 5e 54 eb 1b 8d 83 08 04 00 00 b9 06 00 02 00 ba 1d 00 
00 00 e8 40 11 94 c7 8b 9b 10 04 00 00 81 eb 10 04 00 00 <8b> 83 10 04 00 00 
0f 18 00 90 8d 93 10 04 00 00 8d 46 54 39 c2
EIP: [<f8832664>] evdev_disconnect+0x73/0xb1 [evdev] SS:ESP 0068:c1a59e48
hid-debug: input LED.CapsLock = 1
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 1
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 1
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 1
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 1
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 0
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 0
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 0
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 0
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed
hid-debug: input LED.CapsLock = 0
/home/aivils/works/kernel/hid/usbhid/hid-core.c: usb_submit_urb(ctrl) failed


# cat /proc/modules
i915 21120 2 - Live 0xf8d13000
drm 67092 3 i915, Live 0xf8d21000
evdev 7936 5 - Live 0xf8832000
binfmt_misc 9224 1 - Live 0xf8cc5000
cpufreq_ondemand 7436 2 - Live 0xf8cb0000
cpufreq_userspace 4256 0 - Live 0xf8cb3000
cpufreq_powersave 2560 0 - Live 0xf8c10000
acpi_cpufreq 7624 0 - Live 0xf8c92000
speedstep_lib 4740 0 - Live 0xf8cad000
freq_table 4512 2 cpufreq_ondemand,acpi_cpufreq, Live 0xf8c95000
rfcomm 31256 0 - Live 0xf8cb8000
hidp 15232 2 - Live 0xf8c86000
l2cap 19712 10 rfcomm,hidp, Live 0xf8c9a000
bluetooth 42724 5 rfcomm,hidp,l2cap, Live 0xf8ca1000
ppdev 7684 0 - Live 0xf8c8f000
lp 9476 0 - Live 0xf8c8b000
thermal 11784 0 - Live 0xf8c1a000
fan 4612 0 - Live 0xf8c21000
button 7056 0 - Live 0xf8c1e000
processor 25928 2 acpi_cpufreq,thermal, Live 0xf8c12000
ac 4740 0 - Live 0xf8bfc000
battery 9220 0 - Live 0xf8bf8000
ipv6 217380 12 - Live 0xf8cc9000
snd_emu10k1_synth 6784 0 - Live 0xf8bf5000
snd_emux_synth 29568 1 snd_emu10k1_synth, Live 0xf8bff000
snd_seq_virmidi 6144 1 snd_emux_synth, Live 0xf8bf2000
snd_seq_midi_emul 6016 1 snd_emux_synth, Live 0xf8a7d000
snd_emu10k1 119232 1 snd_emu10k1_synth, Live 0xf8c67000
snd_util_mem 4352 2 snd_emux_synth,snd_emu10k1, Live 0xf8a7a000
snd_hwdep 7556 2 snd_emux_synth,snd_emu10k1, Live 0xf8a77000
piix 8708 0 [permanent], Live 0xf8a66000
ide_core 100036 1 piix, Live 0xf8c4d000
fuse 36756 1 - Live 0xf89f6000
ndiswrapper 162396 0 - Live 0xf8c24000
dm_crypt 11272 0 - Live 0xf884f000
dm_snapshot 14888 0 - Live 0xf8a5c000
dm_mirror 18304 0 - Live 0xf8a48000
dm_mod 43840 3 dm_crypt,dm_snapshot,dm_mirror, Live 0xf8a6b000
usbhid 22240 0 - Live 0xf8a41000
hid 41344 2 hidp,usbhid, Live 0xf8a50000
sworks_agp 8096 0 - Live 0xf89f3000
amd_k7_agp 7436 0 - Live 0xf89f0000
ali_agp 6144 0 - Live 0xf89d3000
sis_agp 7556 0 - Live 0xf89d0000
ati_agp 7564 0 - Live 0xf89cd000
nvidia_agp 7068 0 - Live 0xf89ca000
via_agp 8960 0 - Live 0xf882e000
wlan_scan_sta 11776 1 - Live 0xf89c6000
ath_rate_sample 11776 1 - Live 0xf8959000
snd_emu10k1x 15268 0 - Live 0xf8991000
snd_seq_dummy 3844 0 - Live 0xf8960000
snd_seq_oss 28800 0 - Live 0xf8996000
snd_seq_midi 6944 0 - Live 0xf897c000
snd_seq_midi_event 6656 3 snd_seq_virmidi,snd_seq_oss,snd_seq_midi, Live 
0xf895d000
snd_seq 42576 9 
snd_emux_synth,snd_seq_virmidi,snd_seq_midi_emul,snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event, 
Live 0xf89ba000
snd_rawmidi 18208 4 snd_seq_virmidi,snd_emu10k1,snd_emu10k1x,snd_seq_midi, 
Live 0xf8856000
snd_seq_device 7308 8 
snd_emu10k1_synth,snd_emux_synth,snd_emu10k1,snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq,snd_rawmidi, 
Live 0xf88f1000
snd_ac97_codec 90788 2 snd_emu10k1,snd_emu10k1x, Live 0xf89d8000
snd_pcm_oss 34976 0 - Live 0xf89b0000
snd_mixer_oss 14592 1 snd_pcm_oss, Live 0xf8977000
snd_pcm 62084 4 snd_emu10k1,snd_emu10k1x,snd_ac97_codec,snd_pcm_oss, Live 
0xf899f000
snd_timer 17668 3 snd_emu10k1,snd_seq,snd_pcm, Live 0xf8971000
snd 41316 15 
snd_emux_synth,snd_seq_virmidi,snd_emu10k1,snd_hwdep,snd_emu10k1x,snd_seq_dummy,snd_seq_oss,snd_seq,snd_rawmidi,snd_seq_device,snd_ac97_codec,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer, 
Live 0xf897f000
soundcore 6880 1 snd, Live 0xf887d000
intel_agp 21012 1 - Live 0xf896a000
agpgart 25804 10 
drm,sworks_agp,amd_k7_agp,ali_agp,sis_agp,ati_agp,nvidia_agp,via_agp,intel_agp, 
Live 0xf8962000
ac97_bus 3072 1 snd_ac97_codec, Live 0xf8866000
i2c_i801 8208 0 - Live 0xf8860000
i2c_core 19456 1 i2c_i801, Live 0xf8877000
snd_page_alloc 8328 3 snd_emu10k1,snd_emu10k1x,snd_pcm, Live 0xf885c000
parport_pc 30116 1 - Live 0xf8950000
parport 29512 3 ppdev,lp,parport_pc, Live 0xf88d6000
floppy 50052 0 - Live 0xf8869000
ath_pci 81440 0 - Live 0xf88c1000
wlan 170180 4 wlan_scan_sta,ath_rate_sample,ath_pci, Live 0xf8925000
ath_hal 190544 3 ath_rate_sample,ath_pci, Live 0xf88f5000 (P)
serio_raw 6020 0 - Live 0xf8853000
psmouse 34320 0 - Live 0xf8837000
uhci_hcd 20364 0 - Live 0xf8849000
atl2 24216 0 - Live 0xf8842000
pcspkr 3456 0 - Live 0xf8835000


# objdump -D evdev.ko

evdev.ko:     file format elf32-i386

Disassembly of section .text:

00000000 <evdev_poll>:
   0:	57                   	push   %edi
   1:	56                   	push   %esi
   2:	53                   	push   %ebx
   3:	89 d3                	mov    %edx,%ebx
   5:	8b b0 80 00 00 00    	mov    0x80(%eax),%esi
   b:	85 db                	test   %ebx,%ebx
   d:	8b be 0c 04 00 00    	mov    0x40c(%esi),%edi
  13:	8d 57 40             	lea    0x40(%edi),%edx
  16:	74 08                	je     20 <evdev_poll+0x20>
  18:	85 d2                	test   %edx,%edx
  1a:	74 04                	je     20 <evdev_poll+0x20>
  1c:	89 d9                	mov    %ebx,%ecx
  1e:	ff 13                	call   *(%ebx)
  20:	8b 96 00 04 00 00    	mov    0x400(%esi),%edx
  26:	31 c0                	xor    %eax,%eax
  28:	3b 96 04 04 00 00    	cmp    0x404(%esi),%edx
  2e:	ba 41 00 00 00       	mov    $0x41,%edx
  33:	5b                   	pop    %ebx
  34:	0f 45 c2             	cmovne %edx,%eax
  37:	83 3f 01             	cmpl   $0x1,(%edi)
  3a:	5e                   	pop    %esi
  3b:	19 d2                	sbb    %edx,%edx
  3d:	5f                   	pop    %edi
  3e:	83 e2 18             	and    $0x18,%edx
  41:	09 d0                	or     %edx,%eax
  43:	c3                   	ret    

00000044 <evdev_fasync>:
  44:	53                   	push   %ebx
  45:	83 ec 04             	sub    $0x4,%esp
  48:	8b 9a 80 00 00 00    	mov    0x80(%edx),%ebx
  4e:	81 c3 08 04 00 00    	add    $0x408,%ebx
  54:	89 1c 24             	mov    %ebx,(%esp)
  57:	e8 fc ff ff ff       	call   58 <evdev_fasync+0x14>
  5c:	89 c2                	mov    %eax,%edx
  5e:	31 c0                	xor    %eax,%eax
  60:	85 d2                	test   %edx,%edx
  62:	0f 4e c2             	cmovle %edx,%eax
  65:	5a                   	pop    %edx
  66:	5b                   	pop    %ebx
  67:	c3                   	ret    

00000068 <evdev_free>:
  68:	8b 50 08             	mov    0x8(%eax),%edx
  6b:	c7 04 95 00 00 00 00 	movl   $0x0,0x0(,%edx,4)
  72:	00 00 00 00 
  76:	e9 fc ff ff ff       	jmp    77 <evdev_free+0xf>

0000007b <evdev_flush>:
  7b:	89 c2                	mov    %eax,%edx
  7d:	8b 80 80 00 00 00    	mov    0x80(%eax),%eax
  83:	8b 80 0c 04 00 00    	mov    0x40c(%eax),%eax
  89:	83 38 00             	cmpl   $0x0,(%eax)
  8c:	74 08                	je     96 <evdev_flush+0x1b>
  8e:	83 c0 1c             	add    $0x1c,%eax
  91:	e9 fc ff ff ff       	jmp    92 <evdev_flush+0x17>
  96:	b8 ed ff ff ff       	mov    $0xffffffed,%eax
  9b:	c3                   	ret    

0000009c <str_to_user>:
  9c:	57                   	push   %edi
  9d:	85 c0                	test   %eax,%eax
  9f:	56                   	push   %esi
  a0:	bf fe ff ff ff       	mov    $0xfffffffe,%edi
  a5:	53                   	push   %ebx
  a6:	89 ce                	mov    %ecx,%esi
  a8:	89 c3                	mov    %eax,%ebx
  aa:	74 29                	je     d5 <str_to_user+0x39>
  ac:	31 c0                	xor    %eax,%eax
  ae:	83 c9 ff             	or     $0xffffffff,%ecx
  b1:	89 df                	mov    %ebx,%edi
  b3:	f2 ae                	repnz scas %es:(%edi),%al
  b5:	f7 d1                	not    %ecx
  b7:	49                   	dec    %ecx
  b8:	8d 79 01             	lea    0x1(%ecx),%edi
  bb:	89 f0                	mov    %esi,%eax
  bd:	39 d7                	cmp    %edx,%edi
  bf:	0f 47 fa             	cmova  %edx,%edi
  c2:	89 da                	mov    %ebx,%edx
  c4:	89 f9                	mov    %edi,%ecx
  c6:	e8 fc ff ff ff       	call   c7 <str_to_user+0x2b>
  cb:	85 c0                	test   %eax,%eax
  cd:	b8 f2 ff ff ff       	mov    $0xfffffff2,%eax
  d2:	0f 45 f8             	cmovne %eax,%edi
  d5:	5b                   	pop    %ebx
  d6:	89 f8                	mov    %edi,%eax
  d8:	5e                   	pop    %esi
  d9:	5f                   	pop    %edi
  da:	c3                   	ret    

000000db <bits_to_user>:
  db:	53                   	push   %ebx
  dc:	c1 ea 05             	shr    $0x5,%edx
  df:	8d 1c 95 04 00 00 00 	lea    0x4(,%edx,4),%ebx
  e6:	89 c2                	mov    %eax,%edx
  e8:	8b 44 24 08          	mov    0x8(%esp),%eax
  ec:	39 cb                	cmp    %ecx,%ebx
  ee:	0f 47 d9             	cmova  %ecx,%ebx
  f1:	89 d9                	mov    %ebx,%ecx
  f3:	e8 fc ff ff ff       	call   f4 <bits_to_user+0x19>
  f8:	85 c0                	test   %eax,%eax
  fa:	b8 f2 ff ff ff       	mov    $0xfffffff2,%eax
  ff:	0f 45 d8             	cmovne %eax,%ebx
 102:	89 d8                	mov    %ebx,%eax
 104:	5b                   	pop    %ebx
 105:	c3                   	ret    

00000106 <evdev_ioctl>:
 106:	55                   	push   %ebp
 107:	57                   	push   %edi
 108:	89 cf                	mov    %ecx,%edi
 10a:	56                   	push   %esi
 10b:	53                   	push   %ebx
 10c:	89 d3                	mov    %edx,%ebx
 10e:	83 ec 54             	sub    $0x54,%esp
 111:	89 44 24 08          	mov    %eax,0x8(%esp)
 115:	8b 80 80 00 00 00    	mov    0x80(%eax),%eax
 11b:	89 44 24 0c          	mov    %eax,0xc(%esp)
 11f:	8b a8 0c 04 00 00    	mov    0x40c(%eax),%ebp
 125:	b8 ed ff ff ff       	mov    $0xffffffed,%eax
 12a:	83 7d 00 00          	cmpl   $0x0,0x0(%ebp)
 12e:	8b 75 28             	mov    0x28(%ebp),%esi
 131:	0f 84 b2 04 00 00    	je     5e9 <evdev_ioctl+0x4e3>
 137:	81 fa 80 45 2c 40    	cmp    $0x402c4580,%edx
 13d:	0f 84 98 01 00 00    	je     2db <evdev_ioctl+0x1d5>
 143:	77 3c                	ja     181 <evdev_ioctl+0x7b>
 145:	81 fa 90 45 04 40    	cmp    $0x40044590,%edx
 14b:	0f 84 08 02 00 00    	je     359 <evdev_ioctl+0x253>
 151:	77 11                	ja     164 <evdev_ioctl+0x5e>
 153:	81 fa 81 45 04 40    	cmp    $0x40044581,%edx
 159:	0f 85 42 02 00 00    	jne    3a1 <evdev_ioctl+0x29b>
 15f:	e9 c0 01 00 00       	jmp    324 <evdev_ioctl+0x21e>
 164:	81 fa 03 45 08 40    	cmp    $0x40084503,%edx
 16a:	0f 84 9d 00 00 00    	je     20d <evdev_ioctl+0x107>
 170:	81 fa 04 45 08 40    	cmp    $0x40084504,%edx
 176:	0f 85 25 02 00 00    	jne    3a1 <evdev_ioctl+0x29b>
 17c:	e9 24 01 00 00       	jmp    2a5 <evdev_ioctl+0x19f>
 181:	81 fa 02 45 08 80    	cmp    $0x80084502,%edx
 187:	74 43                	je     1cc <evdev_ioctl+0xc6>
 189:	77 19                	ja     1a4 <evdev_ioctl+0x9e>
 18b:	81 fa 01 45 04 80    	cmp    $0x80044501,%edx
 191:	74 2a                	je     1bd <evdev_ioctl+0xb7>
 193:	81 fa 84 45 04 80    	cmp    $0x80044584,%edx
 199:	0f 85 02 02 00 00    	jne    3a1 <evdev_ioctl+0x29b>
 19f:	e9 92 01 00 00       	jmp    336 <evdev_ioctl+0x230>
 1a4:	81 fa 03 45 08 80    	cmp    $0x80084503,%edx
 1aa:	74 2d                	je     1d9 <evdev_ioctl+0xd3>
 1ac:	81 fa 04 45 08 80    	cmp    $0x80084504,%edx
 1b2:	0f 85 e9 01 00 00    	jne    3a1 <evdev_ioctl+0x29b>
 1b8:	e9 b4 00 00 00       	jmp    271 <evdev_ioctl+0x16b>
 1bd:	b8 00 00 01 00       	mov    $0x10000,%eax
 1c2:	e8 fc ff ff ff       	call   1c3 <evdev_ioctl+0xbd>
 1c7:	e9 1d 04 00 00       	jmp    5e9 <evdev_ioctl+0x4e3>
 1cc:	8d 56 10             	lea    0x10(%esi),%edx
 1cf:	b9 08 00 00 00       	mov    $0x8,%ecx
 1d4:	e9 7f 03 00 00       	jmp    558 <evdev_ioctl+0x452>
 1d9:	8b 46 18             	mov    0x18(%esi),%eax
 1dc:	a9 00 00 10 00       	test   $0x100000,%eax
 1e1:	0f 84 ef 03 00 00    	je     5d6 <evdev_ioctl+0x4d0>
 1e7:	8b 86 c4 01 00 00    	mov    0x1c4(%esi),%eax
 1ed:	e8 fc ff ff ff       	call   1ee <evdev_ioctl+0xe8>
 1f2:	85 c0                	test   %eax,%eax
 1f4:	0f 85 d5 03 00 00    	jne    5cf <evdev_ioctl+0x4c9>
 1fa:	8b 86 c8 01 00 00    	mov    0x1c8(%esi),%eax
 200:	8d 4f 04             	lea    0x4(%edi),%ecx
 203:	e8 fc ff ff ff       	call   204 <evdev_ioctl+0xfe>
 208:	e9 52 03 00 00       	jmp    55f <evdev_ioctl+0x459>
 20d:	8b 46 18             	mov    0x18(%esi),%eax
 210:	a9 00 00 10 00       	test   $0x100000,%eax
 215:	0f 84 bb 03 00 00    	je     5d6 <evdev_ioctl+0x4d0>
 21b:	89 c8                	mov    %ecx,%eax
 21d:	e8 fc ff ff ff       	call   21e <evdev_ioctl+0x118>
 222:	85 c0                	test   %eax,%eax
 224:	89 d1                	mov    %edx,%ecx
 226:	0f 85 a3 03 00 00    	jne    5cf <evdev_ioctl+0x4c9>
 22c:	8d 47 04             	lea    0x4(%edi),%eax
 22f:	e8 fc ff ff ff       	call   230 <evdev_ioctl+0x12a>
 234:	85 c0                	test   %eax,%eax
 236:	0f 85 93 03 00 00    	jne    5cf <evdev_ioctl+0x4c9>
 23c:	8d 5d 1c             	lea    0x1c(%ebp),%ebx
 23f:	89 d8                	mov    %ebx,%eax
 241:	89 54 24 50          	mov    %edx,0x50(%esp)
 245:	ba 14 00 00 00       	mov    $0x14,%edx
 24a:	89 0c 24             	mov    %ecx,(%esp)
 24d:	31 c9                	xor    %ecx,%ecx
 24f:	e8 fc ff ff ff       	call   250 <evdev_ioctl+0x14a>
 254:	b9 01 00 00 00       	mov    $0x1,%ecx
 259:	ba 14 00 00 00       	mov    $0x14,%edx
 25e:	8b 44 24 50          	mov    0x50(%esp),%eax
 262:	89 04 24             	mov    %eax,(%esp)
 265:	89 d8                	mov    %ebx,%eax
 267:	e8 fc ff ff ff       	call   268 <evdev_ioctl+0x162>
 26c:	e9 0e 01 00 00       	jmp    37f <evdev_ioctl+0x279>
 271:	89 c8                	mov    %ecx,%eax
 273:	e8 fc ff ff ff       	call   274 <evdev_ioctl+0x16e>
 278:	85 c0                	test   %eax,%eax
 27a:	0f 85 4f 03 00 00    	jne    5cf <evdev_ioctl+0x4c9>
 280:	8d 4c 24 50          	lea    0x50(%esp),%ecx
 284:	89 f0                	mov    %esi,%eax
 286:	ff 96 98 00 00 00    	call   *0x98(%esi)
 28c:	85 c0                	test   %eax,%eax
 28e:	0f 85 55 03 00 00    	jne    5e9 <evdev_ioctl+0x4e3>
 294:	8b 44 24 50          	mov    0x50(%esp),%eax
 298:	8d 4f 04             	lea    0x4(%edi),%ecx
 29b:	e8 fc ff ff ff       	call   29c <evdev_ioctl+0x196>
 2a0:	e9 ba 02 00 00       	jmp    55f <evdev_ioctl+0x459>
 2a5:	89 c8                	mov    %ecx,%eax
 2a7:	e8 fc ff ff ff       	call   2a8 <evdev_ioctl+0x1a2>
 2ac:	85 c0                	test   %eax,%eax
 2ae:	89 d3                	mov    %edx,%ebx
 2b0:	0f 85 19 03 00 00    	jne    5cf <evdev_ioctl+0x4c9>
 2b6:	8d 41 04             	lea    0x4(%ecx),%eax
 2b9:	e8 fc ff ff ff       	call   2ba <evdev_ioctl+0x1b4>
 2be:	85 c0                	test   %eax,%eax
 2c0:	0f 85 09 03 00 00    	jne    5cf <evdev_ioctl+0x4c9>
 2c6:	89 d1                	mov    %edx,%ecx
 2c8:	89 f0                	mov    %esi,%eax
 2ca:	89 54 24 50          	mov    %edx,0x50(%esp)
 2ce:	89 da                	mov    %ebx,%edx
 2d0:	ff 96 94 00 00 00    	call   *0x94(%esi)
 2d6:	e9 0e 03 00 00       	jmp    5e9 <evdev_ioctl+0x4e3>
 2db:	8d 5c 24 10          	lea    0x10(%esp),%ebx
 2df:	b9 2c 00 00 00       	mov    $0x2c,%ecx
 2e4:	89 fa                	mov    %edi,%edx
 2e6:	89 d8                	mov    %ebx,%eax
 2e8:	e8 fc ff ff ff       	call   2e9 <evdev_ioctl+0x1e3>
 2ed:	85 c0                	test   %eax,%eax
 2ef:	0f 85 da 02 00 00    	jne    5cf <evdev_ioctl+0x4c9>
 2f5:	8b 4c 24 08          	mov    0x8(%esp),%ecx
 2f9:	89 da                	mov    %ebx,%edx
 2fb:	89 f0                	mov    %esi,%eax
 2fd:	e8 fc ff ff ff       	call   2fe <evdev_ioctl+0x1f8>
 302:	8d 4f 02             	lea    0x2(%edi),%ecx
 305:	66 8b 54 24 12       	mov    0x12(%esp),%dx
 30a:	89 c3                	mov    %eax,%ebx
 30c:	89 d0                	mov    %edx,%eax
 30e:	e8 fc ff ff ff       	call   30f <evdev_ioctl+0x209>
 313:	89 c2                	mov    %eax,%edx
 315:	89 d8                	mov    %ebx,%eax
 317:	85 d2                	test   %edx,%edx
 319:	0f 84 ca 02 00 00    	je     5e9 <evdev_ioctl+0x4e3>
 31f:	e9 ab 02 00 00       	jmp    5cf <evdev_ioctl+0x4c9>
 324:	8b 4c 24 08          	mov    0x8(%esp),%ecx
 328:	89 fa                	mov    %edi,%edx
 32a:	89 f0                	mov    %esi,%eax
 32c:	e8 fc ff ff ff       	call   32d <evdev_ioctl+0x227>
 331:	e9 b3 02 00 00       	jmp    5e9 <evdev_ioctl+0x4e3>
 336:	8b 46 18             	mov    0x18(%esi),%eax
 339:	31 d2                	xor    %edx,%edx
 33b:	a9 00 00 20 00       	test   $0x200000,%eax
 340:	74 09                	je     34b <evdev_ioctl+0x245>
 342:	8b 86 9c 00 00 00    	mov    0x9c(%esi),%eax
 348:	8b 50 40             	mov    0x40(%eax),%edx
 34b:	89 d0                	mov    %edx,%eax
 34d:	89 f9                	mov    %edi,%ecx
 34f:	e8 fc ff ff ff       	call   350 <evdev_ioctl+0x24a>
 354:	e9 06 02 00 00       	jmp    55f <evdev_ioctl+0x459>
 359:	85 c9                	test   %ecx,%ecx
 35b:	8b 45 50             	mov    0x50(%ebp),%eax
 35e:	74 26                	je     386 <evdev_ioctl+0x280>
 360:	85 c0                	test   %eax,%eax
 362:	0f 85 75 02 00 00    	jne    5dd <evdev_ioctl+0x4d7>
 368:	8d 45 1c             	lea    0x1c(%ebp),%eax
 36b:	e8 fc ff ff ff       	call   36c <evdev_ioctl+0x266>
 370:	85 c0                	test   %eax,%eax
 372:	0f 85 65 02 00 00    	jne    5dd <evdev_ioctl+0x4d7>
 378:	8b 44 24 0c          	mov    0xc(%esp),%eax
 37c:	89 45 50             	mov    %eax,0x50(%ebp)
 37f:	31 c0                	xor    %eax,%eax
 381:	e9 63 02 00 00       	jmp    5e9 <evdev_ioctl+0x4e3>
 386:	3b 44 24 0c          	cmp    0xc(%esp),%eax
 38a:	0f 85 54 02 00 00    	jne    5e4 <evdev_ioctl+0x4de>
 390:	8d 45 1c             	lea    0x1c(%ebp),%eax
 393:	e8 fc ff ff ff       	call   394 <evdev_ioctl+0x28e>
 398:	c7 45 50 00 00 00 00 	movl   $0x0,0x50(%ebp)
 39f:	eb de                	jmp    37f <evdev_ioctl+0x279>
 3a1:	0f b6 c7             	movzbl %bh,%eax
 3a4:	83 f8 45             	cmp    $0x45,%eax
 3a7:	0f 85 37 02 00 00    	jne    5e4 <evdev_ioctl+0x4de>
 3ad:	89 d8                	mov    %ebx,%eax
 3af:	c1 e8 1e             	shr    $0x1e,%eax
 3b2:	83 f8 02             	cmp    $0x2,%eax
 3b5:	0f 85 ae 01 00 00    	jne    569 <evdev_ioctl+0x463>
 3bb:	89 d8                	mov    %ebx,%eax
 3bd:	25 e0 00 00 00       	and    $0xe0,%eax
 3c2:	83 f8 20             	cmp    $0x20,%eax
 3c5:	75 79                	jne    440 <evdev_ioctl+0x33a>
 3c7:	89 d8                	mov    %ebx,%eax
 3c9:	83 e0 1f             	and    $0x1f,%eax
 3cc:	83 f8 15             	cmp    $0x15,%eax
 3cf:	0f 87 0f 02 00 00    	ja     5e4 <evdev_ioctl+0x4de>
 3d5:	ff 24 85 00 00 00 00 	jmp    *0x0(,%eax,4)
 3dc:	8d 46 18             	lea    0x18(%esi),%eax
 3df:	ba 1f 00 00 00       	mov    $0x1f,%edx
 3e4:	eb 42                	jmp    428 <evdev_ioctl+0x322>
 3e6:	8d 46 1c             	lea    0x1c(%esi),%eax
 3e9:	ba ff 01 00 00       	mov    $0x1ff,%edx
 3ee:	eb 38                	jmp    428 <evdev_ioctl+0x322>
 3f0:	8d 46 5c             	lea    0x5c(%esi),%eax
 3f3:	eb 2e                	jmp    423 <evdev_ioctl+0x31d>
 3f5:	8d 46 60             	lea    0x60(%esi),%eax
 3f8:	ba 3f 00 00 00       	mov    $0x3f,%edx
 3fd:	eb 29                	jmp    428 <evdev_ioctl+0x322>
 3ff:	8d 46 68             	lea    0x68(%esi),%eax
 402:	eb 08                	jmp    40c <evdev_ioctl+0x306>
 404:	8d 46 6c             	lea    0x6c(%esi),%eax
 407:	eb 1a                	jmp    423 <evdev_ioctl+0x31d>
 409:	8d 46 70             	lea    0x70(%esi),%eax
 40c:	ba 07 00 00 00       	mov    $0x7,%edx
 411:	eb 15                	jmp    428 <evdev_ioctl+0x322>
 413:	8d 46 74             	lea    0x74(%esi),%eax
 416:	ba 7f 00 00 00       	mov    $0x7f,%edx
 41b:	eb 0b                	jmp    428 <evdev_ioctl+0x322>
 41d:	8d 86 84 00 00 00    	lea    0x84(%esi),%eax
 423:	ba 0f 00 00 00       	mov    $0xf,%edx
 428:	c1 eb 10             	shr    $0x10,%ebx
 42b:	81 e3 ff 3f 00 00    	and    $0x3fff,%ebx
 431:	89 d9                	mov    %ebx,%ecx
 433:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
 43a:	00 
 43b:	89 3c 24             	mov    %edi,(%esp)
 43e:	eb 29                	jmp    469 <evdev_ioctl+0x363>
 440:	0f b6 c3             	movzbl %bl,%eax
 443:	83 f8 18             	cmp    $0x18,%eax
 446:	75 2b                	jne    473 <evdev_ioctl+0x36d>
 448:	c1 eb 10             	shr    $0x10,%ebx
 44b:	ba ff 01 00 00       	mov    $0x1ff,%edx
 450:	81 e3 ff 3f 00 00    	and    $0x3fff,%ebx
 456:	8d 86 cc 01 00 00    	lea    0x1cc(%esi),%eax
 45c:	89 d9                	mov    %ebx,%ecx
 45e:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
 465:	00 
 466:	89 3c 24             	mov    %edi,(%esp)
 469:	e8 6d fc ff ff       	call   db <bits_to_user>
 46e:	e9 76 01 00 00       	jmp    5e9 <evdev_ioctl+0x4e3>
 473:	83 f8 19             	cmp    $0x19,%eax
 476:	75 08                	jne    480 <evdev_ioctl+0x37a>
 478:	8d 86 0c 02 00 00    	lea    0x20c(%esi),%eax
 47e:	eb 33                	jmp    4b3 <evdev_ioctl+0x3ad>
 480:	83 f8 1a             	cmp    $0x1a,%eax
 483:	75 23                	jne    4a8 <evdev_ioctl+0x3a2>
 485:	c1 eb 10             	shr    $0x10,%ebx
 488:	ba 07 00 00 00       	mov    $0x7,%edx
 48d:	81 e3 ff 3f 00 00    	and    $0x3fff,%ebx
 493:	8d 86 10 02 00 00    	lea    0x210(%esi),%eax
 499:	89 d9                	mov    %ebx,%ecx
 49b:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
 4a2:	00 
 4a3:	89 3c 24             	mov    %edi,(%esp)
 4a6:	eb c1                	jmp    469 <evdev_ioctl+0x363>
 4a8:	83 f8 1b             	cmp    $0x1b,%eax
 4ab:	75 23                	jne    4d0 <evdev_ioctl+0x3ca>
 4ad:	8d 86 14 02 00 00    	lea    0x214(%esi),%eax
 4b3:	c1 eb 10             	shr    $0x10,%ebx
 4b6:	ba 0f 00 00 00       	mov    $0xf,%edx
 4bb:	81 e3 ff 3f 00 00    	and    $0x3fff,%ebx
 4c1:	89 d9                	mov    %ebx,%ecx
 4c3:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
 4ca:	00 
 4cb:	89 3c 24             	mov    %edi,(%esp)
 4ce:	eb 99                	jmp    469 <evdev_ioctl+0x363>
 4d0:	83 f8 06             	cmp    $0x6,%eax
 4d3:	75 05                	jne    4da <evdev_ioctl+0x3d4>
 4d5:	8b 46 04             	mov    0x4(%esi),%eax
 4d8:	eb 12                	jmp    4ec <evdev_ioctl+0x3e6>
 4da:	83 f8 07             	cmp    $0x7,%eax
 4dd:	75 05                	jne    4e4 <evdev_ioctl+0x3de>
 4df:	8b 46 08             	mov    0x8(%esi),%eax
 4e2:	eb 08                	jmp    4ec <evdev_ioctl+0x3e6>
 4e4:	83 f8 08             	cmp    $0x8,%eax
 4e7:	75 1a                	jne    503 <evdev_ioctl+0x3fd>
 4e9:	8b 46 0c             	mov    0xc(%esi),%eax
 4ec:	c1 eb 10             	shr    $0x10,%ebx
 4ef:	89 f9                	mov    %edi,%ecx
 4f1:	81 e3 ff 3f 00 00    	and    $0x3fff,%ebx
 4f7:	89 da                	mov    %ebx,%edx
 4f9:	e8 9e fb ff ff       	call   9c <str_to_user>
 4fe:	e9 e6 00 00 00       	jmp    5e9 <evdev_ioctl+0x4e3>
 503:	89 d8                	mov    %ebx,%eax
 505:	25 c0 00 00 00       	and    $0xc0,%eax
 50a:	83 f8 40             	cmp    $0x40,%eax
 50d:	0f 85 d1 00 00 00    	jne    5e4 <evdev_ioctl+0x4de>
 513:	89 da                	mov    %ebx,%edx
 515:	b9 14 00 00 00       	mov    $0x14,%ecx
 51a:	83 e2 3f             	and    $0x3f,%edx
 51d:	8b 84 96 c4 00 00 00 	mov    0xc4(%esi,%edx,4),%eax
 524:	89 44 24 3c          	mov    %eax,0x3c(%esp)
 528:	8b 84 96 18 03 00 00 	mov    0x318(%esi,%edx,4),%eax
 52f:	89 44 24 40          	mov    %eax,0x40(%esp)
 533:	8b 84 96 18 02 00 00 	mov    0x218(%esi,%edx,4),%eax
 53a:	89 44 24 44          	mov    %eax,0x44(%esp)
 53e:	8b 84 96 18 04 00 00 	mov    0x418(%esi,%edx,4),%eax
 545:	89 44 24 48          	mov    %eax,0x48(%esp)
 549:	8b 84 96 18 05 00 00 	mov    0x518(%esi,%edx,4),%eax
 550:	8d 54 24 3c          	lea    0x3c(%esp),%edx
 554:	89 44 24 4c          	mov    %eax,0x4c(%esp)
 558:	89 f8                	mov    %edi,%eax
 55a:	e8 fc ff ff ff       	call   55b <evdev_ioctl+0x455>
 55f:	85 c0                	test   %eax,%eax
 561:	0f 84 18 fe ff ff    	je     37f <evdev_ioctl+0x279>
 567:	eb 66                	jmp    5cf <evdev_ioctl+0x4c9>
 569:	48                   	dec    %eax
 56a:	75 78                	jne    5e4 <evdev_ioctl+0x4de>
 56c:	89 d8                	mov    %ebx,%eax
 56e:	25 c0 00 00 00       	and    $0xc0,%eax
 573:	3d c0 00 00 00       	cmp    $0xc0,%eax
 578:	75 6a                	jne    5e4 <evdev_ioctl+0x4de>
 57a:	8d 44 24 3c          	lea    0x3c(%esp),%eax
 57e:	b9 14 00 00 00       	mov    $0x14,%ecx
 583:	89 fa                	mov    %edi,%edx
 585:	e8 fc ff ff ff       	call   586 <evdev_ioctl+0x480>
 58a:	85 c0                	test   %eax,%eax
 58c:	75 41                	jne    5cf <evdev_ioctl+0x4c9>
 58e:	8b 44 24 3c          	mov    0x3c(%esp),%eax
 592:	89 da                	mov    %ebx,%edx
 594:	83 e2 3f             	and    $0x3f,%edx
 597:	89 84 96 c4 00 00 00 	mov    %eax,0xc4(%esi,%edx,4)
 59e:	8b 44 24 40          	mov    0x40(%esp),%eax
 5a2:	89 84 96 18 03 00 00 	mov    %eax,0x318(%esi,%edx,4)
 5a9:	8b 44 24 44          	mov    0x44(%esp),%eax
 5ad:	89 84 96 18 02 00 00 	mov    %eax,0x218(%esi,%edx,4)
 5b4:	8b 44 24 48          	mov    0x48(%esp),%eax
 5b8:	89 84 96 18 04 00 00 	mov    %eax,0x418(%esi,%edx,4)
 5bf:	8b 44 24 4c          	mov    0x4c(%esp),%eax
 5c3:	89 84 96 18 05 00 00 	mov    %eax,0x518(%esi,%edx,4)
 5ca:	e9 b0 fd ff ff       	jmp    37f <evdev_ioctl+0x279>
 5cf:	b8 f2 ff ff ff       	mov    $0xfffffff2,%eax
 5d4:	eb 13                	jmp    5e9 <evdev_ioctl+0x4e3>
 5d6:	b8 da ff ff ff       	mov    $0xffffffda,%eax
 5db:	eb 0c                	jmp    5e9 <evdev_ioctl+0x4e3>
 5dd:	b8 f0 ff ff ff       	mov    $0xfffffff0,%eax
 5e2:	eb 05                	jmp    5e9 <evdev_ioctl+0x4e3>
 5e4:	b8 ea ff ff ff       	mov    $0xffffffea,%eax
 5e9:	83 c4 54             	add    $0x54,%esp
 5ec:	5b                   	pop    %ebx
 5ed:	5e                   	pop    %esi
 5ee:	5f                   	pop    %edi
 5ef:	5d                   	pop    %ebp
 5f0:	c3                   	ret    

000005f1 <evdev_disconnect>:
 5f1:	56                   	push   %esi
 5f2:	53                   	push   %ebx
 5f3:	89 c3                	mov    %eax,%ebx
 5f5:	83 ec 04             	sub    $0x4,%esp
 5f8:	8b 30                	mov    (%eax),%esi
 5fa:	e8 fc ff ff ff       	call   5fb <evdev_disconnect+0xa>
 5ff:	b8 1c 00 00 00       	mov    $0x1c,%eax
 604:	8d 56 0c             	lea    0xc(%esi),%edx
 607:	e8 fc ff ff ff       	call   608 <evdev_disconnect+0x17>
 60c:	8b 56 08             	mov    0x8(%esi),%edx
 60f:	b8 00 00 00 00       	mov    $0x0,%eax
 614:	83 c2 40             	add    $0x40,%edx
 617:	81 ca 00 00 d0 00    	or     $0xd00000,%edx
 61d:	e8 fc ff ff ff       	call   61e <evdev_disconnect+0x2d>
 622:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
 626:	c7 06 00 00 00 00    	movl   $0x0,(%esi)
 62c:	74 6a                	je     698 <evdev_disconnect+0xa7>
 62e:	31 d2                	xor    %edx,%edx
 630:	89 d8                	mov    %ebx,%eax
 632:	e8 fc ff ff ff       	call   633 <evdev_disconnect+0x42>
 637:	89 d8                	mov    %ebx,%eax
 639:	e8 fc ff ff ff       	call   63a <evdev_disconnect+0x49>
 63e:	8b 5e 54             	mov    0x54(%esi),%ebx
 641:	eb 1b                	jmp    65e <evdev_disconnect+0x6d>
 643:	8d 83 08 04 00 00    	lea    0x408(%ebx),%eax
 649:	b9 06 00 02 00       	mov    $0x20006,%ecx
 64e:	ba 1d 00 00 00       	mov    $0x1d,%edx
 653:	e8 fc ff ff ff       	call   654 <evdev_disconnect+0x63>
 658:	8b 9b 10 04 00 00    	mov    0x410(%ebx),%ebx
 65e:	81 eb 10 04 00 00    	sub    $0x410,%ebx
 664:	8b 83 10 04 00 00    	mov    0x410(%ebx),%eax
 66a:	8d 74 26 00          	lea    0x0(%esi),%esi
 66e:	8d 93 10 04 00 00    	lea    0x410(%ebx),%edx
 674:	8d 46 54             	lea    0x54(%esi),%eax
 677:	39 c2                	cmp    %eax,%edx
 679:	75 c8                	jne    643 <evdev_disconnect+0x52>
 67b:	8d 46 40             	lea    0x40(%esi),%eax
 67e:	b9 01 00 00 00       	mov    $0x1,%ecx
 683:	ba 01 00 00 00       	mov    $0x1,%edx
 688:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
 68f:	e8 fc ff ff ff       	call   690 <evdev_disconnect+0x9f>
 694:	5b                   	pop    %ebx
 695:	5b                   	pop    %ebx
 696:	5e                   	pop    %esi
 697:	c3                   	ret    
 698:	59                   	pop    %ecx
 699:	89 f0                	mov    %esi,%eax
 69b:	5b                   	pop    %ebx
 69c:	5e                   	pop    %esi
 69d:	e9 c6 f9 ff ff       	jmp    68 <evdev_free>

000006a2 <evdev_connect>:
 6a2:	55                   	push   %ebp
 6a3:	89 c5                	mov    %eax,%ebp
 6a5:	57                   	push   %edi
 6a6:	56                   	push   %esi
 6a7:	53                   	push   %ebx
 6a8:	83 ec 1c             	sub    $0x1c,%esp
 6ab:	89 54 24 14          	mov    %edx,0x14(%esp)
 6af:	c7 44 24 18 00 00 00 	movl   $0x0,0x18(%esp)
 6b6:	00 
 6b7:	eb 0b                	jmp    6c4 <evdev_connect+0x22>
 6b9:	ff 44 24 18          	incl   0x18(%esp)
 6bd:	83 7c 24 18 20       	cmpl   $0x20,0x18(%esp)
 6c2:	74 10                	je     6d4 <evdev_connect+0x32>
 6c4:	8b 44 24 18          	mov    0x18(%esp),%eax
 6c8:	83 3c 85 00 00 00 00 	cmpl   $0x0,0x0(,%eax,4)
 6cf:	00 
 6d0:	75 e7                	jne    6b9 <evdev_connect+0x17>
 6d2:	eb 16                	jmp    6ea <evdev_connect+0x48>
 6d4:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
 6db:	be e9 ff ff ff       	mov    $0xffffffe9,%esi
 6e0:	e8 fc ff ff ff       	call   6e1 <evdev_connect+0x3f>
 6e5:	e9 00 01 00 00       	jmp    7ea <evdev_connect+0x148>
 6ea:	a1 1c 00 00 00       	mov    0x1c,%eax
 6ef:	ba d0 00 00 00       	mov    $0xd0,%edx
 6f4:	be f4 ff ff ff       	mov    $0xfffffff4,%esi
 6f9:	e8 fc ff ff ff       	call   6fa <evdev_connect+0x58>
 6fe:	85 c0                	test   %eax,%eax
 700:	89 c3                	mov    %eax,%ebx
 702:	0f 84 e2 00 00 00    	je     7ea <evdev_connect+0x148>
 708:	8d 40 54             	lea    0x54(%eax),%eax
 70b:	89 43 54             	mov    %eax,0x54(%ebx)
 70e:	8d 7b 0c             	lea    0xc(%ebx),%edi
 711:	89 40 04             	mov    %eax,0x4(%eax)
 714:	8d 43 40             	lea    0x40(%ebx),%eax
 717:	e8 fc ff ff ff       	call   718 <evdev_connect+0x76>
 71c:	c7 03 01 00 00 00    	movl   $0x1,(%ebx)
 722:	8b 54 24 18          	mov    0x18(%esp),%edx
 726:	89 53 08             	mov    %edx,0x8(%ebx)
 729:	8b 44 24 14          	mov    0x14(%esp),%eax
 72d:	89 6b 2c             	mov    %ebp,0x2c(%ebx)
 730:	89 7b 24             	mov    %edi,0x24(%ebx)
 733:	89 5b 1c             	mov    %ebx,0x1c(%ebx)
 736:	89 43 28             	mov    %eax,0x28(%ebx)
 739:	89 54 24 08          	mov    %edx,0x8(%esp)
 73d:	c7 44 24 04 26 00 00 	movl   $0x26,0x4(%esp)
 744:	00 
 745:	89 3c 24             	mov    %edi,(%esp)
 748:	e8 fc ff ff ff       	call   749 <evdev_connect+0xa7>
 74d:	8b 54 24 18          	mov    0x18(%esp),%edx
 751:	89 7c 24 10          	mov    %edi,0x10(%esp)
 755:	89 1c 95 00 00 00 00 	mov    %ebx,0x0(,%edx,4)
 75c:	89 d5                	mov    %edx,%ebp
 75e:	8b 54 24 14          	mov    0x14(%esp),%edx
 762:	83 c5 40             	add    $0x40,%ebp
 765:	81 cd 00 00 d0 00    	or     $0xd00000,%ebp
 76b:	8b 82 b0 06 00 00    	mov    0x6b0(%edx),%eax
 771:	89 6c 24 08          	mov    %ebp,0x8(%esp)
 775:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
 77c:	89 44 24 0c          	mov    %eax,0xc(%esp)
 780:	89 d0                	mov    %edx,%eax
 782:	05 44 06 00 00       	add    $0x644,%eax
 787:	89 44 24 04          	mov    %eax,0x4(%esp)
 78b:	e8 fc ff ff ff       	call   78c <evdev_connect+0xea>
 790:	3d 00 f0 ff ff       	cmp    $0xfffff000,%eax
 795:	89 c6                	mov    %eax,%esi
 797:	77 3b                	ja     7d4 <evdev_connect+0x132>
 799:	8d 50 08             	lea    0x8(%eax),%edx
 79c:	89 f9                	mov    %edi,%ecx
 79e:	b8 1c 00 00 00       	mov    $0x1c,%eax
 7a3:	e8 fc ff ff ff       	call   7a4 <evdev_connect+0x102>
 7a8:	85 c0                	test   %eax,%eax
 7aa:	89 c6                	mov    %eax,%esi
 7ac:	75 1a                	jne    7c8 <evdev_connect+0x126>
 7ae:	8d 43 1c             	lea    0x1c(%ebx),%eax
 7b1:	e8 fc ff ff ff       	call   7b2 <evdev_connect+0x110>
 7b6:	85 c0                	test   %eax,%eax
 7b8:	89 c6                	mov    %eax,%esi
 7ba:	74 2e                	je     7ea <evdev_connect+0x148>
 7bc:	89 fa                	mov    %edi,%edx
 7be:	b8 1c 00 00 00       	mov    $0x1c,%eax
 7c3:	e8 fc ff ff ff       	call   7c4 <evdev_connect+0x122>
 7c8:	89 ea                	mov    %ebp,%edx
 7ca:	b8 00 00 00 00       	mov    $0x0,%eax
 7cf:	e8 fc ff ff ff       	call   7d0 <evdev_connect+0x12e>
 7d4:	89 d8                	mov    %ebx,%eax
 7d6:	e8 fc ff ff ff       	call   7d7 <evdev_connect+0x135>
 7db:	8b 44 24 18          	mov    0x18(%esp),%eax
 7df:	c7 04 85 00 00 00 00 	movl   $0x0,0x0(,%eax,4)
 7e6:	00 00 00 00 
 7ea:	83 c4 1c             	add    $0x1c,%esp
 7ed:	89 f0                	mov    %esi,%eax
 7ef:	5b                   	pop    %ebx
 7f0:	5e                   	pop    %esi
 7f1:	5f                   	pop    %edi
 7f2:	5d                   	pop    %ebp
 7f3:	c3                   	ret    

000007f4 <evdev_event>:
 7f4:	55                   	push   %ebp
 7f5:	89 cd                	mov    %ecx,%ebp
 7f7:	57                   	push   %edi
 7f8:	89 d7                	mov    %edx,%edi
 7fa:	56                   	push   %esi
 7fb:	53                   	push   %ebx
 7fc:	83 ec 04             	sub    $0x4,%esp
 7ff:	8b 54 24 18          	mov    0x18(%esp),%edx
 803:	89 14 24             	mov    %edx,(%esp)
 806:	8b 30                	mov    (%eax),%esi
 808:	8b 5e 50             	mov    0x50(%esi),%ebx
 80b:	85 db                	test   %ebx,%ebx
 80d:	74 67                	je     876 <evdev_event+0x82>
 80f:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 815:	c1 e0 04             	shl    $0x4,%eax
 818:	8d 04 03             	lea    (%ebx,%eax,1),%eax
 81b:	e8 fc ff ff ff       	call   81c <evdev_event+0x28>
 820:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 826:	b9 01 00 02 00       	mov    $0x20001,%ecx
 82b:	c1 e0 04             	shl    $0x4,%eax
 82e:	66 89 7c 18 08       	mov    %di,0x8(%eax,%ebx,1)
 833:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 839:	c1 e0 04             	shl    $0x4,%eax
 83c:	66 89 6c 18 0a       	mov    %bp,0xa(%eax,%ebx,1)
 841:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 847:	8b 14 24             	mov    (%esp),%edx
 84a:	c1 e0 04             	shl    $0x4,%eax
 84d:	89 54 18 0c          	mov    %edx,0xc(%eax,%ebx,1)
 851:	ba 1d 00 00 00       	mov    $0x1d,%edx
 856:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 85c:	40                   	inc    %eax
 85d:	83 e0 3f             	and    $0x3f,%eax
 860:	89 83 00 04 00 00    	mov    %eax,0x400(%ebx)
 866:	8d 83 08 04 00 00    	lea    0x408(%ebx),%eax
 86c:	e8 fc ff ff ff       	call   86d <evdev_event+0x79>
 871:	e9 8e 00 00 00       	jmp    904 <evdev_event+0x110>
 876:	8b 5e 54             	mov    0x54(%esi),%ebx
 879:	eb 68                	jmp    8e3 <evdev_event+0xef>
 87b:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 881:	c1 e0 04             	shl    $0x4,%eax
 884:	8d 04 03             	lea    (%ebx,%eax,1),%eax
 887:	e8 fc ff ff ff       	call   888 <evdev_event+0x94>
 88c:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 892:	b9 01 00 02 00       	mov    $0x20001,%ecx
 897:	c1 e0 04             	shl    $0x4,%eax
 89a:	66 89 7c 18 08       	mov    %di,0x8(%eax,%ebx,1)
 89f:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 8a5:	c1 e0 04             	shl    $0x4,%eax
 8a8:	66 89 6c 18 0a       	mov    %bp,0xa(%eax,%ebx,1)
 8ad:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 8b3:	8b 14 24             	mov    (%esp),%edx
 8b6:	c1 e0 04             	shl    $0x4,%eax
 8b9:	89 54 18 0c          	mov    %edx,0xc(%eax,%ebx,1)
 8bd:	ba 1d 00 00 00       	mov    $0x1d,%edx
 8c2:	8b 83 00 04 00 00    	mov    0x400(%ebx),%eax
 8c8:	40                   	inc    %eax
 8c9:	83 e0 3f             	and    $0x3f,%eax
 8cc:	89 83 00 04 00 00    	mov    %eax,0x400(%ebx)
 8d2:	8d 83 08 04 00 00    	lea    0x408(%ebx),%eax
 8d8:	e8 fc ff ff ff       	call   8d9 <evdev_event+0xe5>
 8dd:	8b 9b 10 04 00 00    	mov    0x410(%ebx),%ebx
 8e3:	81 eb 10 04 00 00    	sub    $0x410,%ebx
 8e9:	8b 83 10 04 00 00    	mov    0x410(%ebx),%eax
 8ef:	8d 74 26 00          	lea    0x0(%esi),%esi
 8f3:	8d 93 10 04 00 00    	lea    0x410(%ebx),%edx
 8f9:	8d 46 54             	lea    0x54(%esi),%eax
 8fc:	39 c2                	cmp    %eax,%edx
 8fe:	0f 85 77 ff ff ff    	jne    87b <evdev_event+0x87>
 904:	8d 46 40             	lea    0x40(%esi),%eax
 907:	b9 01 00 00 00       	mov    $0x1,%ecx
 90c:	c7 44 24 18 00 00 00 	movl   $0x0,0x18(%esp)
 913:	00 
 914:	ba 01 00 00 00       	mov    $0x1,%edx
 919:	5e                   	pop    %esi
 91a:	5b                   	pop    %ebx
 91b:	5e                   	pop    %esi
 91c:	5f                   	pop    %edi
 91d:	5d                   	pop    %ebp
 91e:	e9 fc ff ff ff       	jmp    91f <evdev_event+0x12b>

00000923 <evdev_release>:
 923:	57                   	push   %edi
 924:	89 d7                	mov    %edx,%edi
 926:	56                   	push   %esi
 927:	53                   	push   %ebx
 928:	8b b2 80 00 00 00    	mov    0x80(%edx),%esi
 92e:	8b 9e 0c 04 00 00    	mov    0x40c(%esi),%ebx
 934:	39 73 50             	cmp    %esi,0x50(%ebx)
 937:	75 0f                	jne    948 <evdev_release+0x25>
 939:	8d 43 1c             	lea    0x1c(%ebx),%eax
 93c:	e8 fc ff ff ff       	call   93d <evdev_release+0x1a>
 941:	c7 43 50 00 00 00 00 	movl   $0x0,0x50(%ebx)
 948:	31 c9                	xor    %ecx,%ecx
 94a:	89 fa                	mov    %edi,%edx
 94c:	83 c8 ff             	or     $0xffffffff,%eax
 94f:	e8 f0 f6 ff ff       	call   44 <evdev_fasync>
 954:	8d 8e 10 04 00 00    	lea    0x410(%esi),%ecx
 95a:	8b 96 10 04 00 00    	mov    0x410(%esi),%edx
 960:	8b 41 04             	mov    0x4(%ecx),%eax
 963:	89 42 04             	mov    %eax,0x4(%edx)
 966:	89 10                	mov    %edx,(%eax)
 968:	89 f0                	mov    %esi,%eax
 96a:	c7 86 10 04 00 00 00 	movl   $0x100100,0x410(%esi)
 971:	01 10 00 
 974:	c7 41 04 00 02 20 00 	movl   $0x200200,0x4(%ecx)
 97b:	e8 fc ff ff ff       	call   97c <evdev_release+0x59>
 980:	8b 43 04             	mov    0x4(%ebx),%eax
 983:	48                   	dec    %eax
 984:	85 c0                	test   %eax,%eax
 986:	89 43 04             	mov    %eax,0x4(%ebx)
 989:	75 16                	jne    9a1 <evdev_release+0x7e>
 98b:	83 3b 00             	cmpl   $0x0,(%ebx)
 98e:	74 0a                	je     99a <evdev_release+0x77>
 990:	8d 43 1c             	lea    0x1c(%ebx),%eax
 993:	e8 fc ff ff ff       	call   994 <evdev_release+0x71>
 998:	eb 07                	jmp    9a1 <evdev_release+0x7e>
 99a:	89 d8                	mov    %ebx,%eax
 99c:	e8 c7 f6 ff ff       	call   68 <evdev_free>
 9a1:	5b                   	pop    %ebx
 9a2:	31 c0                	xor    %eax,%eax
 9a4:	5e                   	pop    %esi
 9a5:	5f                   	pop    %edi
 9a6:	c3                   	ret    

000009a7 <evdev_write>:
 9a7:	55                   	push   %ebp
 9a8:	89 cd                	mov    %ecx,%ebp
 9aa:	57                   	push   %edi
 9ab:	56                   	push   %esi
 9ac:	be ed ff ff ff       	mov    $0xffffffed,%esi
 9b1:	53                   	push   %ebx
 9b2:	83 ec 18             	sub    $0x18,%esp
 9b5:	89 54 24 04          	mov    %edx,0x4(%esp)
 9b9:	8b 80 80 00 00 00    	mov    0x80(%eax),%eax
 9bf:	8b b8 0c 04 00 00    	mov    0x40c(%eax),%edi
 9c5:	83 3f 00             	cmpl   $0x0,(%edi)
 9c8:	74 47                	je     a11 <evdev_write+0x6a>
 9ca:	eb 1f                	jmp    9eb <evdev_write+0x44>
 9cc:	8b 54 24 04          	mov    0x4(%esp),%edx
 9d0:	8d 44 24 08          	lea    0x8(%esp),%eax
 9d4:	b9 10 00 00 00       	mov    $0x10,%ecx
 9d9:	01 f2                	add    %esi,%edx
 9db:	e8 fc ff ff ff       	call   9dc <evdev_write+0x35>
 9e0:	85 c0                	test   %eax,%eax
 9e2:	74 0f                	je     9f3 <evdev_write+0x4c>
 9e4:	be f2 ff ff ff       	mov    $0xfffffff2,%esi
 9e9:	eb 26                	jmp    a11 <evdev_write+0x6a>
 9eb:	31 f6                	xor    %esi,%esi
 9ed:	39 ee                	cmp    %ebp,%esi
 9ef:	72 db                	jb     9cc <evdev_write+0x25>
 9f1:	eb 1e                	jmp    a11 <evdev_write+0x6a>
 9f3:	8b 5c 24 14          	mov    0x14(%esp),%ebx
 9f7:	8d 47 1c             	lea    0x1c(%edi),%eax
 9fa:	83 c6 10             	add    $0x10,%esi
 9fd:	0f b7 4c 24 12       	movzwl 0x12(%esp),%ecx
 a02:	0f b7 54 24 10       	movzwl 0x10(%esp),%edx
 a07:	89 1c 24             	mov    %ebx,(%esp)
 a0a:	e8 fc ff ff ff       	call   a0b <evdev_write+0x64>
 a0f:	eb dc                	jmp    9ed <evdev_write+0x46>
 a11:	83 c4 18             	add    $0x18,%esp
 a14:	89 f0                	mov    %esi,%eax
 a16:	5b                   	pop    %ebx
 a17:	5e                   	pop    %esi
 a18:	5f                   	pop    %edi
 a19:	5d                   	pop    %ebp
 a1a:	c3                   	ret    

00000a1b <evdev_read>:
 a1b:	55                   	push   %ebp
 a1c:	89 cd                	mov    %ecx,%ebp
 a1e:	57                   	push   %edi
 a1f:	89 c7                	mov    %eax,%edi
 a21:	56                   	push   %esi
 a22:	53                   	push   %ebx
 a23:	83 ec 18             	sub    $0x18,%esp
 a26:	83 f9 0f             	cmp    $0xf,%ecx
 a29:	89 14 24             	mov    %edx,(%esp)
 a2c:	8b 98 80 00 00 00    	mov    0x80(%eax),%ebx
 a32:	b8 ea ff ff ff       	mov    $0xffffffea,%eax
 a37:	8b b3 0c 04 00 00    	mov    0x40c(%ebx),%esi
 a3d:	0f 86 0e 01 00 00    	jbe    b51 <evdev_read+0x136>
 a43:	8b 83 04 04 00 00    	mov    0x404(%ebx),%eax
 a49:	39 83 00 04 00 00    	cmp    %eax,0x400(%ebx)
 a4f:	75 14                	jne    a65 <evdev_read+0x4a>
 a51:	83 3e 00             	cmpl   $0x0,(%esi)
 a54:	74 0f                	je     a65 <evdev_read+0x4a>
 a56:	f6 47 19 08          	testb  $0x8,0x19(%edi)
 a5a:	b8 f5 ff ff ff       	mov    $0xfffffff5,%eax
 a5f:	0f 85 ec 00 00 00    	jne    b51 <evdev_read+0x136>
 a65:	8b 83 04 04 00 00    	mov    0x404(%ebx),%eax
 a6b:	39 83 00 04 00 00    	cmp    %eax,0x400(%ebx)
 a71:	75 76                	jne    ae9 <evdev_read+0xce>
 a73:	83 3e 00             	cmpl   $0x0,(%esi)
 a76:	74 71                	je     ae9 <evdev_read+0xce>
 a78:	fc                   	cld    
 a79:	31 c0                	xor    %eax,%eax
 a7b:	8d 7c 24 04          	lea    0x4(%esp),%edi
 a7f:	ab                   	stos   %eax,%es:(%edi)
 a80:	ab                   	stos   %eax,%es:(%edi)
 a81:	ab                   	stos   %eax,%es:(%edi)
 a82:	c7 44 24 0c 00 00 00 	movl   $0x0,0xc(%esp)
 a89:	00 
 a8a:	ab                   	stos   %eax,%es:(%edi)
 a8b:	ab                   	stos   %eax,%es:(%edi)
 a8c:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
 a92:	89 44 24 08          	mov    %eax,0x8(%esp)
 a96:	8d 44 24 10          	lea    0x10(%esp),%eax
 a9a:	89 44 24 10          	mov    %eax,0x10(%esp)
 a9e:	89 44 24 14          	mov    %eax,0x14(%esp)
 aa2:	8d 46 40             	lea    0x40(%esi),%eax
 aa5:	b9 01 00 00 00       	mov    $0x1,%ecx
 aaa:	8d 54 24 04          	lea    0x4(%esp),%edx
 aae:	e8 fc ff ff ff       	call   aaf <evdev_read+0x94>
 ab3:	8b 83 04 04 00 00    	mov    0x404(%ebx),%eax
 ab9:	39 83 00 04 00 00    	cmp    %eax,0x400(%ebx)
 abf:	75 1c                	jne    add <evdev_read+0xc2>
 ac1:	83 3e 00             	cmpl   $0x0,(%esi)
 ac4:	74 17                	je     add <evdev_read+0xc2>
 ac6:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
 acc:	8b 40 04             	mov    0x4(%eax),%eax
 acf:	8b 40 08             	mov    0x8(%eax),%eax
 ad2:	a8 04                	test   $0x4,%al
 ad4:	75 6a                	jne    b40 <evdev_read+0x125>
 ad6:	e8 fc ff ff ff       	call   ad7 <evdev_read+0xbc>
 adb:	eb c5                	jmp    aa2 <evdev_read+0x87>
 add:	8d 46 40             	lea    0x40(%esi),%eax
 ae0:	8d 54 24 04          	lea    0x4(%esp),%edx
 ae4:	e8 fc ff ff ff       	call   ae5 <evdev_read+0xca>
 ae9:	83 3e 00             	cmpl   $0x0,(%esi)
 aec:	b8 ed ff ff ff       	mov    $0xffffffed,%eax
 af1:	74 5e                	je     b51 <evdev_read+0x136>
 af3:	eb 1e                	jmp    b13 <evdev_read+0xf8>
 af5:	03 04 24             	add    (%esp),%eax
 af8:	b9 10 00 00 00       	mov    $0x10,%ecx
 afd:	c1 e2 04             	shl    $0x4,%edx
 b00:	8d 14 13             	lea    (%ebx,%edx,1),%edx
 b03:	e8 fc ff ff ff       	call   b04 <evdev_read+0xe9>
 b08:	85 c0                	test   %eax,%eax
 b0a:	74 20                	je     b2c <evdev_read+0x111>
 b0c:	b8 f2 ff ff ff       	mov    $0xfffffff2,%eax
 b11:	eb 3e                	jmp    b51 <evdev_read+0x136>
 b13:	31 c0                	xor    %eax,%eax
 b15:	8b 93 04 04 00 00    	mov    0x404(%ebx),%edx
 b1b:	39 93 00 04 00 00    	cmp    %edx,0x400(%ebx)
 b21:	74 2e                	je     b51 <evdev_read+0x136>
 b23:	8d 70 10             	lea    0x10(%eax),%esi
 b26:	39 ee                	cmp    %ebp,%esi
 b28:	76 cb                	jbe    af5 <evdev_read+0xda>
 b2a:	eb 25                	jmp    b51 <evdev_read+0x136>
 b2c:	8b 83 04 04 00 00    	mov    0x404(%ebx),%eax
 b32:	40                   	inc    %eax
 b33:	83 e0 3f             	and    $0x3f,%eax
 b36:	89 83 04 04 00 00    	mov    %eax,0x404(%ebx)
 b3c:	89 f0                	mov    %esi,%eax
 b3e:	eb d5                	jmp    b15 <evdev_read+0xfa>
 b40:	8d 46 40             	lea    0x40(%esi),%eax
 b43:	8d 54 24 04          	lea    0x4(%esp),%edx
 b47:	e8 fc ff ff ff       	call   b48 <evdev_read+0x12d>
 b4c:	b8 00 fe ff ff       	mov    $0xfffffe00,%eax
 b51:	83 c4 18             	add    $0x18,%esp
 b54:	5b                   	pop    %ebx
 b55:	5e                   	pop    %esi
 b56:	5f                   	pop    %edi
 b57:	5d                   	pop    %ebp
 b58:	c3                   	ret    

00000b59 <evdev_open>:
 b59:	55                   	push   %ebp
 b5a:	57                   	push   %edi
 b5b:	56                   	push   %esi
 b5c:	53                   	push   %ebx
 b5d:	83 ec 04             	sub    $0x4,%esp
 b60:	89 14 24             	mov    %edx,(%esp)
 b63:	8b 40 34             	mov    0x34(%eax),%eax
 b66:	25 ff ff 0f 00       	and    $0xfffff,%eax
 b6b:	83 e8 40             	sub    $0x40,%eax
 b6e:	83 f8 1f             	cmp    $0x1f,%eax
 b71:	0f 8f a4 00 00 00    	jg     c1b <evdev_open+0xc2>
 b77:	8b 1c 85 00 00 00 00 	mov    0x0(,%eax,4),%ebx
 b7e:	85 db                	test   %ebx,%ebx
 b80:	0f 84 95 00 00 00    	je     c1b <evdev_open+0xc2>
 b86:	83 3b 00             	cmpl   $0x0,(%ebx)
 b89:	0f 84 8c 00 00 00    	je     c1b <evdev_open+0xc2>
 b8f:	a1 4c 00 00 00       	mov    0x4c,%eax
 b94:	ba d0 00 00 00       	mov    $0xd0,%edx
 b99:	bd f4 ff ff ff       	mov    $0xfffffff4,%ebp
 b9e:	e8 fc ff ff ff       	call   b9f <evdev_open+0x46>
 ba3:	85 c0                	test   %eax,%eax
 ba5:	89 c6                	mov    %eax,%esi
 ba7:	74 77                	je     c20 <evdev_open+0xc7>
 ba9:	89 98 0c 04 00 00    	mov    %ebx,0x40c(%eax)
 baf:	8d b8 10 04 00 00    	lea    0x410(%eax),%edi
 bb5:	8d 43 54             	lea    0x54(%ebx),%eax
 bb8:	8b 50 04             	mov    0x4(%eax),%edx
 bbb:	89 86 10 04 00 00    	mov    %eax,0x410(%esi)
 bc1:	89 78 04             	mov    %edi,0x4(%eax)
 bc4:	89 3a                	mov    %edi,(%edx)
 bc6:	89 57 04             	mov    %edx,0x4(%edi)
 bc9:	8b 43 04             	mov    0x4(%ebx),%eax
 bcc:	40                   	inc    %eax
 bcd:	89 43 04             	mov    %eax,0x4(%ebx)
 bd0:	48                   	dec    %eax
 bd1:	75 3b                	jne    c0e <evdev_open+0xb5>
 bd3:	83 3b 00             	cmpl   $0x0,(%ebx)
 bd6:	74 36                	je     c0e <evdev_open+0xb5>
 bd8:	8d 43 1c             	lea    0x1c(%ebx),%eax
 bdb:	e8 fc ff ff ff       	call   bdc <evdev_open+0x83>
 be0:	85 c0                	test   %eax,%eax
 be2:	89 c5                	mov    %eax,%ebp
 be4:	74 28                	je     c0e <evdev_open+0xb5>
 be6:	8b 47 04             	mov    0x4(%edi),%eax
 be9:	8b 96 10 04 00 00    	mov    0x410(%esi),%edx
 bef:	89 42 04             	mov    %eax,0x4(%edx)
 bf2:	89 10                	mov    %edx,(%eax)
 bf4:	89 f0                	mov    %esi,%eax
 bf6:	c7 86 10 04 00 00 00 	movl   $0x100100,0x410(%esi)
 bfd:	01 10 00 
 c00:	c7 47 04 00 02 20 00 	movl   $0x200200,0x4(%edi)
 c07:	e8 fc ff ff ff       	call   c08 <evdev_open+0xaf>
 c0c:	eb 12                	jmp    c20 <evdev_open+0xc7>
 c0e:	8b 04 24             	mov    (%esp),%eax
 c11:	31 ed                	xor    %ebp,%ebp
 c13:	89 b0 80 00 00 00    	mov    %esi,0x80(%eax)
 c19:	eb 05                	jmp    c20 <evdev_open+0xc7>
 c1b:	bd ed ff ff ff       	mov    $0xffffffed,%ebp
 c20:	5f                   	pop    %edi
 c21:	89 e8                	mov    %ebp,%eax
 c23:	5b                   	pop    %ebx
 c24:	5e                   	pop    %esi
 c25:	5f                   	pop    %edi
 c26:	5d                   	pop    %ebp
 c27:	c3                   	ret    
Disassembly of section .exit.text:

00000000 <cleanup_module>:
   0:	b8 00 00 00 00       	mov    $0x0,%eax
   5:	e9 fc ff ff ff       	jmp    6 <cleanup_module+0x6>
Disassembly of section .altinstr_replacement:

00000000 <.altinstr_replacement>:
   0:	0f 18 00             	prefetchnta (%eax)
   3:	0f 18 00             	prefetchnta (%eax)
Disassembly of section .init.text:

00000000 <init_module>:
   0:	b8 00 00 00 00       	mov    $0x0,%eax
   5:	e9 fc ff ff ff       	jmp    6 <init_module+0x6>
Disassembly of section .rodata:

00000000 <__mod_input_device_table-0x60>:
   0:	dc 03                	faddl  (%ebx)
   2:	00 00                	add    %al,(%eax)
   4:	e6 03                	out    %al,$0x3
   6:	00 00                	add    %al,(%eax)
   8:	f0 03 00             	lock add (%eax),%eax
   b:	00 f5                	add    %dh,%ch
   d:	03 00                	add    (%eax),%eax
   f:	00 ff                	add    %bh,%bh
  11:	03 00                	add    (%eax),%eax
  13:	00 1d 04 00 00 e4    	add    %bl,0xe4000004
  19:	05 00 00 e4 05       	add    $0x5e40000,%eax
  1e:	00 00                	add    %al,(%eax)
  20:	e4 05                	in     $0x5,%al
  22:	00 00                	add    %al,(%eax)
  24:	e4 05                	in     $0x5,%al
  26:	00 00                	add    %al,(%eax)
  28:	e4 05                	in     $0x5,%al
  2a:	00 00                	add    %al,(%eax)
  2c:	e4 05                	in     $0x5,%al
  2e:	00 00                	add    %al,(%eax)
  30:	e4 05                	in     $0x5,%al
  32:	00 00                	add    %al,(%eax)
  34:	e4 05                	in     $0x5,%al
  36:	00 00                	add    %al,(%eax)
  38:	e4 05                	in     $0x5,%al
  3a:	00 00                	add    %al,(%eax)
  3c:	e4 05                	in     $0x5,%al
  3e:	00 00                	add    %al,(%eax)
  40:	e4 05                	in     $0x5,%al
  42:	00 00                	add    %al,(%eax)
  44:	04 04                	add    $0x4,%al
  46:	00 00                	add    %al,(%eax)
  48:	09 04 00             	or     %eax,(%eax,%eax,1)
  4b:	00 e4                	add    %ah,%ah
  4d:	05 00 00 e4 05       	add    $0x5e40000,%eax
  52:	00 00                	add    %al,(%eax)
  54:	13 04 00             	adc    (%eax,%eax,1),%eax
	...

00000060 <__mod_input_device_table>:
	...
  dc:	01 00                	add    %eax,(%eax)
	...

00000160 <evdev_fops>:
	...
 168:	1b 0a                	sbb    (%edx),%ecx
 16a:	00 00                	add    %al,(%eax)
 16c:	a7                   	cmpsl  %es:(%edi),%ds:(%esi)
 16d:	09 00                	or     %eax,(%eax)
	...
 183:	00 06                	add    %al,(%esi)
 185:	01 00                	add    %eax,(%eax)
	...
 18f:	00 59 0b             	add    %bl,0xb(%ecx)
 192:	00 00                	add    %al,(%eax)
 194:	7b 00                	jnp    196 <evdev_fops+0x36>
 196:	00 00                	add    %al,(%eax)
 198:	23 09                	and    (%ecx),%ecx
	...
 1a2:	00 00                	add    %al,(%eax)
 1a4:	44                   	inc    %esp
	...
Disassembly of section .altinstructions:

00000000 <.altinstructions>:
   0:	6a 06                	push   $0x6
   2:	00 00                	add    %al,(%eax)
   4:	00 00                	add    %al,(%eax)
   6:	00 00                	add    %al,(%eax)
   8:	19 04 03             	sbb    %eax,(%ebx,%eax,1)
   b:	00 ef                	add    %ch,%bh
   d:	08 00                	or     %al,(%eax)
   f:	00 03                	add    %al,(%ebx)
  11:	00 00                	add    %al,(%eax)
  13:	00 19                	add    %bl,(%ecx)
  15:	04 03                	add    $0x3,%al
Disassembly of section .rodata.str1.1:

00000000 <.rodata.str1.1>:
   0:	3c 33                	cmp    $0x33,%al
   2:	3e                   	ds
   3:	65                   	gs
   4:	76 64                	jbe    6a <evdev_free+0x2>
   6:	65                   	gs
   7:	76 3a                	jbe    43 <__mod_description740+0x3>
   9:	20 6e 6f             	and    %ch,0x6f(%esi)
   c:	20 6d 6f             	and    %ch,0x6f(%ebp)
   f:	72 65                	jb     76 <__mod_license741+0xa>
  11:	20 66 72             	and    %ah,0x72(%esi)
  14:	65 65 20 65 76       	and    %ah,%gs:0x76(%ebp)
  19:	64                   	fs
  1a:	65                   	gs
  1b:	76 20                	jbe    3d <evdev_poll+0x3d>
  1d:	64                   	fs
  1e:	65                   	gs
  1f:	76 69                	jbe    8a <__mod_vermagic5+0xa>
  21:	63 65 73             	arpl   %sp,0x73(%ebp)
  24:	0a 00                	or     (%eax),%al
  26:	65                   	gs
  27:	76 65                	jbe    8e <__mod_vermagic5+0xe>
  29:	6e                   	outsb  %ds:(%esi),(%dx)
  2a:	74 25                	je     51 <evdev_fasync+0xd>
  2c:	64 00 65 76          	add    %ah,%fs:0x76(%ebp)
  30:	64                   	fs
  31:	65                   	gs
  32:	76 00                	jbe    34 <evdev_poll+0x34>
Disassembly of section .modinfo:

00000000 <__mod_author739>:
   0:	61                   	popa   
   1:	75 74                	jne    77 <__mod_license741+0xb>
   3:	68 6f 72 3d 56       	push   $0x563d726f
   8:	6f                   	outsl  %ds:(%esi),(%dx)
   9:	6a 74                	push   $0x74
   b:	65 63 68 20          	arpl   %bp,%gs:0x20(%eax)
   f:	50                   	push   %eax
  10:	61                   	popa   
  11:	76 6c                	jbe    7f <__mod_license741+0x13>
  13:	69 6b 20 3c 76 6f 6a 	imul   $0x6a6f763c,0x20(%ebx),%ebp
  1a:	74 65                	je     81 <__mod_vermagic5+0x1>
  1c:	63 68 40             	arpl   %bp,0x40(%eax)
  1f:	75 63                	jne    84 <__mod_vermagic5+0x4>
  21:	77 2e                	ja     51 <__mod_description740+0x11>
  23:	63 7a 3e             	arpl   %di,0x3e(%edx)
	...

00000040 <__mod_description740>:
  40:	64                   	fs
  41:	65                   	gs
  42:	73 63                	jae    a7 <__mod_vermagic5+0x27>
  44:	72 69                	jb     af <__mod_vermagic5+0x2f>
  46:	70 74                	jo     bc <__module_depends+0x4>
  48:	69 6f 6e 3d 49 6e 70 	imul   $0x706e493d,0x6e(%edi),%ebp
  4f:	75 74                	jne    c5 <__module_depends+0xd>
  51:	20 64 72 69          	and    %ah,0x69(%edx,%esi,2)
  55:	76 65                	jbe    bc <__module_depends+0x4>
  57:	72 20                	jb     79 <__mod_license741+0xd>
  59:	65                   	gs
  5a:	76 65                	jbe    c1 <__module_depends+0x9>
  5c:	6e                   	outsb  %ds:(%esi),(%dx)
  5d:	74 20                	je     7f <__mod_license741+0x13>
  5f:	63 68 61             	arpl   %bp,0x61(%eax)
  62:	72 20                	jb     84 <__mod_vermagic5+0x4>
  64:	64                   	fs
  65:	65                   	gs
  66:	76 69                	jbe    d1 <__module_depends+0x19>
  68:	63 65 73             	arpl   %sp,0x73(%ebp)
	...

0000006c <__mod_license741>:
  6c:	6c                   	insb   (%dx),%es:(%edi)
  6d:	69 63 65 6e 73 65 3d 	imul   $0x3d65736e,0x65(%ebx),%esp
  74:	47                   	inc    %edi
  75:	50                   	push   %eax
  76:	4c                   	dec    %esp
	...

00000080 <__mod_vermagic5>:
  80:	76 65                	jbe    e7 <__mod_alias22+0x7>
  82:	72 6d                	jb     f1 <__mod_alias22+0x11>
  84:	61                   	popa   
  85:	67 69 63 3d 32 2e 36 	addr16 imul $0x2e362e32,61(%bp,%di),%esp
  8c:	2e 
  8d:	32 32                	xor    (%edx),%dh
  8f:	2d 31 2d 6d 65       	sub    $0x656d2d31,%eax
  94:	70 69                	jo     ff <__mod_alias22+0x1f>
  96:	73 2d                	jae    c5 <__module_depends+0xd>
  98:	73 6d                	jae    107 <__mod_alias22+0x27>
  9a:	70 20                	jo     bc <__module_depends+0x4>
  9c:	53                   	push   %ebx
  9d:	4d                   	dec    %ebp
  9e:	50                   	push   %eax
  9f:	20 70 72             	and    %dh,0x72(%eax)
  a2:	65                   	gs
  a3:	65                   	gs
  a4:	6d                   	insl   (%dx),%es:(%edi)
  a5:	70 74                	jo     11b <evdev_ioctl+0x15>
  a7:	20 6d 6f             	and    %ch,0x6f(%ebp)
  aa:	64                   	fs
  ab:	5f                   	pop    %edi
  ac:	75 6e                	jne    11c <evdev_ioctl+0x16>
  ae:	6c                   	insb   (%dx),%es:(%edi)
  af:	6f                   	outsl  %ds:(%esi),(%dx)
  b0:	61                   	popa   
  b1:	64 20 36             	and    %dh,%fs:(%esi)
  b4:	38 36                	cmp    %dh,(%esi)
  b6:	20 00                	and    %al,(%eax)

000000b8 <__module_depends>:
  b8:	64                   	fs
  b9:	65                   	gs
  ba:	70 65                	jo     121 <evdev_ioctl+0x1b>
  bc:	6e                   	outsb  %ds:(%esi),(%dx)
  bd:	64                   	fs
  be:	73 3d                	jae    fd <__mod_alias22+0x1d>
	...

000000e0 <__mod_alias22>:
  e0:	61                   	popa   
  e1:	6c                   	insb   (%dx),%es:(%edi)
  e2:	69 61 73 3d 69 6e 70 	imul   $0x706e693d,0x73(%ecx),%esp
  e9:	75 74                	jne    15f <evdev_ioctl+0x59>
  eb:	3a 62 2a             	cmp    0x2a(%edx),%ah
  ee:	76 2a                	jbe    11a <evdev_ioctl+0x14>
  f0:	70 2a                	jo     11c <evdev_ioctl+0x16>
  f2:	65 2a 2d 65 2a 6b 2a 	sub    %gs:0x2a6b2a65,%ch
  f9:	72 2a                	jb     125 <evdev_ioctl+0x1f>
  fb:	61                   	popa   
  fc:	2a 6d 2a             	sub    0x2a(%ebp),%ch
  ff:	6c                   	insb   (%dx),%es:(%edi)
 100:	2a 73 2a             	sub    0x2a(%ebx),%dh
 103:	66                   	data16
 104:	2a 77 2a             	sub    0x2a(%edi),%dh
	...
Disassembly of section .data:

00000000 <evdev_handler>:
   0:	00 00                	add    %al,(%eax)
   2:	00 00                	add    %al,(%eax)
   4:	f4                   	hlt    
   5:	07                   	pop    %es
   6:	00 00                	add    %al,(%eax)
   8:	a2 06 00 00 f1       	mov    %al,0xf1000006
   d:	05 00 00 00 00       	add    $0x0,%eax
  12:	00 00                	add    %al,(%eax)
  14:	60                   	pusha  
  15:	01 00                	add    %eax,(%eax)
  17:	00 40 00             	add    %al,0x0(%eax)
  1a:	00 00                	add    %al,(%eax)
  1c:	2e 00 00             	add    %al,%cs:(%eax)
  1f:	00 60 00             	add    %ah,0x0(%eax)
	...
Disassembly of section .gnu.linkonce.this_module:

00000000 <__this_module>:
	...
   c:	65                   	gs
   d:	76 64                	jbe    73 <__this_module+0x73>
   f:	65                   	gs
  10:	76 00                	jbe    12 <__this_module+0x12>
	...
Disassembly of section .bss:

00000000 <evdev_table>:
	...
Disassembly of section .comment:

00000000 <.comment>:
   0:	00 47 43             	add    %al,0x43(%edi)
   3:	43                   	inc    %ebx
   4:	3a 20                	cmp    (%eax),%ah
   6:	28 47 4e             	sub    %al,0x4e(%edi)
   9:	55                   	push   %ebp
   a:	29 20                	sub    %esp,(%eax)
   c:	34 2e                	xor    $0x2e,%al
   e:	31 2e                	xor    %ebp,(%esi)
  10:	32 20                	xor    (%eax),%ah
  12:	32 30                	xor    (%eax),%dh
  14:	30 36                	xor    %dh,(%esi)
  16:	31 31                	xor    %esi,(%ecx)
  18:	31 35 20 28 70 72    	xor    %esi,0x72702820
  1e:	65                   	gs
  1f:	72 65                	jb     86 <__mod_vermagic5+0x6>
  21:	6c                   	insb   (%dx),%es:(%edi)
  22:	65                   	gs
  23:	61                   	popa   
  24:	73 65                	jae    8b <__mod_vermagic5+0xb>
  26:	29 20                	sub    %esp,(%eax)
  28:	28 44 65 62          	sub    %al,0x62(%ebp)
  2c:	69 61 6e 20 34 2e 31 	imul   $0x312e3420,0x6e(%ecx),%esp
  33:	2e 31 2d 32 31 29 00 	xor    %ebp,%cs:0x293132
  3a:	00 47 43             	add    %al,0x43(%edi)
  3d:	43                   	inc    %ebx
  3e:	3a 20                	cmp    (%eax),%ah
  40:	28 47 4e             	sub    %al,0x4e(%edi)
  43:	55                   	push   %ebp
  44:	29 20                	sub    %esp,(%eax)
  46:	34 2e                	xor    $0x2e,%al
  48:	31 2e                	xor    %ebp,(%esi)
  4a:	32 20                	xor    (%eax),%ah
  4c:	32 30                	xor    (%eax),%dh
  4e:	30 36                	xor    %dh,(%esi)
  50:	31 31                	xor    %esi,(%ecx)
  52:	31 35 20 28 70 72    	xor    %esi,0x72702820
  58:	65                   	gs
  59:	72 65                	jb     c0 <__module_depends+0x8>
  5b:	6c                   	insb   (%dx),%es:(%edi)
  5c:	65                   	gs
  5d:	61                   	popa   
  5e:	73 65                	jae    c5 <__module_depends+0xd>
  60:	29 20                	sub    %esp,(%eax)
  62:	28 44 65 62          	sub    %al,0x62(%ebp)
  66:	69 61 6e 20 34 2e 31 	imul   $0x312e3420,0x6e(%ecx),%esp
  6d:	2e 31 2d 32 31 29 00 	xor    %ebp,%cs:0x293132
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ