]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
USB: iuu_phoenix: fix sysfs-attribute creation
authorJohan Hovold <jhovold@gmail.com>
Thu, 18 Oct 2012 08:52:17 +0000 (10:52 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 28 Oct 2012 17:56:12 +0000 (10:56 -0700)
commit 0978c9499944d0670338fd048a3bdb1624dc66dc upstream.

Make sure sysfs attributes are created at port probe.

A recent patch ("USB: iuu_phoenix: fix port-data memory leak") removed
the sysfs-attribute creation by mistake.

Reported-by: Yuanhan Liu <yuanhan.liu@intel.com>
Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/serial/iuu_phoenix.c

index c32f2a9afe01e5b219ff6fb8941825dccd03909e..cdf0f994e883a58eaf7f24d843237d6b41f74015 100644 (file)
@@ -60,6 +60,8 @@ static int iuu_cardout;
 static bool xmas;
 static int vcc_default = 5;
 
+static int iuu_create_sysfs_attrs(struct usb_serial_port *port);
+static int iuu_remove_sysfs_attrs(struct usb_serial_port *port);
 static void read_rxcmd_callback(struct urb *urb);
 
 struct iuu_private {
@@ -83,6 +85,7 @@ struct iuu_private {
 static int iuu_port_probe(struct usb_serial_port *port)
 {
        struct iuu_private *priv;
+       int ret;
 
        priv = kzalloc(sizeof(struct iuu_private), GFP_KERNEL);
        if (!priv)
@@ -115,6 +118,14 @@ static int iuu_port_probe(struct usb_serial_port *port)
 
        usb_set_serial_port_data(port, priv);
 
+       ret = iuu_create_sysfs_attrs(port);
+       if (ret) {
+               kfree(priv->writebuf);
+               kfree(priv->buf);
+               kfree(priv);
+               return ret;
+       }
+
        return 0;
 }
 
@@ -122,6 +133,7 @@ static int iuu_port_remove(struct usb_serial_port *port)
 {
        struct iuu_private *priv = usb_get_serial_port_data(port);
 
+       iuu_remove_sysfs_attrs(port);
        kfree(priv->dbgbuf);
        kfree(priv->writebuf);
        kfree(priv->buf);
@@ -1221,8 +1233,6 @@ static struct usb_serial_driver iuu_device = {
        .num_ports = 1,
        .bulk_in_size = 512,
        .bulk_out_size = 512,
-       .port_probe = iuu_create_sysfs_attrs,
-       .port_remove = iuu_remove_sysfs_attrs,
        .open = iuu_open,
        .close = iuu_close,
        .write = iuu_uart_write,