usb: typec: tpcm: improve error handling of tcpm_register_port
authorJun Li <jun.li@nxp.com>
Tue, 22 Jan 2019 09:00:24 +0000 (09:00 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 25 Jan 2019 09:02:50 +0000 (10:02 +0100)
Remove debugfs if tcpm register port fails.

Signed-off-by: Li Jun <jun.li@nxp.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/typec/tcpm/tcpm.c

index 4bc29b5..f1d3e54 100644 (file)
@@ -4810,12 +4810,12 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
 
        err = devm_tcpm_psy_register(port);
        if (err)
-               goto out_destroy_wq;
+               goto out_role_sw_put;
 
        port->typec_port = typec_register_port(port->dev, &port->typec_caps);
        if (IS_ERR(port->typec_port)) {
                err = PTR_ERR(port->typec_port);
-               goto out_destroy_wq;
+               goto out_role_sw_put;
        }
 
        if (tcpc->config && tcpc->config->alt_modes) {
@@ -4848,8 +4848,10 @@ struct tcpm_port *tcpm_register_port(struct device *dev, struct tcpc_dev *tcpc)
        tcpm_log(port, "%s: registered", dev_name(dev));
        return port;
 
-out_destroy_wq:
+out_role_sw_put:
        usb_role_switch_put(port->role_sw);
+out_destroy_wq:
+       tcpm_debugfs_exit(port);
        destroy_workqueue(port->wq);
        return ERR_PTR(err);
 }