Merge "usb: rmnet_sdio: Fix various crashes during composition switch" into msm-3.0
diff --git a/drivers/usb/gadget/f_rmnet_sdio.c b/drivers/usb/gadget/f_rmnet_sdio.c
index b15c221..f63d939 100644
--- a/drivers/usb/gadget/f_rmnet_sdio.c
+++ b/drivers/usb/gadget/f_rmnet_sdio.c
@@ -1358,17 +1358,20 @@
struct rmnet_sdio_dev *dev = container_of(f, struct rmnet_sdio_dev,
function);
+ cancel_delayed_work_sync(&dev->sdio_open_work);
destroy_workqueue(dev->wq);
- rmnet_sdio_free_buf(dev);
dev->epout = dev->epin = dev->epnotify = NULL; /* release endpoints */
- msm_sdio_dmux_close(rmnet_sdio_data_ch);
- sdio_cmux_close(rmnet_sdio_ctl_ch);
+ if (test_bit(RMNET_SDIO_CH_OPEN, &dev->data_ch_status)) {
+ msm_sdio_dmux_close(rmnet_sdio_data_ch);
+ clear_bit(RMNET_SDIO_CH_OPEN, &dev->data_ch_status);
+ }
-
- clear_bit(RMNET_SDIO_CH_OPEN, &dev->data_ch_status);
- clear_bit(RMNET_SDIO_CH_OPEN, &dev->ctrl_ch_status);
+ if (test_bit(RMNET_SDIO_CH_OPEN, &dev->ctrl_ch_status)) {
+ sdio_cmux_close(rmnet_sdio_ctl_ch);
+ clear_bit(RMNET_SDIO_CH_OPEN, &dev->ctrl_ch_status);
+ }
debugfs_remove_recursive(dev->dent);
@@ -1454,7 +1457,7 @@
static void rmnet_sdio_debugfs_init(struct rmnet_sdio_dev *dev)
{
- dev->dent = debugfs_create_dir("usb_rmnet", 0);
+ dev->dent = debugfs_create_dir("usb_rmnet_sdio", 0);
if (IS_ERR(dev->dent))
return;
diff --git a/drivers/usb/gadget/f_rmnet_smd.c b/drivers/usb/gadget/f_rmnet_smd.c
index b8dd3a5..08f461f 100644
--- a/drivers/usb/gadget/f_rmnet_smd.c
+++ b/drivers/usb/gadget/f_rmnet_smd.c
@@ -1218,7 +1218,7 @@
static void rmnet_smd_debugfs_init(struct rmnet_smd_dev *dev)
{
- dent_smd = debugfs_create_dir("usb_rmnet", 0);
+ dent_smd = debugfs_create_dir("usb_rmnet_smd", 0);
if (IS_ERR(dent_smd))
return;