From: Roger Luethi generic_startup in visor.c was not called for some hardware, resulting in attempts to access memory that had never been allocated, which in turn caused the problem several people reported with recent (2.6.10ish) kernels. Signed-off-by: Roger Luethi Signed-off-by: Andrew Morton --- 25-akpm/drivers/usb/serial/visor.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN drivers/usb/serial/visor.c~visor-always-do-generic_startup drivers/usb/serial/visor.c --- 25/drivers/usb/serial/visor.c~visor-always-do-generic_startup 2004-11-16 23:30:34.172051688 -0800 +++ 25-akpm/drivers/usb/serial/visor.c 2004-11-16 23:30:34.176051080 -0800 @@ -930,7 +930,7 @@ static int treo_attach (struct usb_seria if (!((serial->dev->descriptor.idVendor == HANDSPRING_VENDOR_ID) || (serial->dev->descriptor.idVendor == KYOCERA_VENDOR_ID)) || (serial->num_interrupt_in == 0)) - return 0; + goto generic_startup; dbg("%s", __FUNCTION__); @@ -957,6 +957,7 @@ static int treo_attach (struct usb_seria COPY_PORT(serial->port[1], swap_port); kfree(swap_port); +generic_startup: return generic_startup(serial); } _