diff options
author | Seshendra Gadagottu <sgadagottu@nvidia.com> | 2012-03-03 09:33:14 +0530 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-03-05 17:27:02 -0800 |
commit | 4454d77bc84584d9bcce09ca81a7ea681a09eda4 (patch) | |
tree | 37596d319b44b43054931f0369895fcf6e243f74 /drivers/usb | |
parent | 64f409397e158cead2b1c9fc72ef886e13e5f6ce (diff) |
usb: cdc-acm: Add acm handle validity check
Added check for acm handle validity before doing any action
in acm_suspend, acm_resume and acm_reset_resume functions.
Bug 939237
Change-Id: Idc5d7db6bd405056a90b85009825ccbd03547757
Signed-off-by: Seshendra Gadagottu<sgadagottu@nvidia.com>
Reviewed-on: http://git-master/r/83413
(cherry picked from commit 1dd9736cd2df12c0315a44c95010cb64eee04050)
Reviewed-on: http://git-master/r/87504
Reviewed-by: Steve Lin <stlin@nvidia.com>
Diffstat (limited to 'drivers/usb')
-rw-r--r-- | drivers/usb/class/cdc-acm.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c index e1331590909c..7a37bf93b65e 100644 --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c @@ -1282,6 +1282,11 @@ static void stop_data_traffic(struct acm *acm) { int i; + if (!acm) { + pr_err("%s: !acm\n", __func__); + return; + } + dev_dbg(&acm->control->dev, "%s\n", __func__); usb_kill_urb(acm->ctrlurb); @@ -1347,6 +1352,11 @@ static int acm_suspend(struct usb_interface *intf, pm_message_t message) struct acm *acm = usb_get_intfdata(intf); int cnt; + if (!acm) { + pr_err("%s: !acm\n", __func__); + return -ENODEV; + } + if (message.event & PM_EVENT_AUTO) { int b; @@ -1389,6 +1399,11 @@ static int acm_resume(struct usb_interface *intf) struct acm_wb *wb; #endif + if (!acm) { + pr_err("%s: !acm\n", __func__); + return -ENODEV; + } + spin_lock_irq(&acm->read_lock); acm->susp_count -= 1; cnt = acm->susp_count; @@ -1445,6 +1460,11 @@ static int acm_reset_resume(struct usb_interface *intf) struct acm *acm = usb_get_intfdata(intf); struct tty_struct *tty; + if (!acm) { + pr_err("%s: !acm\n", __func__); + return -ENODEV; + } + mutex_lock(&acm->mutex); if (acm->port.count) { tty = tty_port_tty_get(&acm->port); |