summaryrefslogtreecommitdiff
path: root/drivers/usb
diff options
context:
space:
mode:
authorSeshendra Gadagottu <sgadagottu@nvidia.com>2012-03-03 09:33:14 +0530
committerSimone Willett <swillett@nvidia.com>2012-03-05 17:27:02 -0800
commit4454d77bc84584d9bcce09ca81a7ea681a09eda4 (patch)
tree37596d319b44b43054931f0369895fcf6e243f74 /drivers/usb
parent64f409397e158cead2b1c9fc72ef886e13e5f6ce (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.c20
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);