-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 And now this. The computer doesn't hang all the time, but it does register the device incorrectly:
When I put the drive back it, sometimes I get the right message (the first message), but after a while I almost certainly get the second (wrong) Instead of: input: Maxtor OneTouch on usb-0000:00:02.2-1 I get: input: <NULL> on usb-0000:00:02.2-1 Other times when unpluging the device I get this: This is just a warning. Your computer is OK function=0x00000000, data=0x0 [<c011add2>] check_timer_failed+0x3e/0x4a [<c011afa2>] del_timer+0x15/0x60 [<c020e361>] input_unregister_device+0x1c/0xc1 [<e0c3c6ca>] onetouch_release_input+0x1c/0x4e [usb_storage] [<e0c3be2a>] usb_stor_release_resources+0x4d/0x75 [usb_storage] [<e0c3c1d5>] storage_disconnect+0x74/0x80 [usb_storage] [<c02011b6>] usb_unbind_interface+0x36/0x65 [<c01dd070>] device_release_driver+0x50/0x5c [<c01dd25d>] bus_remove_device+0x58/0x94 [<c01dc4b6>] device_del+0x56/0x7a [<c0206a6e>] usb_disable_device+0x7a/0xec [<c0202c48>] usb_disconnect+0x93/0xec [<c02038a1>] hub_port_connect_change+0x56/0x2bf [<c0203d1f>] hub_events+0x215/0x2c1 [<c0203dcb>] hub_thread+0x0/0xe4 [<c0203de8>] hub_thread+0x1d/0xe4 [<c0123c1d>] autoremove_wake_function+0x0/0x3a [<c01029a2>] ret_from_fork+0x6/0x14 [<c0203dcb>] hub_thread+0x0/0xe4 [<c0123c1d>] autoremove_wake_function+0x0/0x3a [<c010126d>] kernel_thread_helper+0x5/0xb Unable to handle kernel NULL pointer dereference at virtual address 00000000 printing eip: c020e370 *pde = 00000000 Oops: 0000 [#1] Modules linked in: usb_storage isofs udf binfmt_misc pcmcia firmware_class video hotkey button battery container ac nvidia ipv6 yenta_socket rsrc_nonstatic pcmcia_core 8139cp 8139too mii crc32 shpchp pci_hotplug sata_nv libata usbhid snd_intel8x0 snd_ac97_codec snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd soundcore snd_page_alloc ehci_hcd ohci_hcd dm_mod eeprom i2c_sensor i2c_nforce2 i2c_core parport_pc lp parport ide_cd psmouse ext3 jbd ide_disk ide_generic via82cxxx trm290 triflex slc90e66 sis5513 siimage serverworks sc1200 rz1000 piix pdc202xx_old opti621 ns87415 hpt366 hpt34x generic cy82c693 cs5530 cs5520 cmd64x atiixp amd74xx alim15x3 aec62xx pdc202xx_new ide_core unix thermal processor fan CPU: 0 EIP: 0060:[<c020e370>] Tainted: P VLI EFLAGS: 00010213 (2.6.12-rc1-mm1.22032005) EIP is at input_unregister_device+0x2b/0xc1 eax: cd49bf08 ebx: cd49b800 ecx: c02d2fd8 edx: 00000000 esi: 00000000 edi: cd49b8c0 ebp: de09a5e4 esp: dfef3e90 ds: 007b es: 007b ss: 0068 Process khubd (pid: 129, threadinfo=dfef2000 task=df99a540) Stack: cd49b800 e0c41b00 e0c41b20 de09a5e4 e0c3c6ca cd49b8c0 c97f6340 ce3acec0 e0c3be2a cd49b800 ce3acec0 e0c3c1d5 ce3acec0 cdc36cb8 cdc36c80 c02011b6 cdc36c80 cdc36cb8 cdc36c94 c01dd070 cdc36c94 cdc36c94 c9f00c64 c9f00c00 Call Trace: [<e0c3c6ca>] onetouch_release_input+0x1c/0x4e [usb_storage] [<e0c3be2a>] usb_stor_release_resources+0x4d/0x75 [usb_storage] [<e0c3c1d5>] storage_disconnect+0x74/0x80 [usb_storage] [<c02011b6>] usb_unbind_interface+0x36/0x65 [<c01dd070>] device_release_driver+0x50/0x5c [<c01dd25d>] bus_remove_device+0x58/0x94 [<c01dc4b6>] device_del+0x56/0x7a [<c0206a6e>] usb_disable_device+0x7a/0xec [<c0202c48>] usb_disconnect+0x93/0xec [<c02038a1>] hub_port_connect_change+0x56/0x2bf [<c0203d1f>] hub_events+0x215/0x2c1 [<c0203dcb>] hub_thread+0x0/0xe4 [<c0203de8>] hub_thread+0x1d/0xe4 [<c0123c1d>] autoremove_wake_function+0x0/0x3a [<c01029a2>] ret_from_fork+0x6/0x14 [<c0203dcb>] hub_thread+0x0/0xe4 [<c0123c1d>] autoremove_wake_function+0x0/0x3a [<c010126d>] kernel_thread_helper+0x5/0xb Code: 55 57 56 53 8b 7c 24 14 85 ff 0f 84 ac 00 00 00 8d 87 98 00 00 00 50 e8 2c cc f0 ff 8b b7 48 06 00 00 58 8d 87 48 06 00 00 39 c6 <8b> 2e 74 3d 8b 56 04 8b 06 8d 5e ec 89 50 04 89 02 89 76 04 8d I'm a little lost... Any help? Nick Sillik [EMAIL PROTECTED] Nick Sillik wrote: > Well, I have a problem. This patch hangs the computer when the drive is > plugged > in then unplugged. > > Any Ideas where this is coming from? > > Nick Sillik > [EMAIL PROTECTED] > > Nick Sillik wrote: > >>>Here's the patch with those two changes, as well as the change to the min and >>>max in unusual_devs.h that Sergey suggested. I also eliminated the encoding >>>problem from the patch. >>> >>>Signed-off-by: Nick Sillik <[EMAIL PROTECTED]> >>> >>>Alan Stern wrote: >>> >>> >>>>>On Tue, 22 Mar 2005, Nick Sillik wrote: >>>>> >>>>> >>>>> >>>>> >>>>>>Well, I have attached the diff for linux-2.6.12-rc1-mm1 to this message. >>>>>>This >>>>>>patch does cleanly compile. Take a look at it, if you like it apply it. >>>>>>If not, >>>>>>I'll keep hacking. (I'll keep this bottle of champagne - which has been >>>>>>waiting >>>>>>for a while - on ice.) >>>>> >>>>> >>>>>This is looking pretty good. There are still a few small items to clean >>>>>up: >>>>> >>>>> >>>>>+int onetouch_connect_input(struct us_data *ss) >>>>>+{ >>>>>+ struct usb_device *udev = ss->pusb_dev; >>>>>+ struct usb_onetouch *onetouch; >>>>>+ char path[64]; >>>>>+ >>>>>+ if (udev->descriptor.idVendor != VENDOR_MAXTOR >>>>>+ || udev->descriptor.idProduct != PRODUCT_ONETOUCH) { >>>>>+ /* Not a onetouch device, nothing to see here */ >>>>>+ return 1; >>>>>+ } >>>>> >>>>>This check isn't needed any more. The function won't get called at all >>>>>unless the descriptors match as specified in the unusual_devs entry. >>>>> >>>>> >>>>>+void onetouch_release_input(void *onetouch_) >>>>>+{ >>>>>+ struct usb_onetouch *onetouch = (struct usb_onetouch *) onetouch_; >>>>>+ >>>>>+ US_DEBUGP("device found: %s. Releasing\n", onetouch->phys); >>>>>+ usb_unlink_urb(onetouch->irq); >>>>> >>>>>For the sake of thoroughness this call should be usb_kill_urb. >>>>> >>>>> >>>>>--- linux-2.6.12-rc1-mm1/drivers/usb/storage/onetouch.h 1969-12-31 >>>>>19:00:00.000000000 -0500 >>>>>+++ linux-2.6.12-rc1-mm1-onetouch/drivers/usb/storage/onetouch.h >>>>>2005-03-22 20:00:03.000000000 -0500 >>>>>@@ -0,0 +1,12 @@ >>>>>+#ifndef _ONETOUCH_H_ >>>>>+#define _ONETOUCH_H_ >>>>>+ >>>>>+#define ONETOUCH_PKT_LEN 0x02 >>>>>+#define ONETOUCH_BUTTON KEY_PROG1 >>>>>+#define VENDOR_MAXTOR 0x0d49 >>>>>+#define PRODUCT_ONETOUCH 0x7010 >>>>>name, 128, "Maxtor OneTouch"); > + > + set_bit(EV_KEY, onetouch->dev.evbit); > + set_bit(ONETOUCH_BUTTON, onetouch->dev.keybit); > + clear_bit(0, onetouch->dev.keybit); > + > + input_register_device(&onetouch->dev); > + > + printk(KERN_INFO "input: %s on %s\n", onetouch->dev.name, path); > + > + return 0; > +} > + > +void onetouch_release_input(void *onetouch_) > +{ > + struct usb_onetouch *onetouch = (struct usb_onetouch *) onetouch_; k k k k k Mk k ) k k k k k Pk k 0 ) h k k k k k Sk k h k k k k k 8 k k / &