From: Greg Kroah-Hartman <[EMAIL PROTECTED]> Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]> --- drivers/usb/serial/ftdi_sio.c | 30 +++++++++++++++++++----------- drivers/usb/serial/usb-serial.c | 5 ++++- 2 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index c6115aa..1f7b725 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c @@ -1101,25 +1101,29 @@ static ssize_t store_event_char(struct d static DEVICE_ATTR(latency_timer, S_IWUSR | S_IRUGO, show_latency_timer, store_latency_timer); static DEVICE_ATTR(event_char, S_IWUSR, NULL, store_event_char); -static void create_sysfs_attrs(struct usb_serial *serial) -{ +static int create_sysfs_attrs(struct usb_serial *serial) +{ struct ftdi_private *priv; struct usb_device *udev; + int retval = 0; dbg("%s",__FUNCTION__); - + priv = usb_get_serial_port_data(serial->port[0]); udev = serial->dev; - + /* XXX I've no idea if the original SIO supports the event_char * sysfs parameter, so I'm playing it safe. */ if (priv->chip_type != SIO) { dbg("sysfs attributes for %s", ftdi_chip_name[priv->chip_type]); - device_create_file(&udev->dev, &dev_attr_event_char); - if (priv->chip_type == FT232BM || priv->chip_type == FT2232C) { - device_create_file(&udev->dev, &dev_attr_latency_timer); + retval = device_create_file(&udev->dev, &dev_attr_event_char); + if ((!retval) && + (priv->chip_type == FT232BM || priv->chip_type == FT2232C)) { + retval = device_create_file(&udev->dev, + &dev_attr_latency_timer); } } + return retval; } static void remove_sysfs_attrs(struct usb_serial *serial) @@ -1162,7 +1166,8 @@ static int ftdi_sio_attach (struct usb_s struct usb_serial_port *port = serial->port[0]; struct ftdi_private *priv; struct ftdi_sio_quirk *quirk; - + int retval; + dbg("%s",__FUNCTION__); priv = kzalloc(sizeof(struct ftdi_private), GFP_KERNEL); @@ -1203,15 +1208,18 @@ static int ftdi_sio_attach (struct usb_s usb_set_serial_port_data(serial->port[0], priv); ftdi_determine_type (serial->port[0]); - create_sysfs_attrs(serial); + retval = create_sysfs_attrs(serial); + if (retval) + dev_err(&serial->dev->dev, "Error creating sysfs files, " + "continuing\n"); /* Check for device requiring special set up. */ quirk = (struct ftdi_sio_quirk *)usb_get_serial_data(serial); if (quirk && quirk->setup) { quirk->setup(serial); } - - return (0); + + return 0; } /* ftdi_sio_attach */ diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c index 1f21a9d..03c6194 100644 --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c @@ -932,7 +932,10 @@ #endif snprintf (&port->dev.bus_id[0], sizeof(port->dev.bus_id), "ttyUSB%d", port->number); dbg ("%s - registering %s", __FUNCTION__, port->dev.bus_id); - device_register (&port->dev); + retval = device_register(&port->dev); + if (retval) + dev_err(&port->dev, "Error registering port device, " + "continuing\n"); } usb_serial_console_init (debug, minor); -- 1.4.2.1 ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys -- and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel