On Wed, Jun 16, 2004 at 11:17:10AM +0200, Harald Welte wrote:

> Apparently interface->dev is 0x10 here, thus usb_get_drvdata() inlined by
> get_intfdata() dereferences 0x10+0x74 == 0x84

After some more debugging, it becomes obvious that
usb_serial_disconnect() is called twice.

First:
usb_serial_deregister()
        usb_serial_disconnect()
                kref_put()
                usb_set_intfdata(interface, NULL)
        [kref destrructor]
                destroy_serial()
                        serial_shutdown()
                                cyberjack_shutdown()
                        return_serial()
        [?]
        port_release()
...

then, again [from where???]:
        usb_serial_disconnect()


[see attached usb debug-enabed dmesg output.  First it shows the output
captured while rmmod of a device that hasn't been used at all
(plug-rmmod). second part: plug-use-rmmod].

> Any ideas?

-- 
- Harald Welte <[EMAIL PROTECTED]>               http://www.gnumonks.org/
============================================================================
Programming is like sex: One mistake and you have to support it your lifetime
good:

usb 1-2.3: USB disconnect, address 4
drivers/usb/serial/usb-serial.c: usb_serial_disconnect
serial=ef768258, serial->kref=ef768294, serial->kref->refcnt=1
drivers/usb/serial/usb-serial.c: destroy_serial - Reiner SCT Cyberjack USB card reader
drivers/usb/serial/usb-serial.c: serial_shutdown
drivers/usb/serial/cyberjack.c: cyberjack_shutdown
drivers/usb/serial/usb-serial.c: return_serial
cyberjack ttyUSB0: Reiner SCT Cyberjack USB card reader converter now disconnected 
from ttyUSB0
drivers/usb/serial/usb-serial.c: port_release - ttyUSB0
cyberjack 1-2.3:1.0: device disconnected


bad:
usbcore: deregistering driver cyberjack
drivers/usb/serial/usb-serial.c: USB Serial deregistering driver Reiner SCT Cyberjack 
USB card reader
drivers/usb/serial/usb-serial.c: usb_serial_disconnect
serial=ef004438, serial->kref=ef004474, serial->kref->refcnt=1
drivers/usb/serial/usb-serial.c: destroy_serial - Reiner SCT Cyberjack USB card reader
drivers/usb/serial/usb-serial.c: serial_shutdown
drivers/usb/serial/cyberjack.c: cyberjack_shutdown
drivers/usb/serial/usb-serial.c: return_serial
cyberjack ttyUSB0: Reiner SCT Cyberjack USB card reader converter now disconnected 
from ttyUSB0
drivers/usb/serial/usb-serial.c: port_release - ttyUSB0
usbserial 1-2.3:1.0: device disconnected
drivers/usb/serial/usb-serial.c: usb_serial_disconnect
Unable to handle kernel NULL pointer dereference at virtual address 00000000

=> serial_disconnect called twice.  

Attachment: signature.asc
Description: Digital signature

Reply via email to