From: Oliver Neukum <oneukum@suse.de>
Date: Tue, 20 Mar 2007 12:15:05 +0000 (+0100)
Subject: USB: omninet memory leak in error case
X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=4f93b3e8212df43ff380e118aebb68f6d1e5b060;p=GitHub%2FLineageOS%2Fandroid_kernel_samsung_universal7580.git

USB: omninet memory leak in error case

memory allocated must be freed in the error case.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---

diff --git a/drivers/usb/serial/omninet.c b/drivers/usb/serial/omninet.c
index 0216ac12a27..357cc11915c 100644
--- a/drivers/usb/serial/omninet.c
+++ b/drivers/usb/serial/omninet.c
@@ -170,8 +170,12 @@ static int omninet_open (struct usb_serial_port *port, struct file *filp)
 		      port->read_urb->transfer_buffer, port->read_urb->transfer_buffer_length,
 		      omninet_read_bulk_callback, port);
 	result = usb_submit_urb(port->read_urb, GFP_KERNEL);
-	if (result)
+	if (result) {
 		err("%s - failed submitting read urb, error %d", __FUNCTION__, result);
+		/* open failed - all allocations must be freed */
+		kfree(od);
+		usb_set_serial_port_data(port, NULL);
+	}
 
 	return result;
 }