From ac90e36592ea5171c4e70f58b39a782d871a7d9f Mon Sep 17 00:00:00 2001
From: David Brownell <david-b@pacbell.net>
Date: Tue, 1 Jul 2008 13:18:20 -0700
Subject: [PATCH] usb_gadget: composite cdc gadget fault handling

These two fixes ensure the new "CDC Composite Device" gadget
fails cleanly when it's loaded on hardware that can't support
this particular gadget driver.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/usb/gadget/cdc2.c     | 2 +-
 drivers/usb/gadget/u_serial.c | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/cdc2.c b/drivers/usb/gadget/cdc2.c
index 289c75277135..d490d0289507 100644
--- a/drivers/usb/gadget/cdc2.c
+++ b/drivers/usb/gadget/cdc2.c
@@ -124,7 +124,7 @@ static int __init cdc_do_config(struct usb_configuration *c)
 		return status;
 
 	status = acm_bind_config(c, 0);
-	if (status == 0)
+	if (status < 0)
 		return status;
 
 	return 0;
diff --git a/drivers/usb/gadget/u_serial.c b/drivers/usb/gadget/u_serial.c
index 88d4f5452c49..abf9505d3a75 100644
--- a/drivers/usb/gadget/u_serial.c
+++ b/drivers/usb/gadget/u_serial.c
@@ -1090,6 +1090,9 @@ void gserial_cleanup(void)
 	unsigned	i;
 	struct gs_port	*port;
 
+	if (!gs_tty_driver)
+		return;
+
 	/* start sysfs and /dev/ttyGS* node removal */
 	for (i = 0; i < n_ports; i++)
 		tty_unregister_device(gs_tty_driver, i);
-- 
GitLab