aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--nfc-pn533-don-t-send-usb-data-off-of-the-stack.patch140
-rw-r--r--qlcnic_sysfs.patch12
-rw-r--r--series4
-rw-r--r--usb-debugfs-cleanup.patch1553
-rw-r--r--usb-debugfs.patch476
-rw-r--r--usb-serial-visor-handle-potential-invalid-device-configuration.patch115
6 files changed, 6 insertions, 2294 deletions
diff --git a/nfc-pn533-don-t-send-usb-data-off-of-the-stack.patch b/nfc-pn533-don-t-send-usb-data-off-of-the-stack.patch
deleted file mode 100644
index a10400977b5a9c..00000000000000
--- a/nfc-pn533-don-t-send-usb-data-off-of-the-stack.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From foo@baz Thu May 17 18:35:38 CEST 2018
-Date: Thu, 17 May 2018 18:35:38 +0200
-To: Greg KH <gregkh@linuxfoundation.org>
-From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Subject: [PATCH v3] NFC: pn533: don't send USB data off of the stack
-
-It's amazing that this driver ever worked, but now that x86 doesn't
-allow USB data to be sent off of the stack, it really does not work at
-all. Fix this up by properly allocating the data for the small
-"commands" that get sent to the device off of the stack.
-
-We do this for one command by having a whole urb just for ack messages,
-as they can be submitted in interrupt context, so we can not use
-usb_bulk_msg(). But the poweron command can sleep (and does), so use
-usb_bulk_msg() for that transfer.
-
-Reported-by: Carlos Manuel Santos <cmmpsantos@gmail.com>
-Cc: Samuel Ortiz <sameo@linux.intel.com>
-Cc: Stephen Hemminger <stephen@networkplumber.org>
-Cc: stable <stable@vger.kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/nfc/pn533/usb.c | 42 ++++++++++++++++++++++++++++++------------
- 1 file changed, 30 insertions(+), 12 deletions(-)
-
---- a/drivers/nfc/pn533/usb.c
-+++ b/drivers/nfc/pn533/usb.c
-@@ -62,6 +62,9 @@ struct pn533_usb_phy {
- struct urb *out_urb;
- struct urb *in_urb;
-
-+ struct urb *ack_urb;
-+ u8 *ack_buffer;
-+
- struct pn533 *priv;
- };
-
-@@ -150,13 +153,16 @@ static int pn533_usb_send_ack(struct pn5
- struct pn533_usb_phy *phy = dev->phy;
- static const u8 ack[6] = {0x00, 0x00, 0xff, 0x00, 0xff, 0x00};
- /* spec 7.1.1.3: Preamble, SoPC (2), ACK Code (2), Postamble */
-- int rc;
-
-- phy->out_urb->transfer_buffer = (u8 *)ack;
-- phy->out_urb->transfer_buffer_length = sizeof(ack);
-- rc = usb_submit_urb(phy->out_urb, flags);
-+ if (!phy->ack_buffer) {
-+ phy->ack_buffer = kmemdup(ack, sizeof(ack), flags);
-+ if (!phy->ack_buffer)
-+ return -ENOMEM;
-+ }
-
-- return rc;
-+ phy->ack_urb->transfer_buffer = phy->ack_buffer;
-+ phy->ack_urb->transfer_buffer_length = sizeof(ack);
-+ return usb_submit_urb(phy->ack_urb, flags);
- }
-
- static int pn533_usb_send_frame(struct pn533 *dev,
-@@ -375,26 +381,31 @@ static int pn533_acr122_poweron_rdr(stru
- /* Power on th reader (CCID cmd) */
- u8 cmd[10] = {PN533_ACR122_PC_TO_RDR_ICCPOWERON,
- 0, 0, 0, 0, 0, 0, 3, 0, 0};
-+ char *buffer;
-+ int transferred;
- int rc;
- void *cntx;
- struct pn533_acr122_poweron_rdr_arg arg;
-
- dev_dbg(&phy->udev->dev, "%s\n", __func__);
-
-+ buffer = kmemdup(cmd, sizeof(cmd), GFP_KERNEL);
-+ if (!buffer)
-+ return -ENOMEM;
-+
- init_completion(&arg.done);
- cntx = phy->in_urb->context; /* backup context */
-
- phy->in_urb->complete = pn533_acr122_poweron_rdr_resp;
- phy->in_urb->context = &arg;
-
-- phy->out_urb->transfer_buffer = cmd;
-- phy->out_urb->transfer_buffer_length = sizeof(cmd);
--
- print_hex_dump_debug("ACR122 TX: ", DUMP_PREFIX_NONE, 16, 1,
- cmd, sizeof(cmd), false);
-
-- rc = usb_submit_urb(phy->out_urb, GFP_KERNEL);
-- if (rc) {
-+ rc = usb_bulk_msg(phy->udev, phy->out_urb->pipe, buffer, sizeof(cmd),
-+ &transferred, 0);
-+ kfree(buffer);
-+ if (rc || (transferred != sizeof(cmd))) {
- nfc_err(&phy->udev->dev,
- "Reader power on cmd error %d\n", rc);
- return rc;
-@@ -490,8 +501,9 @@ static int pn533_usb_probe(struct usb_in
-
- phy->in_urb = usb_alloc_urb(0, GFP_KERNEL);
- phy->out_urb = usb_alloc_urb(0, GFP_KERNEL);
-+ phy->ack_urb = usb_alloc_urb(0, GFP_KERNEL);
-
-- if (!phy->in_urb || !phy->out_urb)
-+ if (!phy->in_urb || !phy->out_urb || !phy->ack_urb)
- goto error;
-
- usb_fill_bulk_urb(phy->in_urb, phy->udev,
-@@ -501,7 +513,9 @@ static int pn533_usb_probe(struct usb_in
- usb_fill_bulk_urb(phy->out_urb, phy->udev,
- usb_sndbulkpipe(phy->udev, out_endpoint),
- NULL, 0, pn533_send_complete, phy);
--
-+ usb_fill_bulk_urb(phy->ack_urb, phy->udev,
-+ usb_sndbulkpipe(phy->udev, out_endpoint),
-+ NULL, 0, pn533_send_complete, phy);
-
- switch (id->driver_info) {
- case PN533_DEVICE_STD:
-@@ -554,6 +568,7 @@ static int pn533_usb_probe(struct usb_in
- error:
- usb_free_urb(phy->in_urb);
- usb_free_urb(phy->out_urb);
-+ usb_free_urb(phy->ack_urb);
- usb_put_dev(phy->udev);
- kfree(in_buf);
-
-@@ -573,10 +588,13 @@ static void pn533_usb_disconnect(struct
-
- usb_kill_urb(phy->in_urb);
- usb_kill_urb(phy->out_urb);
-+ usb_kill_urb(phy->ack_urb);
-
- kfree(phy->in_urb->transfer_buffer);
- usb_free_urb(phy->in_urb);
- usb_free_urb(phy->out_urb);
-+ usb_free_urb(phy->ack_urb);
-+ kfree(phy->ack_buffer);
-
- nfc_info(&interface->dev, "NXP PN533 NFC device disconnected\n");
- }
diff --git a/qlcnic_sysfs.patch b/qlcnic_sysfs.patch
index ba6b6a1403f4f9..23c3ee88c2c285 100644
--- a/qlcnic_sysfs.patch
+++ b/qlcnic_sysfs.patch
@@ -96,25 +96,25 @@
}
-static const struct device_attribute dev_attr_bridged_mode = {
-- .attr = {.name = "bridged_mode", .mode = (S_IRUGO | S_IWUSR)},
-- .show = qlcnic_show_bridged_mode,
-- .store = qlcnic_store_bridged_mode,
+- .attr = { .name = "bridged_mode", .mode = 0644 },
+- .show = qlcnic_show_bridged_mode,
+- .store = qlcnic_store_bridged_mode,
-};
-
-static const struct device_attribute dev_attr_diag_mode = {
-- .attr = {.name = "diag_mode", .mode = (S_IRUGO | S_IWUSR)},
+- .attr = { .name = "diag_mode", .mode = 0644 },
- .show = qlcnic_show_diag_mode,
- .store = qlcnic_store_diag_mode,
-};
-
-static const struct device_attribute dev_attr_beacon = {
-- .attr = {.name = "beacon", .mode = (S_IRUGO | S_IWUSR)},
+- .attr = { .name = "beacon", .mode = 0644 },
- .show = qlcnic_show_beacon,
- .store = qlcnic_store_beacon,
-};
-
static const struct bin_attribute bin_attr_crb = {
- .attr = {.name = "crb", .mode = (S_IRUGO | S_IWUSR)},
+ .attr = { .name = "crb", .mode = 0644 },
.size = 0,
@@ -1317,6 +1300,24 @@ void qlcnic_unregister_hwmon_dev(struct
}
diff --git a/series b/series
index 9d19248397d585..98706032ef92a2 100644
--- a/series
+++ b/series
@@ -1,9 +1,5 @@
#
-usb-debugfs-cleanup.patch
-usb-debugfs.patch
-nfc-pn533-don-t-send-usb-data-off-of-the-stack.patch
-usb-serial-visor-handle-potential-invalid-device-configuration.patch
usb_DEVICE_ATTR.patch
diff --git a/usb-debugfs-cleanup.patch b/usb-debugfs-cleanup.patch
deleted file mode 100644
index 22b9033cd1bbcb..00000000000000
--- a/usb-debugfs-cleanup.patch
+++ /dev/null
@@ -1,1553 +0,0 @@
-From 7b3bcbfe0aeedeec64c83cf9655273e8f42f1c54 Mon Sep 17 00:00:00 2001
-From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Date: Tue, 29 May 2018 10:36:11 +0200
-Subject: [PATCH] usb: debugfs cleanup
-
-Fix up all of the debugfs calls, no need to check the return values at
-all. This cleans up lots of unneeded code.
-
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/usb/chipidea/ci.h | 2 +-
- drivers/usb/chipidea/core.c | 4 +-
- drivers/usb/chipidea/debug.c | 56 +++++-------------
- drivers/usb/core/usb.c | 26 ++-------
- drivers/usb/dwc2/debugfs.c | 78 +++++--------------------
- drivers/usb/dwc3/debugfs.c | 43 ++++----------
- drivers/usb/gadget/udc/atmel_usba_udc.c | 71 ++++------------------
- drivers/usb/gadget/udc/atmel_usba_udc.h | 4 --
- drivers/usb/gadget/udc/bcm63xx_udc.c | 37 ++----------
- drivers/usb/gadget/udc/gr_udc.c | 7 +--
- drivers/usb/gadget/udc/gr_udc.h | 1 -
- drivers/usb/gadget/udc/pxa27x_udc.c | 43 ++------------
- drivers/usb/gadget/udc/pxa27x_udc.h | 3 -
- drivers/usb/gadget/udc/renesas_usb3.c | 18 +-----
- drivers/usb/gadget/udc/s3c2410_udc.c | 17 ++----
- drivers/usb/host/ehci-dbg.c | 30 +++-------
- drivers/usb/host/ehci-hcd.c | 5 --
- drivers/usb/host/fhci-dbg.c | 23 ++------
- drivers/usb/host/fhci.h | 2 -
- drivers/usb/host/fotg210-hcd.c | 34 +++--------
- drivers/usb/host/imx21-dbg.c | 44 ++++----------
- drivers/usb/host/isp116x-hcd.c | 17 ++----
- drivers/usb/host/ohci-dbg.c | 45 +++-----------
- drivers/usb/host/ohci-hcd.c | 5 --
- drivers/usb/host/ohci.h | 3 -
- drivers/usb/host/uhci-hcd.c | 15 ++---
- drivers/usb/mon/mon_text.c | 37 +++---------
- drivers/usb/mtu3/mtu3_dr.c | 4 --
- drivers/usb/musb/musb_core.c | 5 +-
- drivers/usb/musb/musb_debug.h | 5 +-
- drivers/usb/musb/musb_debugfs.c | 44 +++-----------
- drivers/usb/musb/musb_dsps.c | 9 +--
- drivers/usb/typec/fusb302/fusb302.c | 24 +++-----
- drivers/usb/typec/tcpm.c | 9 +--
- 34 files changed, 157 insertions(+), 613 deletions(-)
-
-diff --git a/drivers/usb/chipidea/ci.h b/drivers/usb/chipidea/ci.h
-index 98b7cb3d0064..0bf244d50544 100644
---- a/drivers/usb/chipidea/ci.h
-+++ b/drivers/usb/chipidea/ci.h
-@@ -450,7 +450,7 @@ void hw_phymode_configure(struct ci_hdrc *ci);
-
- void ci_platform_configure(struct ci_hdrc *ci);
-
--int dbg_create_files(struct ci_hdrc *ci);
-+void dbg_create_files(struct ci_hdrc *ci);
-
- void dbg_remove_files(struct ci_hdrc *ci);
- #endif /* __DRIVERS_USB_CHIPIDEA_CI_H */
-diff --git a/drivers/usb/chipidea/core.c b/drivers/usb/chipidea/core.c
-index 33ae87fa3ff3..85fc6db48e44 100644
---- a/drivers/usb/chipidea/core.c
-+++ b/drivers/usb/chipidea/core.c
-@@ -1062,9 +1062,7 @@ static int ci_hdrc_probe(struct platform_device *pdev)
- ci_hdrc_otg_fsm_start(ci);
-
- device_set_wakeup_capable(&pdev->dev, true);
-- ret = dbg_create_files(ci);
-- if (ret)
-- goto stop;
-+ dbg_create_files(ci);
-
- ret = sysfs_create_group(&dev->kobj, &ci_attr_group);
- if (ret)
-diff --git a/drivers/usb/chipidea/debug.c b/drivers/usb/chipidea/debug.c
-index ce648cb3ed94..fcc91a338875 100644
---- a/drivers/usb/chipidea/debug.c
-+++ b/drivers/usb/chipidea/debug.c
-@@ -340,54 +340,28 @@ DEFINE_SHOW_ATTRIBUTE(ci_registers);
- *
- * This function returns an error code
- */
--int dbg_create_files(struct ci_hdrc *ci)
-+void dbg_create_files(struct ci_hdrc *ci)
- {
-- struct dentry *dent;
--
- ci->debugfs = debugfs_create_dir(dev_name(ci->dev), NULL);
-- if (!ci->debugfs)
-- return -ENOMEM;
--
-- dent = debugfs_create_file("device", S_IRUGO, ci->debugfs, ci,
-- &ci_device_fops);
-- if (!dent)
-- goto err;
--
-- dent = debugfs_create_file("port_test", S_IRUGO | S_IWUSR, ci->debugfs,
-- ci, &ci_port_test_fops);
-- if (!dent)
-- goto err;
--
-- dent = debugfs_create_file("qheads", S_IRUGO, ci->debugfs, ci,
-- &ci_qheads_fops);
-- if (!dent)
-- goto err;
-
-- dent = debugfs_create_file("requests", S_IRUGO, ci->debugfs, ci,
-- &ci_requests_fops);
-- if (!dent)
-- goto err;
-+ debugfs_create_file("device", S_IRUGO, ci->debugfs, ci,
-+ &ci_device_fops);
-+ debugfs_create_file("port_test", S_IRUGO | S_IWUSR, ci->debugfs, ci,
-+ &ci_port_test_fops);
-+ debugfs_create_file("qheads", S_IRUGO, ci->debugfs, ci,
-+ &ci_qheads_fops);
-+ debugfs_create_file("requests", S_IRUGO, ci->debugfs, ci,
-+ &ci_requests_fops);
-
- if (ci_otg_is_fsm_mode(ci)) {
-- dent = debugfs_create_file("otg", S_IRUGO, ci->debugfs, ci,
-- &ci_otg_fops);
-- if (!dent)
-- goto err;
-+ debugfs_create_file("otg", S_IRUGO, ci->debugfs, ci,
-+ &ci_otg_fops);
- }
-
-- dent = debugfs_create_file("role", S_IRUGO | S_IWUSR, ci->debugfs, ci,
-- &ci_role_fops);
-- if (!dent)
-- goto err;
--
-- dent = debugfs_create_file("registers", S_IRUGO, ci->debugfs, ci,
-- &ci_registers_fops);
--
-- if (dent)
-- return 0;
--err:
-- debugfs_remove_recursive(ci->debugfs);
-- return -ENOMEM;
-+ debugfs_create_file("role", S_IRUGO | S_IWUSR, ci->debugfs, ci,
-+ &ci_role_fops);
-+ debugfs_create_file("registers", S_IRUGO, ci->debugfs, ci,
-+ &ci_registers_fops);
- }
-
- /**
-diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
-index 0adb6345ff2e..623be3174fb3 100644
---- a/drivers/usb/core/usb.c
-+++ b/drivers/usb/core/usb.c
-@@ -1167,30 +1167,16 @@ static struct notifier_block usb_bus_nb = {
- struct dentry *usb_debug_root;
- EXPORT_SYMBOL_GPL(usb_debug_root);
-
--static struct dentry *usb_debug_devices;
--
--static int usb_debugfs_init(void)
-+static void usb_debugfs_init(void)
- {
- usb_debug_root = debugfs_create_dir("usb", NULL);
-- if (!usb_debug_root)
-- return -ENOENT;
--
-- usb_debug_devices = debugfs_create_file("devices", 0444,
-- usb_debug_root, NULL,
-- &usbfs_devices_fops);
-- if (!usb_debug_devices) {
-- debugfs_remove(usb_debug_root);
-- usb_debug_root = NULL;
-- return -ENOENT;
-- }
--
-- return 0;
-+ debugfs_create_file("devices", 0444, usb_debug_root, NULL,
-+ &usbfs_devices_fops);
- }
-
- static void usb_debugfs_cleanup(void)
- {
-- debugfs_remove(usb_debug_devices);
-- debugfs_remove(usb_debug_root);
-+ debugfs_remove_recursive(usb_debug_root);
- }
-
- /*
-@@ -1205,9 +1191,7 @@ static int __init usb_init(void)
- }
- usb_init_pool_max();
-
-- retval = usb_debugfs_init();
-- if (retval)
-- goto out;
-+ usb_debugfs_init();
-
- usb_acpi_register();
- retval = bus_register(&usb_bus_type);
-diff --git a/drivers/usb/dwc2/debugfs.c b/drivers/usb/dwc2/debugfs.c
-index 7e6618ad9f21..d0bdb7997557 100644
---- a/drivers/usb/dwc2/debugfs.c
-+++ b/drivers/usb/dwc2/debugfs.c
-@@ -294,52 +294,30 @@ DEFINE_SHOW_ATTRIBUTE(ep);
- static void dwc2_hsotg_create_debug(struct dwc2_hsotg *hsotg)
- {
- struct dentry *root;
-- struct dentry *file;
- unsigned int epidx;
-
- root = hsotg->debug_root;
-
- /* create general state file */
--
-- file = debugfs_create_file("state", 0444, root, hsotg, &state_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create state\n", __func__);
--
-- file = debugfs_create_file("testmode", 0644, root, hsotg,
-- &testmode_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create testmode\n",
-- __func__);
--
-- file = debugfs_create_file("fifo", 0444, root, hsotg, &fifo_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create fifo\n", __func__);
-+ debugfs_create_file("state", 0444, root, hsotg, &state_fops);
-+ debugfs_create_file("testmode", 0644, root, hsotg, &testmode_fops);
-+ debugfs_create_file("fifo", 0444, root, hsotg, &fifo_fops);
-
- /* Create one file for each out endpoint */
- for (epidx = 0; epidx < hsotg->num_of_eps; epidx++) {
- struct dwc2_hsotg_ep *ep;
-
- ep = hsotg->eps_out[epidx];
-- if (ep) {
-- file = debugfs_create_file(ep->name, 0444,
-- root, ep, &ep_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "failed to create %s debug file\n",
-- ep->name);
-- }
-+ if (ep)
-+ debugfs_create_file(ep->name, 0444, root, ep, &ep_fops);
- }
- /* Create one file for each in endpoint. EP0 is handled with out eps */
- for (epidx = 1; epidx < hsotg->num_of_eps; epidx++) {
- struct dwc2_hsotg_ep *ep;
-
- ep = hsotg->eps_in[epidx];
-- if (ep) {
-- file = debugfs_create_file(ep->name, 0444,
-- root, ep, &ep_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "failed to create %s debug file\n",
-- ep->name);
-- }
-+ if (ep)
-+ debugfs_create_file(ep->name, 0444, root, ep, &ep_fops);
- }
- }
- #else
-@@ -792,32 +770,14 @@ DEFINE_SHOW_ATTRIBUTE(dr_mode);
- int dwc2_debugfs_init(struct dwc2_hsotg *hsotg)
- {
- int ret;
-- struct dentry *file;
-+ struct dentry *root;
-
-- hsotg->debug_root = debugfs_create_dir(dev_name(hsotg->dev), NULL);
-- if (!hsotg->debug_root) {
-- ret = -ENOMEM;
-- goto err0;
-- }
-+ root = debugfs_create_dir(dev_name(hsotg->dev), NULL);
-+ hsotg->debug_root = root;
-
-- file = debugfs_create_file("params", 0444,
-- hsotg->debug_root,
-- hsotg, &params_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create params\n", __func__);
--
-- file = debugfs_create_file("hw_params", 0444,
-- hsotg->debug_root,
-- hsotg, &hw_params_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create hw_params\n",
-- __func__);
--
-- file = debugfs_create_file("dr_mode", 0444,
-- hsotg->debug_root,
-- hsotg, &dr_mode_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create dr_mode\n", __func__);
-+ debugfs_create_file("params", 0444, root, hsotg, &params_fops);
-+ debugfs_create_file("hw_params", 0444, root, hsotg, &hw_params_fops);
-+ debugfs_create_file("dr_mode", 0444, root, hsotg, &dr_mode_fops);
-
- /* Add gadget debugfs nodes */
- dwc2_hsotg_create_debug(hsotg);
-@@ -826,24 +786,18 @@ int dwc2_debugfs_init(struct dwc2_hsotg *hsotg)
- GFP_KERNEL);
- if (!hsotg->regset) {
- ret = -ENOMEM;
-- goto err1;
-+ goto err;
- }
-
- hsotg->regset->regs = dwc2_regs;
- hsotg->regset->nregs = ARRAY_SIZE(dwc2_regs);
- hsotg->regset->base = hsotg->regs;
-
-- file = debugfs_create_regset32("regdump", 0444, hsotg->debug_root,
-- hsotg->regset);
-- if (!file) {
-- ret = -ENOMEM;
-- goto err1;
-- }
-+ debugfs_create_regset32("regdump", 0444, root, hsotg->regset);
-
- return 0;
--err1:
-+err:
- debugfs_remove_recursive(hsotg->debug_root);
--err0:
- return ret;
- }
-
-diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c
-index 2f07be1e1f31..df8e73ec3342 100644
---- a/drivers/usb/dwc3/debugfs.c
-+++ b/drivers/usb/dwc3/debugfs.c
-@@ -716,9 +716,6 @@ static void dwc3_debugfs_create_endpoint_dir(struct dwc3_ep *dep,
- struct dentry *dir;
-
- dir = debugfs_create_dir(dep->name, parent);
-- if (IS_ERR_OR_NULL(dir))
-- return;
--
- dwc3_debugfs_create_endpoint_files(dep, dir);
- }
-
-@@ -740,49 +737,31 @@ static void dwc3_debugfs_create_endpoint_dirs(struct dwc3 *dwc,
- void dwc3_debugfs_init(struct dwc3 *dwc)
- {
- struct dentry *root;
-- struct dentry *file;
--
-- root = debugfs_create_dir(dev_name(dwc->dev), NULL);
-- if (IS_ERR_OR_NULL(root)) {
-- if (!root)
-- dev_err(dwc->dev, "Can't create debugfs root\n");
-- return;
-- }
-- dwc->root = root;
-
- dwc->regset = kzalloc(sizeof(*dwc->regset), GFP_KERNEL);
-- if (!dwc->regset) {
-- debugfs_remove_recursive(root);
-+ if (!dwc->regset)
- return;
-- }
-
- dwc->regset->regs = dwc3_regs;
- dwc->regset->nregs = ARRAY_SIZE(dwc3_regs);
- dwc->regset->base = dwc->regs - DWC3_GLOBALS_REGS_START;
-
-- file = debugfs_create_regset32("regdump", S_IRUGO, root, dwc->regset);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs regdump\n");
-+ root = debugfs_create_dir(dev_name(dwc->dev), NULL);
-+ dwc->root = root;
-+
-+ debugfs_create_regset32("regdump", S_IRUGO, root, dwc->regset);
-
- if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)) {
-- file = debugfs_create_file("mode", S_IRUGO | S_IWUSR, root,
-- dwc, &dwc3_mode_fops);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs mode\n");
-+ debugfs_create_file("mode", S_IRUGO | S_IWUSR, root, dwc,
-+ &dwc3_mode_fops);
- }
-
- if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) ||
- IS_ENABLED(CONFIG_USB_DWC3_GADGET)) {
-- file = debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root,
-- dwc, &dwc3_testmode_fops);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs testmode\n");
--
-- file = debugfs_create_file("link_state", S_IRUGO | S_IWUSR,
-- root, dwc, &dwc3_link_state_fops);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs link_state\n");
--
-+ debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root, dwc,
-+ &dwc3_testmode_fops);
-+ debugfs_create_file("link_state", S_IRUGO | S_IWUSR, root, dwc,
-+ &dwc3_link_state_fops);
- dwc3_debugfs_create_endpoint_dirs(dwc, root);
- }
- }
-diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.c b/drivers/usb/gadget/udc/atmel_usba_udc.c
-index 2f586f2bda7e..a4d99bf50f2f 100644
---- a/drivers/usb/gadget/udc/atmel_usba_udc.c
-+++ b/drivers/usb/gadget/udc/atmel_usba_udc.c
-@@ -206,94 +206,45 @@ static void usba_ep_init_debugfs(struct usba_udc *udc,
- struct dentry *ep_root;
-
- ep_root = debugfs_create_dir(ep->ep.name, udc->debugfs_root);
-- if (!ep_root)
-- goto err_root;
- ep->debugfs_dir = ep_root;
-
-- ep->debugfs_queue = debugfs_create_file("queue", 0400, ep_root,
-- ep, &queue_dbg_fops);
-- if (!ep->debugfs_queue)
-- goto err_queue;
--
-- if (ep->can_dma) {
-- ep->debugfs_dma_status
-- = debugfs_create_u32("dma_status", 0400, ep_root,
-- &ep->last_dma_status);
-- if (!ep->debugfs_dma_status)
-- goto err_dma_status;
-- }
-- if (ep_is_control(ep)) {
-- ep->debugfs_state
-- = debugfs_create_u32("state", 0400, ep_root,
-- &ep->state);
-- if (!ep->debugfs_state)
-- goto err_state;
-- }
--
-- return;
--
--err_state:
-+ debugfs_create_file("queue", 0400, ep_root, ep, &queue_dbg_fops);
- if (ep->can_dma)
-- debugfs_remove(ep->debugfs_dma_status);
--err_dma_status:
-- debugfs_remove(ep->debugfs_queue);
--err_queue:
-- debugfs_remove(ep_root);
--err_root:
-- dev_err(&ep->udc->pdev->dev,
-- "failed to create debugfs directory for %s\n", ep->ep.name);
-+ debugfs_create_u32("dma_status", 0400, ep_root,
-+ &ep->last_dma_status);
-+ if (ep_is_control(ep))
-+ debugfs_create_u32("state", 0400, ep_root, &ep->state);
- }
-
- static void usba_ep_cleanup_debugfs(struct usba_ep *ep)
- {
-- debugfs_remove(ep->debugfs_queue);
-- debugfs_remove(ep->debugfs_dma_status);
-- debugfs_remove(ep->debugfs_state);
-- debugfs_remove(ep->debugfs_dir);
-- ep->debugfs_dma_status = NULL;
-- ep->debugfs_dir = NULL;
-+ debugfs_remove_recursive(ep->debugfs_dir);
- }
-
- static void usba_init_debugfs(struct usba_udc *udc)
- {
-- struct dentry *root, *regs;
-+ struct dentry *root;
- struct resource *regs_resource;
-
- root = debugfs_create_dir(udc->gadget.name, NULL);
-- if (IS_ERR(root) || !root)
-- goto err_root;
- udc->debugfs_root = root;
-
- regs_resource = platform_get_resource(udc->pdev, IORESOURCE_MEM,
- CTRL_IOMEM_ID);
-
- if (regs_resource) {
-- regs = debugfs_create_file_size("regs", 0400, root, udc,
-- &regs_dbg_fops,
-- resource_size(regs_resource));
-- if (!regs)
-- goto err_regs;
-- udc->debugfs_regs = regs;
-+ debugfs_create_file_size("regs", 0400, root, udc,
-+ &regs_dbg_fops,
-+ resource_size(regs_resource));
- }
-
- usba_ep_init_debugfs(udc, to_usba_ep(udc->gadget.ep0));
--
-- return;
--
--err_regs:
-- debugfs_remove(root);
--err_root:
-- udc->debugfs_root = NULL;
-- dev_err(&udc->pdev->dev, "debugfs is not available\n");
- }
-
- static void usba_cleanup_debugfs(struct usba_udc *udc)
- {
- usba_ep_cleanup_debugfs(to_usba_ep(udc->gadget.ep0));
-- debugfs_remove(udc->debugfs_regs);
-- debugfs_remove(udc->debugfs_root);
-- udc->debugfs_regs = NULL;
-- udc->debugfs_root = NULL;
-+ debugfs_remove_recursive(udc->debugfs_root);
- }
- #else
- static inline void usba_ep_init_debugfs(struct usba_udc *udc,
-diff --git a/drivers/usb/gadget/udc/atmel_usba_udc.h b/drivers/usb/gadget/udc/atmel_usba_udc.h
-index d7eb7cf4fd5c..030bf797cd25 100644
---- a/drivers/usb/gadget/udc/atmel_usba_udc.h
-+++ b/drivers/usb/gadget/udc/atmel_usba_udc.h
-@@ -287,9 +287,6 @@ struct usba_ep {
- #ifdef CONFIG_USB_GADGET_DEBUG_FS
- u32 last_dma_status;
- struct dentry *debugfs_dir;
-- struct dentry *debugfs_queue;
-- struct dentry *debugfs_dma_status;
-- struct dentry *debugfs_state;
- #endif
- };
-
-@@ -344,7 +341,6 @@ struct usba_udc {
-
- #ifdef CONFIG_USB_GADGET_DEBUG_FS
- struct dentry *debugfs_root;
-- struct dentry *debugfs_regs;
- #endif
-
- struct regmap *pmc;
-diff --git a/drivers/usb/gadget/udc/bcm63xx_udc.c b/drivers/usb/gadget/udc/bcm63xx_udc.c
-index 3a8df8601074..c1fcc77403ea 100644
---- a/drivers/usb/gadget/udc/bcm63xx_udc.c
-+++ b/drivers/usb/gadget/udc/bcm63xx_udc.c
-@@ -288,8 +288,6 @@ struct bcm63xx_req {
- * @ep0_reply: Pending reply from gadget driver.
- * @ep0_request: Outstanding ep0 request.
- * @debugfs_root: debugfs directory: /sys/kernel/debug/<DRV_MODULE_NAME>.
-- * @debugfs_usbd: debugfs file "usbd" for controller state.
-- * @debugfs_iudma: debugfs file "usbd" for IUDMA state.
- */
- struct bcm63xx_udc {
- spinlock_t lock;
-@@ -330,8 +328,6 @@ struct bcm63xx_udc {
- struct usb_request *ep0_request;
-
- struct dentry *debugfs_root;
-- struct dentry *debugfs_usbd;
-- struct dentry *debugfs_iudma;
- };
-
- static const struct usb_ep_ops bcm63xx_udc_ep_ops;
-@@ -2247,34 +2243,16 @@ DEFINE_SHOW_ATTRIBUTE(bcm63xx_iudma_dbg);
- */
- static void bcm63xx_udc_init_debugfs(struct bcm63xx_udc *udc)
- {
-- struct dentry *root, *usbd, *iudma;
-+ struct dentry *root;
-
- if (!IS_ENABLED(CONFIG_USB_GADGET_DEBUG_FS))
- return;
-
- root = debugfs_create_dir(udc->gadget.name, NULL);
-- if (IS_ERR(root) || !root)
-- goto err_root;
--
-- usbd = debugfs_create_file("usbd", 0400, root, udc,
-- &bcm63xx_usbd_dbg_fops);
-- if (!usbd)
-- goto err_usbd;
-- iudma = debugfs_create_file("iudma", 0400, root, udc,
-- &bcm63xx_iudma_dbg_fops);
-- if (!iudma)
-- goto err_iudma;
--
- udc->debugfs_root = root;
-- udc->debugfs_usbd = usbd;
-- udc->debugfs_iudma = iudma;
-- return;
--err_iudma:
-- debugfs_remove(usbd);
--err_usbd:
-- debugfs_remove(root);
--err_root:
-- dev_err(udc->dev, "debugfs is not available\n");
-+
-+ debugfs_create_file("usbd", 0400, root, udc, &bcm63xx_usbd_dbg_fops);
-+ debugfs_create_file("iudma", 0400, root, udc, &bcm63xx_iudma_dbg_fops);
- }
-
- /**
-@@ -2285,12 +2263,7 @@ static void bcm63xx_udc_init_debugfs(struct bcm63xx_udc *udc)
- */
- static void bcm63xx_udc_cleanup_debugfs(struct bcm63xx_udc *udc)
- {
-- debugfs_remove(udc->debugfs_iudma);
-- debugfs_remove(udc->debugfs_usbd);
-- debugfs_remove(udc->debugfs_root);
-- udc->debugfs_iudma = NULL;
-- udc->debugfs_usbd = NULL;
-- udc->debugfs_root = NULL;
-+ debugfs_remove_recursive(udc->debugfs_root);
- }
-
- /***********************************************************************
-diff --git a/drivers/usb/gadget/udc/gr_udc.c b/drivers/usb/gadget/udc/gr_udc.c
-index ca83c15d8ea4..729e60e49564 100644
---- a/drivers/usb/gadget/udc/gr_udc.c
-+++ b/drivers/usb/gadget/udc/gr_udc.c
-@@ -209,15 +209,12 @@ static void gr_dfs_create(struct gr_udc *dev)
- const char *name = "gr_udc_state";
-
- dev->dfs_root = debugfs_create_dir(dev_name(dev->dev), NULL);
-- dev->dfs_state = debugfs_create_file(name, 0444, dev->dfs_root, dev,
-- &gr_dfs_fops);
-+ debugfs_create_file(name, 0444, dev->dfs_root, dev, &gr_dfs_fops);
- }
-
- static void gr_dfs_delete(struct gr_udc *dev)
- {
-- /* Handles NULL and ERR pointers internally */
-- debugfs_remove(dev->dfs_state);
-- debugfs_remove(dev->dfs_root);
-+ debugfs_remove_recursive(dev->dfs_root);
- }
-
- #else /* !CONFIG_USB_GADGET_DEBUG_FS */
-diff --git a/drivers/usb/gadget/udc/gr_udc.h b/drivers/usb/gadget/udc/gr_udc.h
-index 3e913268c8c5..417ad2aa2cc7 100644
---- a/drivers/usb/gadget/udc/gr_udc.h
-+++ b/drivers/usb/gadget/udc/gr_udc.h
-@@ -217,7 +217,6 @@ struct gr_udc {
- spinlock_t lock; /* General lock, a.k.a. "dev->lock" in comments */
-
- struct dentry *dfs_root;
-- struct dentry *dfs_state;
- };
-
- #define to_gr_udc(gadget) (container_of((gadget), struct gr_udc, gadget))
-diff --git a/drivers/usb/gadget/udc/pxa27x_udc.c b/drivers/usb/gadget/udc/pxa27x_udc.c
-index a58242e901df..014233252299 100644
---- a/drivers/usb/gadget/udc/pxa27x_udc.c
-+++ b/drivers/usb/gadget/udc/pxa27x_udc.c
-@@ -205,50 +205,19 @@ DEFINE_SHOW_ATTRIBUTE(eps_dbg);
-
- static void pxa_init_debugfs(struct pxa_udc *udc)
- {
-- struct dentry *root, *state, *queues, *eps;
-+ struct dentry *root;
-
- root = debugfs_create_dir(udc->gadget.name, NULL);
-- if (IS_ERR(root) || !root)
-- goto err_root;
--
-- state = debugfs_create_file("udcstate", 0400, root, udc,
-- &state_dbg_fops);
-- if (!state)
-- goto err_state;
-- queues = debugfs_create_file("queues", 0400, root, udc,
-- &queues_dbg_fops);
-- if (!queues)
-- goto err_queues;
-- eps = debugfs_create_file("epstate", 0400, root, udc,
-- &eps_dbg_fops);
-- if (!eps)
-- goto err_eps;
--
- udc->debugfs_root = root;
-- udc->debugfs_state = state;
-- udc->debugfs_queues = queues;
-- udc->debugfs_eps = eps;
-- return;
--err_eps:
-- debugfs_remove(eps);
--err_queues:
-- debugfs_remove(queues);
--err_state:
-- debugfs_remove(root);
--err_root:
-- dev_err(udc->dev, "debugfs is not available\n");
-+
-+ debugfs_create_file("udcstate", 0400, root, udc, &state_dbg_fops);
-+ debugfs_create_file("queues", 0400, root, udc, &queues_dbg_fops);
-+ debugfs_create_file("epstate", 0400, root, udc, &eps_dbg_fops);
- }
-
- static void pxa_cleanup_debugfs(struct pxa_udc *udc)
- {
-- debugfs_remove(udc->debugfs_eps);
-- debugfs_remove(udc->debugfs_queues);
-- debugfs_remove(udc->debugfs_state);
-- debugfs_remove(udc->debugfs_root);
-- udc->debugfs_eps = NULL;
-- udc->debugfs_queues = NULL;
-- udc->debugfs_state = NULL;
-- udc->debugfs_root = NULL;
-+ debugfs_remove_recursive(udc->debugfs_root);
- }
-
- #else
-diff --git a/drivers/usb/gadget/udc/pxa27x_udc.h b/drivers/usb/gadget/udc/pxa27x_udc.h
-index 1128d39a4255..13b2977399ab 100644
---- a/drivers/usb/gadget/udc/pxa27x_udc.h
-+++ b/drivers/usb/gadget/udc/pxa27x_udc.h
-@@ -476,9 +476,6 @@ struct pxa_udc {
- #endif
- #ifdef CONFIG_USB_GADGET_DEBUG_FS
- struct dentry *debugfs_root;
-- struct dentry *debugfs_state;
-- struct dentry *debugfs_queues;
-- struct dentry *debugfs_eps;
- #endif
- };
- #define to_pxa(g) (container_of((g), struct pxa_udc, gadget))
-diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c
-index 5caf78bbbf7c..977ea1a02cf9 100644
---- a/drivers/usb/gadget/udc/renesas_usb3.c
-+++ b/drivers/usb/gadget/udc/renesas_usb3.c
-@@ -2391,22 +2391,10 @@ static const struct file_operations renesas_usb3_b_device_fops = {
- static void renesas_usb3_debugfs_init(struct renesas_usb3 *usb3,
- struct device *dev)
- {
-- struct dentry *root, *file;
-+ usb3->dentry = debugfs_create_dir(dev_name(dev), NULL);
-
-- root = debugfs_create_dir(dev_name(dev), NULL);
-- if (IS_ERR_OR_NULL(root)) {
-- dev_info(dev, "%s: Can't create the root\n", __func__);
-- return;
-- }
--
-- file = debugfs_create_file("b_device", 0644, root, usb3,
-- &renesas_usb3_b_device_fops);
-- if (!file) {
-- dev_info(dev, "%s: Can't create debugfs mode\n", __func__);
-- debugfs_remove_recursive(root);
-- } else {
-- usb3->dentry = root;
-- }
-+ debugfs_create_file("b_device", 0644, usb3->dentry, usb3,
-+ &renesas_usb3_b_device_fops);
- }
-
- /*------- platform_driver ------------------------------------------------*/
-diff --git a/drivers/usb/gadget/udc/s3c2410_udc.c b/drivers/usb/gadget/udc/s3c2410_udc.c
-index f154f49e98c8..8bf5ad7a59ad 100644
---- a/drivers/usb/gadget/udc/s3c2410_udc.c
-+++ b/drivers/usb/gadget/udc/s3c2410_udc.c
-@@ -1871,13 +1871,9 @@ static int s3c2410_udc_probe(struct platform_device *pdev)
- if (retval)
- goto err_add_udc;
-
-- if (s3c2410_udc_debugfs_root) {
-- udc->regs_info = debugfs_create_file("registers", S_IRUGO,
-- s3c2410_udc_debugfs_root,
-- udc, &s3c2410_udc_debugfs_fops);
-- if (!udc->regs_info)
-- dev_warn(dev, "debugfs file creation failed\n");
-- }
-+ udc->regs_info = debugfs_create_file("registers", S_IRUGO,
-+ s3c2410_udc_debugfs_root, udc,
-+ &s3c2410_udc_debugfs_fops);
-
- dev_dbg(dev, "probe ok\n");
-
-@@ -1994,11 +1990,6 @@ static int __init udc_init(void)
- dprintk(DEBUG_NORMAL, "%s\n", gadget_name);
-
- s3c2410_udc_debugfs_root = debugfs_create_dir(gadget_name, NULL);
-- if (IS_ERR(s3c2410_udc_debugfs_root)) {
-- pr_err("%s: debugfs dir creation failed %ld\n",
-- gadget_name, PTR_ERR(s3c2410_udc_debugfs_root));
-- s3c2410_udc_debugfs_root = NULL;
-- }
-
- retval = platform_driver_register(&udc_driver_24x0);
- if (retval)
-@@ -2014,7 +2005,7 @@ static int __init udc_init(void)
- static void __exit udc_exit(void)
- {
- platform_driver_unregister(&udc_driver_24x0);
-- debugfs_remove(s3c2410_udc_debugfs_root);
-+ debugfs_remove_recursive(s3c2410_udc_debugfs_root);
- }
-
- module_init(udc_init);
-diff --git a/drivers/usb/host/ehci-dbg.c b/drivers/usb/host/ehci-dbg.c
-index 3ed75aaa09d9..7619cfb06883 100644
---- a/drivers/usb/host/ehci-dbg.c
-+++ b/drivers/usb/host/ehci-dbg.c
-@@ -1028,29 +1028,15 @@ static inline void create_debug_files(struct ehci_hcd *ehci)
- struct usb_bus *bus = &ehci_to_hcd(ehci)->self;
-
- ehci->debug_dir = debugfs_create_dir(bus->bus_name, ehci_debug_root);
-- if (!ehci->debug_dir)
-- return;
-
-- if (!debugfs_create_file("async", S_IRUGO, ehci->debug_dir, bus,
-- &debug_async_fops))
-- goto file_error;
--
-- if (!debugfs_create_file("bandwidth", S_IRUGO, ehci->debug_dir, bus,
-- &debug_bandwidth_fops))
-- goto file_error;
--
-- if (!debugfs_create_file("periodic", S_IRUGO, ehci->debug_dir, bus,
-- &debug_periodic_fops))
-- goto file_error;
--
-- if (!debugfs_create_file("registers", S_IRUGO, ehci->debug_dir, bus,
-- &debug_registers_fops))
-- goto file_error;
--
-- return;
--
--file_error:
-- debugfs_remove_recursive(ehci->debug_dir);
-+ debugfs_create_file("async", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_async_fops);
-+ debugfs_create_file("bandwidth", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_bandwidth_fops);
-+ debugfs_create_file("periodic", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_periodic_fops);
-+ debugfs_create_file("registers", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_registers_fops);
- }
-
- static inline void remove_debug_files(struct ehci_hcd *ehci)
-diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
-index d927adf3afcd..89c47ae5c7d3 100644
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -1311,10 +1311,6 @@ static int __init ehci_hcd_init(void)
-
- #ifdef CONFIG_DYNAMIC_DEBUG
- ehci_debug_root = debugfs_create_dir("ehci", usb_debug_root);
-- if (!ehci_debug_root) {
-- retval = -ENOENT;
-- goto err_debug;
-- }
- #endif
-
- #ifdef PLATFORM_DRIVER
-@@ -1361,7 +1357,6 @@ static int __init ehci_hcd_init(void)
- #ifdef CONFIG_DYNAMIC_DEBUG
- debugfs_remove(ehci_debug_root);
- ehci_debug_root = NULL;
--err_debug:
- #endif
- clear_bit(USB_EHCI_LOADED, &usb_hcds_loaded);
- return retval;
-diff --git a/drivers/usb/host/fhci-dbg.c b/drivers/usb/host/fhci-dbg.c
-index ebf9bb219f75..100048b3bd17 100644
---- a/drivers/usb/host/fhci-dbg.c
-+++ b/drivers/usb/host/fhci-dbg.c
-@@ -83,27 +83,14 @@ void fhci_dfs_create(struct fhci_hcd *fhci)
- struct device *dev = fhci_to_hcd(fhci)->self.controller;
-
- fhci->dfs_root = debugfs_create_dir(dev_name(dev), usb_debug_root);
-- if (!fhci->dfs_root) {
-- WARN_ON(1);
-- return;
-- }
--
-- fhci->dfs_regs = debugfs_create_file("regs", S_IFREG | S_IRUGO,
-- fhci->dfs_root, fhci, &fhci_dfs_regs_fops);
-
-- fhci->dfs_irq_stat = debugfs_create_file("irq_stat",
-- S_IFREG | S_IRUGO, fhci->dfs_root, fhci,
-- &fhci_dfs_irq_stat_fops);
--
-- WARN_ON(!fhci->dfs_regs || !fhci->dfs_irq_stat);
-+ debugfs_create_file("regs", S_IFREG | S_IRUGO, fhci->dfs_root, fhci,
-+ &fhci_dfs_regs_fops);
-+ debugfs_create_file("irq_stat", S_IFREG | S_IRUGO, fhci->dfs_root, fhci,
-+ &fhci_dfs_irq_stat_fops);
- }
-
- void fhci_dfs_destroy(struct fhci_hcd *fhci)
- {
-- if (!fhci->dfs_root)
-- return;
--
-- debugfs_remove(fhci->dfs_irq_stat);
-- debugfs_remove(fhci->dfs_regs);
-- debugfs_remove(fhci->dfs_root);
-+ debugfs_remove_recursive(fhci->dfs_root);
- }
-diff --git a/drivers/usb/host/fhci.h b/drivers/usb/host/fhci.h
-index e7ec41d62410..2ce5031d866d 100644
---- a/drivers/usb/host/fhci.h
-+++ b/drivers/usb/host/fhci.h
-@@ -262,8 +262,6 @@ struct fhci_hcd {
- #ifdef CONFIG_FHCI_DEBUG
- int usb_irq_stat[13];
- struct dentry *dfs_root;
-- struct dentry *dfs_regs;
-- struct dentry *dfs_irq_stat;
- #endif
- };
-
-diff --git a/drivers/usb/host/fotg210-hcd.c b/drivers/usb/host/fotg210-hcd.c
-index d8abf401918a..e64eb47770c8 100644
---- a/drivers/usb/host/fotg210-hcd.c
-+++ b/drivers/usb/host/fotg210-hcd.c
-@@ -844,28 +844,16 @@ static int debug_registers_open(struct inode *inode, struct file *file)
- static inline void create_debug_files(struct fotg210_hcd *fotg210)
- {
- struct usb_bus *bus = &fotg210_to_hcd(fotg210)->self;
-+ struct dentry *root;
-
-- fotg210->debug_dir = debugfs_create_dir(bus->bus_name,
-- fotg210_debug_root);
-- if (!fotg210->debug_dir)
-- return;
--
-- if (!debugfs_create_file("async", S_IRUGO, fotg210->debug_dir, bus,
-- &debug_async_fops))
-- goto file_error;
--
-- if (!debugfs_create_file("periodic", S_IRUGO, fotg210->debug_dir, bus,
-- &debug_periodic_fops))
-- goto file_error;
-+ root = debugfs_create_dir(bus->bus_name, fotg210_debug_root);
-+ fotg210->debug_dir = root;
-
-- if (!debugfs_create_file("registers", S_IRUGO, fotg210->debug_dir, bus,
-- &debug_registers_fops))
-- goto file_error;
--
-- return;
--
--file_error:
-- debugfs_remove_recursive(fotg210->debug_dir);
-+ debugfs_create_file("async", S_IRUGO, root, bus, &debug_async_fops);
-+ debugfs_create_file("periodic", S_IRUGO, root, bus,
-+ &debug_periodic_fops);
-+ debugfs_create_file("registers", S_IRUGO, root, bus,
-+ &debug_registers_fops);
- }
-
- static inline void remove_debug_files(struct fotg210_hcd *fotg210)
-@@ -5686,10 +5674,6 @@ static int __init fotg210_hcd_init(void)
- sizeof(struct fotg210_itd));
-
- fotg210_debug_root = debugfs_create_dir("fotg210", usb_debug_root);
-- if (!fotg210_debug_root) {
-- retval = -ENOENT;
-- goto err_debug;
-- }
-
- retval = platform_driver_register(&fotg210_hcd_driver);
- if (retval < 0)
-@@ -5699,7 +5683,7 @@ static int __init fotg210_hcd_init(void)
- clean:
- debugfs_remove(fotg210_debug_root);
- fotg210_debug_root = NULL;
--err_debug:
-+
- clear_bit(USB_EHCI_LOADED, &usb_hcds_loaded);
- return retval;
- }
-diff --git a/drivers/usb/host/imx21-dbg.c b/drivers/usb/host/imx21-dbg.c
-index a213ed6f07b5..7fcf1d9dd7f3 100644
---- a/drivers/usb/host/imx21-dbg.c
-+++ b/drivers/usb/host/imx21-dbg.c
-@@ -417,46 +417,22 @@ DEFINE_SHOW_ATTRIBUTE(debug_isoc);
-
- static void create_debug_files(struct imx21 *imx21)
- {
-- imx21->debug_root = debugfs_create_dir(dev_name(imx21->dev), NULL);
-- if (!imx21->debug_root)
-- goto failed_create_rootdir;
-+ struct dentry *root;
-
-- if (!debugfs_create_file("status", S_IRUGO,
-- imx21->debug_root, imx21, &debug_status_fops))
-- goto failed_create;
-+ root = debugfs_create_dir(dev_name(imx21->dev), NULL);
-+ imx21->debug_root = root;
-
-- if (!debugfs_create_file("dmem", S_IRUGO,
-- imx21->debug_root, imx21, &debug_dmem_fops))
-- goto failed_create;
--
-- if (!debugfs_create_file("etd", S_IRUGO,
-- imx21->debug_root, imx21, &debug_etd_fops))
-- goto failed_create;
--
-- if (!debugfs_create_file("statistics", S_IRUGO,
-- imx21->debug_root, imx21, &debug_statistics_fops))
-- goto failed_create;
--
-- if (!debugfs_create_file("isoc", S_IRUGO,
-- imx21->debug_root, imx21, &debug_isoc_fops))
-- goto failed_create;
--
-- return;
--
--failed_create:
-- debugfs_remove_recursive(imx21->debug_root);
--
--failed_create_rootdir:
-- imx21->debug_root = NULL;
-+ debugfs_create_file("status", S_IRUGO, root, imx21, &debug_status_fops);
-+ debugfs_create_file("dmem", S_IRUGO, root, imx21, &debug_dmem_fops);
-+ debugfs_create_file("etd", S_IRUGO, root, imx21, &debug_etd_fops);
-+ debugfs_create_file("statistics", S_IRUGO, root, imx21,
-+ &debug_statistics_fops);
-+ debugfs_create_file("isoc", S_IRUGO, root, imx21, &debug_isoc_fops);
- }
-
--
- static void remove_debug_files(struct imx21 *imx21)
- {
-- if (imx21->debug_root) {
-- debugfs_remove_recursive(imx21->debug_root);
-- imx21->debug_root = NULL;
-- }
-+ debugfs_remove_recursive(imx21->debug_root);
- }
-
- #endif
-diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c
-index 4602ed801f0a..74da136d322a 100644
---- a/drivers/usb/host/isp116x-hcd.c
-+++ b/drivers/usb/host/isp116x-hcd.c
-@@ -1198,14 +1198,11 @@ static int isp116x_debug_show(struct seq_file *s, void *unused)
- }
- DEFINE_SHOW_ATTRIBUTE(isp116x_debug);
-
--static int create_debug_file(struct isp116x *isp116x)
-+static void create_debug_file(struct isp116x *isp116x)
- {
- isp116x->dentry = debugfs_create_file(hcd_name,
- S_IRUGO, NULL, isp116x,
- &isp116x_debug_fops);
-- if (!isp116x->dentry)
-- return -ENOMEM;
-- return 0;
- }
-
- static void remove_debug_file(struct isp116x *isp116x)
-@@ -1215,8 +1212,8 @@ static void remove_debug_file(struct isp116x *isp116x)
-
- #else
-
--#define create_debug_file(d) 0
--#define remove_debug_file(d) do{}while(0)
-+static inline void create_debug_file(struct isp116x *isp116x) { }
-+static inline void remove_debug_file(struct isp116x *isp116x) { }
-
- #endif /* CONFIG_DEBUG_FS */
-
-@@ -1643,16 +1640,10 @@ static int isp116x_probe(struct platform_device *pdev)
-
- device_wakeup_enable(hcd->self.controller);
-
-- ret = create_debug_file(isp116x);
-- if (ret) {
-- ERR("Couldn't create debugfs entry\n");
-- goto err7;
-- }
-+ create_debug_file(isp116x);
-
- return 0;
-
-- err7:
-- usb_remove_hcd(hcd);
- err6:
- usb_put_hcd(hcd);
- err5:
-diff --git a/drivers/usb/host/ohci-dbg.c b/drivers/usb/host/ohci-dbg.c
-index ac7d4ac34b02..d3ee1f52aaab 100644
---- a/drivers/usb/host/ohci-dbg.c
-+++ b/drivers/usb/host/ohci-dbg.c
-@@ -762,50 +762,23 @@ static int debug_registers_open(struct inode *inode, struct file *file)
- static inline void create_debug_files (struct ohci_hcd *ohci)
- {
- struct usb_bus *bus = &ohci_to_hcd(ohci)->self;
-+ struct dentry *root;
-
-- ohci->debug_dir = debugfs_create_dir(bus->bus_name, ohci_debug_root);
-- if (!ohci->debug_dir)
-- goto dir_error;
-+ root = debugfs_create_dir(bus->bus_name, ohci_debug_root);
-+ ohci->debug_dir = root;
-
-- ohci->debug_async = debugfs_create_file("async", S_IRUGO,
-- ohci->debug_dir, ohci,
-- &debug_async_fops);
-- if (!ohci->debug_async)
-- goto async_error;
--
-- ohci->debug_periodic = debugfs_create_file("periodic", S_IRUGO,
-- ohci->debug_dir, ohci,
-- &debug_periodic_fops);
-- if (!ohci->debug_periodic)
-- goto periodic_error;
--
-- ohci->debug_registers = debugfs_create_file("registers", S_IRUGO,
-- ohci->debug_dir, ohci,
-- &debug_registers_fops);
-- if (!ohci->debug_registers)
-- goto registers_error;
-+ debugfs_create_file("async", S_IRUGO, root, ohci, &debug_async_fops);
-+ debugfs_create_file("periodic", S_IRUGO, root, ohci,
-+ &debug_periodic_fops);
-+ debugfs_create_file("registers", S_IRUGO, root, ohci,
-+ &debug_registers_fops);
-
- ohci_dbg (ohci, "created debug files\n");
-- return;
--
--registers_error:
-- debugfs_remove(ohci->debug_periodic);
--periodic_error:
-- debugfs_remove(ohci->debug_async);
--async_error:
-- debugfs_remove(ohci->debug_dir);
--dir_error:
-- ohci->debug_periodic = NULL;
-- ohci->debug_async = NULL;
-- ohci->debug_dir = NULL;
- }
-
- static inline void remove_debug_files (struct ohci_hcd *ohci)
- {
-- debugfs_remove(ohci->debug_registers);
-- debugfs_remove(ohci->debug_periodic);
-- debugfs_remove(ohci->debug_async);
-- debugfs_remove(ohci->debug_dir);
-+ debugfs_remove_recursive(ohci->debug_dir);
- }
-
- /*-------------------------------------------------------------------------*/
-diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
-index 4806e0f9e8d4..210181fd98d2 100644
---- a/drivers/usb/host/ohci-hcd.c
-+++ b/drivers/usb/host/ohci-hcd.c
-@@ -1258,10 +1258,6 @@ static int __init ohci_hcd_mod_init(void)
- set_bit(USB_OHCI_LOADED, &usb_hcds_loaded);
-
- ohci_debug_root = debugfs_create_dir("ohci", usb_debug_root);
-- if (!ohci_debug_root) {
-- retval = -ENOENT;
-- goto error_debug;
-- }
-
- #ifdef PS3_SYSTEM_BUS_DRIVER
- retval = ps3_ohci_driver_register(&PS3_SYSTEM_BUS_DRIVER);
-@@ -1318,7 +1314,6 @@ static int __init ohci_hcd_mod_init(void)
- #endif
- debugfs_remove(ohci_debug_root);
- ohci_debug_root = NULL;
-- error_debug:
-
- clear_bit(USB_OHCI_LOADED, &usb_hcds_loaded);
- return retval;
-diff --git a/drivers/usb/host/ohci.h b/drivers/usb/host/ohci.h
-index 508a803139dd..ef4813bfc5bf 100644
---- a/drivers/usb/host/ohci.h
-+++ b/drivers/usb/host/ohci.h
-@@ -431,9 +431,6 @@ struct ohci_hcd {
- struct work_struct nec_work; /* Worker for NEC quirk */
-
- struct dentry *debug_dir;
-- struct dentry *debug_async;
-- struct dentry *debug_periodic;
-- struct dentry *debug_registers;
-
- /* platform-specific data -- must come last */
- unsigned long priv[0] __aligned(sizeof(s64));
-diff --git a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
-index f9c3947577fc..6218bfe54f52 100644
---- a/drivers/usb/host/uhci-hcd.c
-+++ b/drivers/usb/host/uhci-hcd.c
-@@ -590,14 +590,10 @@ static int uhci_start(struct usb_hcd *hcd)
- init_waitqueue_head(&uhci->waitqh);
-
- #ifdef UHCI_DEBUG_OPS
-- dentry = debugfs_create_file(hcd->self.bus_name,
-- S_IFREG|S_IRUGO|S_IWUSR, uhci_debugfs_root,
-- uhci, &uhci_debug_operations);
-- if (!dentry) {
-- dev_err(uhci_dev(uhci), "couldn't create uhci debugfs entry\n");
-- return -ENOMEM;
-- }
-- uhci->dentry = dentry;
-+ uhci->dentry = debugfs_create_file(hcd->self.bus_name,
-+ S_IFREG|S_IRUGO|S_IWUSR,
-+ uhci_debugfs_root, uhci,
-+ &uhci_debug_operations);
- #endif
-
- uhci->frame = dma_zalloc_coherent(uhci_dev(uhci),
-@@ -882,8 +878,6 @@ static int __init uhci_hcd_init(void)
- if (!errbuf)
- goto errbuf_failed;
- uhci_debugfs_root = debugfs_create_dir("uhci", usb_debug_root);
-- if (!uhci_debugfs_root)
-- goto debug_failed;
- #endif
-
- uhci_up_cachep = kmem_cache_create("uhci_urb_priv",
-@@ -918,7 +912,6 @@ static int __init uhci_hcd_init(void)
- #if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
- debugfs_remove(uhci_debugfs_root);
-
--debug_failed:
- kfree(errbuf);
-
- errbuf_failed:
-diff --git a/drivers/usb/mon/mon_text.c b/drivers/usb/mon/mon_text.c
-index 984f7e12a6a5..bc5ecd5ff565 100644
---- a/drivers/usb/mon/mon_text.c
-+++ b/drivers/usb/mon/mon_text.c
-@@ -700,7 +700,6 @@ static const struct file_operations mon_fops_text_u = {
-
- int mon_text_add(struct mon_bus *mbus, const struct usb_bus *ubus)
- {
-- struct dentry *d;
- enum { NAMESZ = 10 };
- char name[NAMESZ];
- int busnum = ubus? ubus->busnum: 0;
-@@ -713,42 +712,32 @@ int mon_text_add(struct mon_bus *mbus, const struct usb_bus *ubus)
- rc = snprintf(name, NAMESZ, "%dt", busnum);
- if (rc <= 0 || rc >= NAMESZ)
- goto err_print_t;
-- d = debugfs_create_file(name, 0600, mon_dir, mbus,
-+ mbus->dent_t = debugfs_create_file(name, 0600, mon_dir, mbus,
- &mon_fops_text_t);
-- if (d == NULL)
-- goto err_create_t;
-- mbus->dent_t = d;
- }
-
- rc = snprintf(name, NAMESZ, "%du", busnum);
- if (rc <= 0 || rc >= NAMESZ)
- goto err_print_u;
-- d = debugfs_create_file(name, 0600, mon_dir, mbus, &mon_fops_text_u);
-- if (d == NULL)
-- goto err_create_u;
-- mbus->dent_u = d;
-+ mbus->dent_u = debugfs_create_file(name, 0600, mon_dir, mbus,
-+ &mon_fops_text_u);
-
- rc = snprintf(name, NAMESZ, "%ds", busnum);
- if (rc <= 0 || rc >= NAMESZ)
- goto err_print_s;
-- d = debugfs_create_file(name, 0600, mon_dir, mbus, &mon_fops_stat);
-- if (d == NULL)
-- goto err_create_s;
-- mbus->dent_s = d;
-+ mbus->dent_s = debugfs_create_file(name, 0600, mon_dir, mbus,
-+ &mon_fops_stat);
-
- return 1;
-
--err_create_s:
- err_print_s:
- debugfs_remove(mbus->dent_u);
- mbus->dent_u = NULL;
--err_create_u:
- err_print_u:
- if (ubus != NULL) {
- debugfs_remove(mbus->dent_t);
- mbus->dent_t = NULL;
- }
--err_create_t:
- err_print_t:
- return 0;
- }
-@@ -756,8 +745,7 @@ int mon_text_add(struct mon_bus *mbus, const struct usb_bus *ubus)
- void mon_text_del(struct mon_bus *mbus)
- {
- debugfs_remove(mbus->dent_u);
-- if (mbus->dent_t != NULL)
-- debugfs_remove(mbus->dent_t);
-+ debugfs_remove(mbus->dent_t);
- debugfs_remove(mbus->dent_s);
- }
-
-@@ -775,18 +763,7 @@ static void mon_text_ctor(void *mem)
-
- int __init mon_text_init(void)
- {
-- struct dentry *mondir;
--
-- mondir = debugfs_create_dir("usbmon", usb_debug_root);
-- if (IS_ERR(mondir)) {
-- /* debugfs not available, but we can use usbmon without it */
-- return 0;
-- }
-- if (mondir == NULL) {
-- printk(KERN_NOTICE TAG ": unable to create usbmon directory\n");
-- return -ENOMEM;
-- }
-- mon_dir = mondir;
-+ mon_dir = debugfs_create_dir("usbmon", usb_debug_root);
- return 0;
- }
-
-diff --git a/drivers/usb/mtu3/mtu3_dr.c b/drivers/usb/mtu3/mtu3_dr.c
-index 8c3bbf732bc4..ac60e9c8564e 100644
---- a/drivers/usb/mtu3/mtu3_dr.c
-+++ b/drivers/usb/mtu3/mtu3_dr.c
-@@ -378,10 +378,6 @@ static void ssusb_debugfs_init(struct ssusb_mtk *ssusb)
- struct dentry *root;
-
- root = debugfs_create_dir(dev_name(ssusb->dev), usb_debug_root);
-- if (!root) {
-- dev_err(ssusb->dev, "create debugfs root failed\n");
-- return;
-- }
- ssusb->dbgfs_root = root;
-
- debugfs_create_file("mode", 0644, root, ssusb, &ssusb_mode_fops);
-diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
-index 5cc64980058b..b7d56272f9d1 100644
---- a/drivers/usb/musb/musb_core.c
-+++ b/drivers/usb/musb/musb_core.c
-@@ -2387,9 +2387,7 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
- if (status < 0)
- goto fail3;
-
-- status = musb_init_debugfs(musb);
-- if (status < 0)
-- goto fail4;
-+ musb_init_debugfs(musb);
-
- status = sysfs_create_group(&musb->controller->kobj, &musb_attr_group);
- if (status)
-@@ -2404,7 +2402,6 @@ musb_init_controller(struct device *dev, int nIrq, void __iomem *ctrl)
- fail5:
- musb_exit_debugfs(musb);
-
--fail4:
- musb_gadget_cleanup(musb);
- musb_host_cleanup(musb);
-
-diff --git a/drivers/usb/musb/musb_debug.h b/drivers/usb/musb/musb_debug.h
-index 5e0f079dde21..c444a80fe1da 100644
---- a/drivers/usb/musb/musb_debug.h
-+++ b/drivers/usb/musb/musb_debug.h
-@@ -20,12 +20,11 @@
- void musb_dbg(struct musb *musb, const char *fmt, ...);
-
- #ifdef CONFIG_DEBUG_FS
--int musb_init_debugfs(struct musb *musb);
-+void musb_init_debugfs(struct musb *musb);
- void musb_exit_debugfs(struct musb *musb);
- #else
--static inline int musb_init_debugfs(struct musb *musb)
-+static inline void musb_init_debugfs(struct musb *musb)
- {
-- return 0;
- }
- static inline void musb_exit_debugfs(struct musb *musb)
- {
-diff --git a/drivers/usb/musb/musb_debugfs.c b/drivers/usb/musb/musb_debugfs.c
-index e2050cac3eae..f42858e2b54c 100644
---- a/drivers/usb/musb/musb_debugfs.c
-+++ b/drivers/usb/musb/musb_debugfs.c
-@@ -321,48 +321,18 @@ static const struct file_operations musb_softconnect_fops = {
- .release = single_release,
- };
-
--int musb_init_debugfs(struct musb *musb)
-+void musb_init_debugfs(struct musb *musb)
- {
-- struct dentry *root;
-- struct dentry *file;
-- int ret;
-+ struct dentry *root;
-
- root = debugfs_create_dir(dev_name(musb->controller), NULL);
-- if (!root) {
-- ret = -ENOMEM;
-- goto err0;
-- }
--
-- file = debugfs_create_file("regdump", S_IRUGO, root, musb,
-- &musb_regdump_fops);
-- if (!file) {
-- ret = -ENOMEM;
-- goto err1;
-- }
--
-- file = debugfs_create_file("testmode", S_IRUGO | S_IWUSR,
-- root, musb, &musb_test_mode_fops);
-- if (!file) {
-- ret = -ENOMEM;
-- goto err1;
-- }
--
-- file = debugfs_create_file("softconnect", S_IRUGO | S_IWUSR,
-- root, musb, &musb_softconnect_fops);
-- if (!file) {
-- ret = -ENOMEM;
-- goto err1;
-- }
--
- musb->debugfs_root = root;
-
-- return 0;
--
--err1:
-- debugfs_remove_recursive(root);
--
--err0:
-- return ret;
-+ debugfs_create_file("regdump", S_IRUGO, root, musb, &musb_regdump_fops);
-+ debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root, musb,
-+ &musb_test_mode_fops);
-+ debugfs_create_file("softconnect", S_IRUGO | S_IWUSR, root, musb,
-+ &musb_softconnect_fops);
- }
-
- void /* __init_or_exit */ musb_exit_debugfs(struct musb *musb)
-diff --git a/drivers/usb/musb/musb_dsps.c b/drivers/usb/musb/musb_dsps.c
-index cfe6bfcbeb5d..fb871eabcc10 100644
---- a/drivers/usb/musb/musb_dsps.c
-+++ b/drivers/usb/musb/musb_dsps.c
-@@ -399,24 +399,17 @@ static irqreturn_t dsps_interrupt(int irq, void *hci)
- static int dsps_musb_dbg_init(struct musb *musb, struct dsps_glue *glue)
- {
- struct dentry *root;
-- struct dentry *file;
- char buf[128];
-
- sprintf(buf, "%s.dsps", dev_name(musb->controller));
- root = debugfs_create_dir(buf, NULL);
-- if (!root)
-- return -ENOMEM;
- glue->dbgfs_root = root;
-
- glue->regset.regs = dsps_musb_regs;
- glue->regset.nregs = ARRAY_SIZE(dsps_musb_regs);
- glue->regset.base = musb->ctrl_base;
-
-- file = debugfs_create_regset32("regdump", S_IRUGO, root, &glue->regset);
-- if (!file) {
-- debugfs_remove_recursive(root);
-- return -ENOMEM;
-- }
-+ debugfs_create_regset32("regdump", S_IRUGO, root, &glue->regset);
- return 0;
- }
-
-diff --git a/drivers/usb/typec/fusb302/fusb302.c b/drivers/usb/typec/fusb302/fusb302.c
-index 9c1eba9ea004..07b07ddf6af0 100644
---- a/drivers/usb/typec/fusb302/fusb302.c
-+++ b/drivers/usb/typec/fusb302/fusb302.c
-@@ -117,7 +117,6 @@ struct fusb302_chip {
- u32 snk_pdo[PDO_MAX_OBJECTS];
-
- #ifdef CONFIG_DEBUG_FS
-- struct dentry *dentry;
- /* lock for log buffer access */
- struct mutex logbuffer_lock;
- int logbuffer_head;
-@@ -215,33 +214,26 @@ DEFINE_SHOW_ATTRIBUTE(fusb302_debug);
-
- static struct dentry *rootdir;
-
--static int fusb302_debugfs_init(struct fusb302_chip *chip)
-+static void fusb302_debugfs_init(struct fusb302_chip *chip)
- {
- mutex_init(&chip->logbuffer_lock);
-- if (!rootdir) {
-+ if (!rootdir)
- rootdir = debugfs_create_dir("fusb302", NULL);
-- if (!rootdir)
-- return -ENOMEM;
-- }
--
-- chip->dentry = debugfs_create_file(dev_name(chip->dev),
-- S_IFREG | 0444, rootdir,
-- chip, &fusb302_debug_fops);
-
-- return 0;
-+ debugfs_create_file(dev_name(chip->dev), S_IFREG | 0444, rootdir, chip,
-+ &fusb302_debug_fops);
- }
-
- static void fusb302_debugfs_exit(struct fusb302_chip *chip)
- {
-- debugfs_remove(chip->dentry);
-- debugfs_remove(rootdir);
-+ debugfs_remove_recursive(rootdir);
- }
-
- #else
-
- static void fusb302_log(const struct fusb302_chip *chip,
- const char *fmt, ...) { }
--static int fusb302_debugfs_init(const struct fusb302_chip *chip) { return 0; }
-+static void fusb302_debugfs_init(const struct fusb302_chip *chip) { }
- static void fusb302_debugfs_exit(const struct fusb302_chip *chip) { }
-
- #endif
-@@ -1773,9 +1765,7 @@ static int fusb302_probe(struct i2c_client *client,
- return -EPROBE_DEFER;
- }
-
-- ret = fusb302_debugfs_init(chip);
-- if (ret < 0)
-- return ret;
-+ fusb302_debugfs_init(chip);
-
- chip->wq = create_singlethread_workqueue(dev_name(chip->dev));
- if (!chip->wq) {
-diff --git a/drivers/usb/typec/tcpm.c b/drivers/usb/typec/tcpm.c
-index 0ccd2ce1eb59..1443b3233371 100644
---- a/drivers/usb/typec/tcpm.c
-+++ b/drivers/usb/typec/tcpm.c
-@@ -566,15 +566,12 @@ DEFINE_SHOW_ATTRIBUTE(tcpm_debug);
-
- static struct dentry *rootdir;
-
--static int tcpm_debugfs_init(struct tcpm_port *port)
-+static void tcpm_debugfs_init(struct tcpm_port *port)
- {
- mutex_init(&port->logbuffer_lock);
- /* /sys/kernel/debug/tcpm/usbcX */
-- if (!rootdir) {
-+ if (!rootdir)
- rootdir = debugfs_create_dir("tcpm", NULL);
-- if (!rootdir)
-- return -ENOMEM;
-- }
-
- port->dentry = debugfs_create_file(dev_name(port->dev),
- S_IFREG | 0444, rootdir,
-@@ -595,7 +592,7 @@ static void tcpm_log(const struct tcpm_port *port, const char *fmt, ...) { }
- __printf(2, 3)
- static void tcpm_log_force(struct tcpm_port *port, const char *fmt, ...) { }
- static void tcpm_log_source_caps(struct tcpm_port *port) { }
--static int tcpm_debugfs_init(const struct tcpm_port *port) { return 0; }
-+static void tcpm_debugfs_init(const struct tcpm_port *port) { return 0; }
- static void tcpm_debugfs_exit(const struct tcpm_port *port) { }
-
- #endif
---
-2.17.0
-
diff --git a/usb-debugfs.patch b/usb-debugfs.patch
deleted file mode 100644
index 79ef25f0ea42d2..00000000000000
--- a/usb-debugfs.patch
+++ /dev/null
@@ -1,476 +0,0 @@
----
- drivers/usb/chipidea/ci.h | 2 -
- drivers/usb/chipidea/core.c | 4 --
- drivers/usb/chipidea/debug.c | 56 ++++++++----------------------
- drivers/usb/core/usb.c | 26 ++------------
- drivers/usb/dwc2/debugfs.c | 78 ++++++++-----------------------------------
- drivers/usb/dwc3/debugfs.c | 33 +++---------------
- drivers/usb/host/ehci-dbg.c | 30 ++++------------
- drivers/usb/mon/mon_text.c | 37 +++-----------------
- 8 files changed, 60 insertions(+), 206 deletions(-)
-
---- a/drivers/usb/chipidea/ci.h
-+++ b/drivers/usb/chipidea/ci.h
-@@ -450,7 +450,7 @@ void hw_phymode_configure(struct ci_hdrc
-
- void ci_platform_configure(struct ci_hdrc *ci);
-
--int dbg_create_files(struct ci_hdrc *ci);
-+void dbg_create_files(struct ci_hdrc *ci);
-
- void dbg_remove_files(struct ci_hdrc *ci);
- #endif /* __DRIVERS_USB_CHIPIDEA_CI_H */
---- a/drivers/usb/chipidea/core.c
-+++ b/drivers/usb/chipidea/core.c
-@@ -1062,9 +1062,7 @@ static int ci_hdrc_probe(struct platform
- ci_hdrc_otg_fsm_start(ci);
-
- device_set_wakeup_capable(&pdev->dev, true);
-- ret = dbg_create_files(ci);
-- if (ret)
-- goto stop;
-+ dbg_create_files(ci);
-
- ret = sysfs_create_group(&dev->kobj, &ci_attr_group);
- if (ret)
---- a/drivers/usb/chipidea/debug.c
-+++ b/drivers/usb/chipidea/debug.c
-@@ -340,54 +340,28 @@ DEFINE_SHOW_ATTRIBUTE(ci_registers);
- *
- * This function returns an error code
- */
--int dbg_create_files(struct ci_hdrc *ci)
-+void dbg_create_files(struct ci_hdrc *ci)
- {
-- struct dentry *dent;
--
- ci->debugfs = debugfs_create_dir(dev_name(ci->dev), NULL);
-- if (!ci->debugfs)
-- return -ENOMEM;
--
-- dent = debugfs_create_file("device", S_IRUGO, ci->debugfs, ci,
-- &ci_device_fops);
-- if (!dent)
-- goto err;
--
-- dent = debugfs_create_file("port_test", S_IRUGO | S_IWUSR, ci->debugfs,
-- ci, &ci_port_test_fops);
-- if (!dent)
-- goto err;
-
-- dent = debugfs_create_file("qheads", S_IRUGO, ci->debugfs, ci,
-- &ci_qheads_fops);
-- if (!dent)
-- goto err;
--
-- dent = debugfs_create_file("requests", S_IRUGO, ci->debugfs, ci,
-- &ci_requests_fops);
-- if (!dent)
-- goto err;
-+ debugfs_create_file("device", S_IRUGO, ci->debugfs, ci,
-+ &ci_device_fops);
-+ debugfs_create_file("port_test", S_IRUGO | S_IWUSR, ci->debugfs, ci,
-+ &ci_port_test_fops);
-+ debugfs_create_file("qheads", S_IRUGO, ci->debugfs, ci,
-+ &ci_qheads_fops);
-+ debugfs_create_file("requests", S_IRUGO, ci->debugfs, ci,
-+ &ci_requests_fops);
-
- if (ci_otg_is_fsm_mode(ci)) {
-- dent = debugfs_create_file("otg", S_IRUGO, ci->debugfs, ci,
-- &ci_otg_fops);
-- if (!dent)
-- goto err;
-+ debugfs_create_file("otg", S_IRUGO, ci->debugfs, ci,
-+ &ci_otg_fops);
- }
-
-- dent = debugfs_create_file("role", S_IRUGO | S_IWUSR, ci->debugfs, ci,
-- &ci_role_fops);
-- if (!dent)
-- goto err;
--
-- dent = debugfs_create_file("registers", S_IRUGO, ci->debugfs, ci,
-- &ci_registers_fops);
--
-- if (dent)
-- return 0;
--err:
-- debugfs_remove_recursive(ci->debugfs);
-- return -ENOMEM;
-+ debugfs_create_file("role", S_IRUGO | S_IWUSR, ci->debugfs, ci,
-+ &ci_role_fops);
-+ debugfs_create_file("registers", S_IRUGO, ci->debugfs, ci,
-+ &ci_registers_fops);
- }
-
- /**
---- a/drivers/usb/core/usb.c
-+++ b/drivers/usb/core/usb.c
-@@ -1167,30 +1167,16 @@ static struct notifier_block usb_bus_nb
- struct dentry *usb_debug_root;
- EXPORT_SYMBOL_GPL(usb_debug_root);
-
--static struct dentry *usb_debug_devices;
--
--static int usb_debugfs_init(void)
-+static void usb_debugfs_init(void)
- {
- usb_debug_root = debugfs_create_dir("usb", NULL);
-- if (!usb_debug_root)
-- return -ENOENT;
--
-- usb_debug_devices = debugfs_create_file("devices", 0444,
-- usb_debug_root, NULL,
-- &usbfs_devices_fops);
-- if (!usb_debug_devices) {
-- debugfs_remove(usb_debug_root);
-- usb_debug_root = NULL;
-- return -ENOENT;
-- }
--
-- return 0;
-+ debugfs_create_file("devices", 0444, usb_debug_root, NULL,
-+ &usbfs_devices_fops);
- }
-
- static void usb_debugfs_cleanup(void)
- {
-- debugfs_remove(usb_debug_devices);
-- debugfs_remove(usb_debug_root);
-+ debugfs_remove_recursive(usb_debug_root);
- }
-
- /*
-@@ -1205,9 +1191,7 @@ static int __init usb_init(void)
- }
- usb_init_pool_max();
-
-- retval = usb_debugfs_init();
-- if (retval)
-- goto out;
-+ usb_debugfs_init();
-
- usb_acpi_register();
- retval = bus_register(&usb_bus_type);
---- a/drivers/usb/dwc2/debugfs.c
-+++ b/drivers/usb/dwc2/debugfs.c
-@@ -293,52 +293,30 @@ DEFINE_SHOW_ATTRIBUTE(ep);
- static void dwc2_hsotg_create_debug(struct dwc2_hsotg *hsotg)
- {
- struct dentry *root;
-- struct dentry *file;
- unsigned int epidx;
-
- root = hsotg->debug_root;
-
- /* create general state file */
--
-- file = debugfs_create_file("state", 0444, root, hsotg, &state_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create state\n", __func__);
--
-- file = debugfs_create_file("testmode", 0644, root, hsotg,
-- &testmode_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create testmode\n",
-- __func__);
--
-- file = debugfs_create_file("fifo", 0444, root, hsotg, &fifo_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create fifo\n", __func__);
-+ debugfs_create_file("state", 0444, root, hsotg, &state_fops);
-+ debugfs_create_file("testmode", 0644, root, hsotg, &testmode_fops);
-+ debugfs_create_file("fifo", 0444, root, hsotg, &fifo_fops);
-
- /* Create one file for each out endpoint */
- for (epidx = 0; epidx < hsotg->num_of_eps; epidx++) {
- struct dwc2_hsotg_ep *ep;
-
- ep = hsotg->eps_out[epidx];
-- if (ep) {
-- file = debugfs_create_file(ep->name, 0444,
-- root, ep, &ep_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "failed to create %s debug file\n",
-- ep->name);
-- }
-+ if (ep)
-+ debugfs_create_file(ep->name, 0444, root, ep, &ep_fops);
- }
- /* Create one file for each in endpoint. EP0 is handled with out eps */
- for (epidx = 1; epidx < hsotg->num_of_eps; epidx++) {
- struct dwc2_hsotg_ep *ep;
-
- ep = hsotg->eps_in[epidx];
-- if (ep) {
-- file = debugfs_create_file(ep->name, 0444,
-- root, ep, &ep_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "failed to create %s debug file\n",
-- ep->name);
-- }
-+ if (ep)
-+ debugfs_create_file(ep->name, 0444, root, ep, &ep_fops);
- }
- }
- #else
-@@ -790,32 +768,14 @@ DEFINE_SHOW_ATTRIBUTE(dr_mode);
- int dwc2_debugfs_init(struct dwc2_hsotg *hsotg)
- {
- int ret;
-- struct dentry *file;
-+ struct dentry *root;
-
-- hsotg->debug_root = debugfs_create_dir(dev_name(hsotg->dev), NULL);
-- if (!hsotg->debug_root) {
-- ret = -ENOMEM;
-- goto err0;
-- }
-+ root = debugfs_create_dir(dev_name(hsotg->dev), NULL);
-+ hsotg->debug_root = root;
-
-- file = debugfs_create_file("params", 0444,
-- hsotg->debug_root,
-- hsotg, &params_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create params\n", __func__);
--
-- file = debugfs_create_file("hw_params", 0444,
-- hsotg->debug_root,
-- hsotg, &hw_params_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create hw_params\n",
-- __func__);
--
-- file = debugfs_create_file("dr_mode", 0444,
-- hsotg->debug_root,
-- hsotg, &dr_mode_fops);
-- if (IS_ERR(file))
-- dev_err(hsotg->dev, "%s: failed to create dr_mode\n", __func__);
-+ debugfs_create_file("params", 0444, root, hsotg, &params_fops);
-+ debugfs_create_file("hw_params", 0444, root, hsotg, &hw_params_fops);
-+ debugfs_create_file("dr_mode", 0444, root, hsotg, &dr_mode_fops);
-
- /* Add gadget debugfs nodes */
- dwc2_hsotg_create_debug(hsotg);
-@@ -824,24 +784,18 @@ int dwc2_debugfs_init(struct dwc2_hsotg
- GFP_KERNEL);
- if (!hsotg->regset) {
- ret = -ENOMEM;
-- goto err1;
-+ goto err;
- }
-
- hsotg->regset->regs = dwc2_regs;
- hsotg->regset->nregs = ARRAY_SIZE(dwc2_regs);
- hsotg->regset->base = hsotg->regs;
-
-- file = debugfs_create_regset32("regdump", 0444, hsotg->debug_root,
-- hsotg->regset);
-- if (!file) {
-- ret = -ENOMEM;
-- goto err1;
-- }
-+ debugfs_create_regset32("regdump", 0444, root, hsotg->regset);
-
- return 0;
--err1:
-+err:
- debugfs_remove_recursive(hsotg->debug_root);
--err0:
- return ret;
- }
-
---- a/drivers/usb/dwc3/debugfs.c
-+++ b/drivers/usb/dwc3/debugfs.c
-@@ -716,9 +716,6 @@ static void dwc3_debugfs_create_endpoint
- struct dentry *dir;
-
- dir = debugfs_create_dir(dep->name, parent);
-- if (IS_ERR_OR_NULL(dir))
-- return;
--
- dwc3_debugfs_create_endpoint_files(dep, dir);
- }
-
-@@ -740,14 +737,8 @@ static void dwc3_debugfs_create_endpoint
- void dwc3_debugfs_init(struct dwc3 *dwc)
- {
- struct dentry *root;
-- struct dentry *file;
-
- root = debugfs_create_dir(dev_name(dwc->dev), NULL);
-- if (IS_ERR_OR_NULL(root)) {
-- if (!root)
-- dev_err(dwc->dev, "Can't create debugfs root\n");
-- return;
-- }
- dwc->root = root;
-
- dwc->regset = kzalloc(sizeof(*dwc->regset), GFP_KERNEL);
-@@ -760,29 +751,19 @@ void dwc3_debugfs_init(struct dwc3 *dwc)
- dwc->regset->nregs = ARRAY_SIZE(dwc3_regs);
- dwc->regset->base = dwc->regs - DWC3_GLOBALS_REGS_START;
-
-- file = debugfs_create_regset32("regdump", S_IRUGO, root, dwc->regset);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs regdump\n");
-+ debugfs_create_regset32("regdump", S_IRUGO, root, dwc->regset);
-
- if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE)) {
-- file = debugfs_create_file("mode", S_IRUGO | S_IWUSR, root,
-- dwc, &dwc3_mode_fops);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs mode\n");
-+ debugfs_create_file("mode", S_IRUGO | S_IWUSR, root, dwc,
-+ &dwc3_mode_fops);
- }
-
- if (IS_ENABLED(CONFIG_USB_DWC3_DUAL_ROLE) ||
- IS_ENABLED(CONFIG_USB_DWC3_GADGET)) {
-- file = debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root,
-- dwc, &dwc3_testmode_fops);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs testmode\n");
--
-- file = debugfs_create_file("link_state", S_IRUGO | S_IWUSR,
-- root, dwc, &dwc3_link_state_fops);
-- if (!file)
-- dev_dbg(dwc->dev, "Can't create debugfs link_state\n");
--
-+ debugfs_create_file("testmode", S_IRUGO | S_IWUSR, root, dwc,
-+ &dwc3_testmode_fops);
-+ debugfs_create_file("link_state", S_IRUGO | S_IWUSR, root, dwc,
-+ &dwc3_link_state_fops);
- dwc3_debugfs_create_endpoint_dirs(dwc, root);
- }
- }
---- a/drivers/usb/host/ehci-dbg.c
-+++ b/drivers/usb/host/ehci-dbg.c
-@@ -1028,29 +1028,15 @@ static inline void create_debug_files(st
- struct usb_bus *bus = &ehci_to_hcd(ehci)->self;
-
- ehci->debug_dir = debugfs_create_dir(bus->bus_name, ehci_debug_root);
-- if (!ehci->debug_dir)
-- return;
-
-- if (!debugfs_create_file("async", S_IRUGO, ehci->debug_dir, bus,
-- &debug_async_fops))
-- goto file_error;
--
-- if (!debugfs_create_file("bandwidth", S_IRUGO, ehci->debug_dir, bus,
-- &debug_bandwidth_fops))
-- goto file_error;
--
-- if (!debugfs_create_file("periodic", S_IRUGO, ehci->debug_dir, bus,
-- &debug_periodic_fops))
-- goto file_error;
--
-- if (!debugfs_create_file("registers", S_IRUGO, ehci->debug_dir, bus,
-- &debug_registers_fops))
-- goto file_error;
--
-- return;
--
--file_error:
-- debugfs_remove_recursive(ehci->debug_dir);
-+ debugfs_create_file("async", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_async_fops);
-+ debugfs_create_file("bandwidth", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_bandwidth_fops);
-+ debugfs_create_file("periodic", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_periodic_fops);
-+ debugfs_create_file("registers", S_IRUGO, ehci->debug_dir, bus,
-+ &debug_registers_fops);
- }
-
- static inline void remove_debug_files(struct ehci_hcd *ehci)
---- a/drivers/usb/mon/mon_text.c
-+++ b/drivers/usb/mon/mon_text.c
-@@ -700,7 +700,6 @@ static const struct file_operations mon_
-
- int mon_text_add(struct mon_bus *mbus, const struct usb_bus *ubus)
- {
-- struct dentry *d;
- enum { NAMESZ = 10 };
- char name[NAMESZ];
- int busnum = ubus? ubus->busnum: 0;
-@@ -713,42 +712,32 @@ int mon_text_add(struct mon_bus *mbus, c
- rc = snprintf(name, NAMESZ, "%dt", busnum);
- if (rc <= 0 || rc >= NAMESZ)
- goto err_print_t;
-- d = debugfs_create_file(name, 0600, mon_dir, mbus,
-+ mbus->dent_t = debugfs_create_file(name, 0600, mon_dir, mbus,
- &mon_fops_text_t);
-- if (d == NULL)
-- goto err_create_t;
-- mbus->dent_t = d;
- }
-
- rc = snprintf(name, NAMESZ, "%du", busnum);
- if (rc <= 0 || rc >= NAMESZ)
- goto err_print_u;
-- d = debugfs_create_file(name, 0600, mon_dir, mbus, &mon_fops_text_u);
-- if (d == NULL)
-- goto err_create_u;
-- mbus->dent_u = d;
-+ mbus->dent_u = debugfs_create_file(name, 0600, mon_dir, mbus,
-+ &mon_fops_text_u);
-
- rc = snprintf(name, NAMESZ, "%ds", busnum);
- if (rc <= 0 || rc >= NAMESZ)
- goto err_print_s;
-- d = debugfs_create_file(name, 0600, mon_dir, mbus, &mon_fops_stat);
-- if (d == NULL)
-- goto err_create_s;
-- mbus->dent_s = d;
-+ mbus->dent_s = debugfs_create_file(name, 0600, mon_dir, mbus,
-+ &mon_fops_stat);
-
- return 1;
-
--err_create_s:
- err_print_s:
- debugfs_remove(mbus->dent_u);
- mbus->dent_u = NULL;
--err_create_u:
- err_print_u:
- if (ubus != NULL) {
- debugfs_remove(mbus->dent_t);
- mbus->dent_t = NULL;
- }
--err_create_t:
- err_print_t:
- return 0;
- }
-@@ -756,8 +745,7 @@ err_print_t:
- void mon_text_del(struct mon_bus *mbus)
- {
- debugfs_remove(mbus->dent_u);
-- if (mbus->dent_t != NULL)
-- debugfs_remove(mbus->dent_t);
-+ debugfs_remove(mbus->dent_t);
- debugfs_remove(mbus->dent_s);
- }
-
-@@ -775,18 +763,7 @@ static void mon_text_ctor(void *mem)
-
- int __init mon_text_init(void)
- {
-- struct dentry *mondir;
--
-- mondir = debugfs_create_dir("usbmon", usb_debug_root);
-- if (IS_ERR(mondir)) {
-- /* debugfs not available, but we can use usbmon without it */
-- return 0;
-- }
-- if (mondir == NULL) {
-- printk(KERN_NOTICE TAG ": unable to create usbmon directory\n");
-- return -ENOMEM;
-- }
-- mon_dir = mondir;
-+ mon_dir = debugfs_create_dir("usbmon", usb_debug_root);
- return 0;
- }
-
diff --git a/usb-serial-visor-handle-potential-invalid-device-configuration.patch b/usb-serial-visor-handle-potential-invalid-device-configuration.patch
deleted file mode 100644
index c73ab62cb07578..00000000000000
--- a/usb-serial-visor-handle-potential-invalid-device-configuration.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-From foo@baz Sun Apr 29 17:37:43 CEST 2018
-Date: Sun, 29 Apr 2018 17:37:43 +0200
-To: Greg KH <gregkh@linuxfoundation.org>
-From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Subject: [PATCH] USB: serial: visor: handle potential invalid device configuration
-
-If we get an invalid device configuration from a palm 3 type device, we
-might incorrectly parse things, and we have the potential to crash in
-"interesting" ways.
-
-Fix this up by verifying the size of the configuration passed to us by
-the device, and only if it is correct, will we handle it.
-
-Reported-by: Andrey Konovalov <andreyknvl@google.com>
-Reviewed-by: Andrey Konovalov <andreyknvl@google.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
----
-
-Here is my long-forgotten patch for the visor driver to resolve an issue
-that Andrey found back in September of 2017. Sorry for the long delay.
-
-Johan, I incorporated your review comments of my original one-off patch
-here as well.
-
-
----
- drivers/usb/serial/visor.c | 69 ++++++++++++++++++++++-----------------------
- 1 file changed, 35 insertions(+), 34 deletions(-)
-
---- a/drivers/usb/serial/visor.c
-+++ b/drivers/usb/serial/visor.c
-@@ -335,47 +335,48 @@ static int palm_os_3_probe(struct usb_se
- goto exit;
- }
-
-- if (retval == sizeof(*connection_info)) {
-- connection_info = (struct visor_connection_info *)
-- transfer_buffer;
--
-- num_ports = le16_to_cpu(connection_info->num_ports);
-- for (i = 0; i < num_ports; ++i) {
-- switch (
-- connection_info->connections[i].port_function_id) {
-- case VISOR_FUNCTION_GENERIC:
-- string = "Generic";
-- break;
-- case VISOR_FUNCTION_DEBUGGER:
-- string = "Debugger";
-- break;
-- case VISOR_FUNCTION_HOTSYNC:
-- string = "HotSync";
-- break;
-- case VISOR_FUNCTION_CONSOLE:
-- string = "Console";
-- break;
-- case VISOR_FUNCTION_REMOTE_FILE_SYS:
-- string = "Remote File System";
-- break;
-- default:
-- string = "unknown";
-- break;
-- }
-- dev_info(dev, "%s: port %d, is for %s use\n",
-- serial->type->description,
-- connection_info->connections[i].port, string);
-- }
-+ if (retval != sizeof(*connection_info)) {
-+ dev_err(dev, "Invalid connection information received from device\n");
-+ retval = -ENODEV;
-+ goto exit;
- }
-- /*
-- * Handle devices that report invalid stuff here.
-- */
-+
-+ connection_info = (struct visor_connection_info *)transfer_buffer;
-+
-+ num_ports = le16_to_cpu(connection_info->num_ports);
-+
-+ /* Handle devices that report invalid stuff here. */
- if (num_ports == 0 || num_ports > 2) {
- dev_warn(dev, "%s: No valid connect info available\n",
- serial->type->description);
- num_ports = 2;
- }
-
-+ for (i = 0; i < num_ports; ++i) {
-+ switch (connection_info->connections[i].port_function_id) {
-+ case VISOR_FUNCTION_GENERIC:
-+ string = "Generic";
-+ break;
-+ case VISOR_FUNCTION_DEBUGGER:
-+ string = "Debugger";
-+ break;
-+ case VISOR_FUNCTION_HOTSYNC:
-+ string = "HotSync";
-+ break;
-+ case VISOR_FUNCTION_CONSOLE:
-+ string = "Console";
-+ break;
-+ case VISOR_FUNCTION_REMOTE_FILE_SYS:
-+ string = "Remote File System";
-+ break;
-+ default:
-+ string = "unknown";
-+ break;
-+ }
-+ dev_info(dev, "%s: port %d, is for %s use\n",
-+ serial->type->description,
-+ connection_info->connections[i].port, string);
-+ }
- dev_info(dev, "%s: Number of ports: %d\n", serial->type->description,
- num_ports);
-